我有一个 ILP 问题,其中我表达了实现 A OR B 的一些约束,其中 A 和 B 是逻辑 AND 的结果(假设 A = A1 AND A2,B = B1 AND B2 AND B3)。在我的问题的这一点上,据说A和B之间的一个等于1。A和B都是二进制变量。
我想用 If-Then-Else 来表达这个断言:
if (A == true)
/* Choose one between C and D */
C_OR_D >= C;
C_OR_D >= D;
C_OR_D <= C + D;
C_OR_D = 1;
else /* or if (B == true), that's the same */
/* Choose one between E and F */
E_OR_F >= E;
E_OR_F >= F;
E_OR_F <= E + F;
E_OR_F = 1;
我知道如何编写简单的 If-Condition,例如
/* if (x == true) then y = true */
y >= x;
但我不知道如何编写一组约束来表达“复杂”的 if。
你们中有人知道如何在 LPsolve 中解决这个问题吗?