如何在 Gurobi 中添加 if(A and B) then C 约束

How to add if(A and B) then C constraints in Gurobi

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

我知道我应该在这里引入一个辅助二进制变量。但我真的坚持如何将这些简单的条件等式写成线性约束。有什么意见、技巧、建议吗?

非常感谢!

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

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)