优化中的条件约束

时间:2016-06-11 14:08:38

标签: if-statement optimization constraints conditional linear-programming

在这种情况下,有人知道如何在混合整数编程中编写条件约束:

if a == 0 then b = 1
else b = 0
-M <= a <= M
b={0,1}

请注意,M可以是任何连续数字。 感谢。

此致

1 个答案:

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

在许多情况下,我们可以简化这一过程,但这需要了解模型的其余部分。