线性编程 - 绝对值大于常数

时间:2016-04-04 09:06:20

标签: constraints linear-programming absolute-value

如何转换约束| x | > = 2,以便它可以在线性程序中工作(特别是使用Simplex解决)。

我理解如何转换| x | &lt; = 2,因为它将变为x <= 2且-x <= 2

但是,当你有一个最小常数时,相同的逻辑不起作用。

1 个答案:

答案 0 :(得分:3)

没有办法将像|x|>=2这样的等式变成纯粹的(连续的)LP。你需要制定非凸的x <= -2 OR x >= 2。这将需要一个二进制变量,使问题成为MIP。

一种配方可以是:

x >= 2 - delta*M
x <= -2 + (1-delta)*M
delta in {0,1}

M明智地选择大数字。例如。如果-100<=x<=100,您可以选择M=102