如何在Gurobi中添加if(A和B)然后添加C约束

时间:2017-12-01 03:37:49

标签: constraints linear-programming gurobi

现在我有三个5乘3矩阵,X,Y,Z。它们中的所有元素都是二进制变量。我想添加以下约束:

enter image description here

我知道我应该在这里介绍一个辅助二进制变量。但我真的坚持如何将这些简单的条件等式写成线性约束。有什么建议,窍门和建议吗?

非常感谢提前!

1 个答案:

答案 0 :(得分:3)

实际上你不需要额外的二进制变量。

x(i,j)=1 and x(i+1,j)=0 => z(i+1,j)=1 

可以解释为:

z(i+1,j) >= x(i,j)*(1-x(i+1,j))

这可以写成线性不等式:

z(i+1,j) >= x(i,j) - x(i+1,j)

同样,

x(i,j)=0 and x(i+1,j)=1 => y(i+1,j)=1

可以表述为:

y(i+1,j) >= x(i+1,j) - x(i,j)