将条件约束转换为线性规划的线性约束

Converting conditional constraints to linear constraints for Linear Programming

我有两个变量:二进制的 C 和非负的 X

如果C=0则X=0; 如果 C = 1 则 X = X(意味着对 X 没有约束)

我应该如何将此条件约束格式化为 LP 的线性约束?

请注意,严格来说,LP 模型仅包含连续变量。所以我们假设这是一个要用 MIP 求解器求解的 MIP 模型。

根据解算器的能力,这里有三种解决方法。

(1) 如果您使用支持指标约束的求解器,您可以简单地使用:

 c=0 ==> x=0

(2) 对于其他求解器,您可以使用:

 x <= M*c

其中 M 是 x 的(尽可能紧的)上限。

(3) 最后,如果你的求解器支持 SOS1 (Special Ordered Sets of type 1) 集,你可以使用:

 d = 1-c
 {d,x} ∈ SOS1
 d >= 0

(1) 和 (3) 的优点是不需要边界。如果您对 x 有一个很好的、紧的约束,(2) 是一个不错的选择。