【发布时间】:2020-12-14 07:18:21
【问题描述】:
我有两个变量:C 是二进制的,X 是非负的
如果 C = 0 那么 X = 0; 如果 C = 1 那么 X = X(意味着对 X 没有约束)
我应该如何将此条件约束格式化为 LP 的线性约束?
【问题讨论】:
我有两个变量: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(类型 1 的特殊有序集)集,您可以使用:
d = 1-c
{d,x} ∈ SOS1
d >= 0
(1) 和 (3) 的优点是不需要边界。如果你对 x 有一个好的、紧的界限,那么 (2) 是一个不错的选择。
【讨论】: