在这种情况下,有人知道如何在混合整数编程中编写条件约束:
if a == 0 then b = 1
else b = 0
-M <= a <= M
b={0,1}
请注意,M可以是任何连续数字。 感谢。
此致
答案 0 :(得分:1)
我会按如下方式处理。首先使用变量分裂方法,引入两个非负变量aplus, amin
:
0 <= aplus <= d*M
0 <= amin <= (1-d)*M
a = aplus-amin
d in {0,1}
现在我们可以做到:
0.001*(1-b) <= aplus + amin <= M*(1-b)
在许多情况下,我们可以简化这一过程,但这需要了解模型的其余部分。