如何通过使用混合整数二次规划方法调用CPLEX来解决单位承诺

时间:2013-11-04 15:43:29

标签: matlab cplex

CPLEX中的功能最多只能解决二次问题。如果成本函数是二次的,并且它应该与承诺向量相乘,那么它就变成了三阶方程。 许多论文已经解释了如何将二次函数转换为阶梯函数,并且数学方法易于理解。但是我不知道如何将传递的函数放入Cplex中的cplexmiqp()中,因为很难确定系数矩阵。 任何人都可以告诉我如何将这个问题实现到cplex函数中,如果可能的话,示例程序将会有很大的帮助!谢谢!

1 个答案:

答案 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