线性规划 - 绝对值大于常数
Linear Programming - Absolute value greater than a constant
你会如何转换约束 |x| >= 2 这样它就可以在线性程序中工作(特别是使用单纯形求解)。
我知道如何转换|x| <= 2 因为那会变成 x <= 2 和 -x <= 2
然而,当你有一个最小常数时,同样的逻辑就不起作用了。
没有办法将 |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
。
你会如何转换约束 |x| >= 2 这样它就可以在线性程序中工作(特别是使用单纯形求解)。
我知道如何转换|x| <= 2 因为那会变成 x <= 2 和 -x <= 2
然而,当你有一个最小常数时,同样的逻辑就不起作用了。
没有办法将 |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
。