使用求解器的线性规划:如何仅在决策变量高于 0 时启用约束?

Linear Programming using solver: how to enable constraint only when a decision variable is higher than 0?

假设我找到了 10 家不同的供应商,通过 6 条不同的路线将产品发送到同一个配送中心。根据成本,一些供应商不会发送任何产品,但发送的供应商会受到最小和最大数量的限制。

如何使用求解器对这个约束进行建模?我不能使用 if 函数,因为那样会使它成为非线性的。

但是如果我为所有供应商设置一个最小约束,那么求解器将不会考虑由于成本高而不应运送任何产品的供应商。

感谢

可以取零值或介于 L 和 U 之间(即 x ∈ 0 ∪ [L,U])的变量 x 称为 半连续变量。许多 MIP 求解器都支持这种类型的变量。如果不是,则可以使用附加的二进制变量来模拟半连续行为:

 L⋅δ ≤ x ≤ U⋅δ
 δ ∈ {0,1}  (i.e. δ is a binary variable)

这可以由任何 MIP 求解器处理。您可能必须将三明治约束拆分为两个约束。