将条件约束转换为线性规划的线性约束
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) 是一个不错的选择。
我有两个变量:二进制的 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) 是一个不错的选择。