线性规划:逻辑条件

Linear programming: Logic condition

我在用线性规划编写约束时遇到了问题。 我有一个布尔变量 c,只有当另一个变量(假设 x)为(例如)5 时,该变量才必须为 1。

x 是一个非负整数。

我做到了:

c <= x / 5

c <= 5 / x

不幸的是,这样模型就变得非线性了。 有没有办法以线性方式表达该条件?

谢谢。

如果你有一个布尔变量,那不是 LP。是整数规划。

但是如果你只有一个布尔变量C,你可以解决两个LP问题:C=1C=0,然后比较谁的解决方案更好。我会建议。

最后,条件对

C <= X / 5
C <= 5 / X

如果 X≠5.

C 施加了非常奇怪的约束

大体上是这样的:

5 - M(1-c) <= x <= 5 + M(1-c)
5.001 - Mc - Md <= x <= 4.999 + Mc + M(1-d)
c,d in {0,1}
x in [-M,M]

在实践中,我们通常可以稍微简化一下。