CPLEX中的功能最多只能解决二次问题。如果成本函数是二次的,并且它应该与承诺向量相乘,那么它就变成了三阶方程。 许多论文已经解释了如何将二次函数转换为阶梯函数,并且数学方法易于理解。但是我不知道如何将传递的函数放入Cplex中的cplexmiqp()中,因为很难确定系数矩阵。 任何人都可以告诉我如何将这个问题实现到cplex函数中,如果可能的话,示例程序将会有很大的帮助!谢谢!
答案 0 :(得分:0)
您不会将成本乘以二进制变量。相反,你使用逻辑含义来模拟它。
而不是写d * P ^ 2,其中d是二进制,P是连续变量,你引入一个新变量,我们称之为B.如果d为0,则B应为零,否则它应该相等到P.你的新目标是B ^ 2。唯一剩下的就是建模逻辑
d = 0 implies B = 0
d = 1 implies B = P
这通常使用big-M技术完成。如果您知道P是非负数且受限于100以上,则可以将其写为
0 <= B <= 100*d
-100*(1-d) <= P-B <= 100*(1-d)
我能提供的唯一示例代码是基于MATLAB的建模层YALMIP中的示例,可用于连接cplex http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Examples.UnitCommitment