线性规划:逻辑条件
Linear programming: Logic condition
我在用线性规划编写约束时遇到了问题。
我有一个布尔变量 c,只有当另一个变量(假设 x)为(例如)5 时,该变量才必须为 1。
x 是一个非负整数。
我做到了:
c <= x / 5
c <= 5 / x
不幸的是,这样模型就变得非线性了。
有没有办法以线性方式表达该条件?
谢谢。
如果你有一个布尔变量,那不是 LP。是整数规划。
但是如果你只有一个布尔变量C
,你可以解决两个LP问题:C=1
和C=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]
在实践中,我们通常可以稍微简化一下。
我在用线性规划编写约束时遇到了问题。 我有一个布尔变量 c,只有当另一个变量(假设 x)为(例如)5 时,该变量才必须为 1。
x 是一个非负整数。
我做到了:
c <= x / 5
c <= 5 / x
不幸的是,这样模型就变得非线性了。 有没有办法以线性方式表达该条件?
谢谢。
如果你有一个布尔变量,那不是 LP。是整数规划。
但是如果你只有一个布尔变量C
,你可以解决两个LP问题:C=1
和C=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]
在实践中,我们通常可以稍微简化一下。