混合整数线性规划中的节俭边界

时间:2019-06-29 11:54:59

标签: linear-programming lpsolve

我目前正在使用lp_solve及其R API来设置和解决线性规划问题。

出于这个问题的目的,设置一个简单得多的线性编程问题很有用,所以让我们举一个玩具示例,鼓励您玩这个示例:

 minimize     3 x1 -   x2
 subject to    -x1 + 6 x2 - x3 +   x4 >= -3
                     7 x2      + 2 x4 <=  5
                x1 +   x2 + x3        >=  1
                            x3 +   x4 <=  2

此外,x1x2x3x4应为整数。

这很容易解决,但是如果我需要添加一个约束说:

abs(x1) + abs(x2) + abs(x3) + abs(x4) <= 3

您将如何添加此约束和/或如何处理解决方案以遵守此类附加约束?

1 个答案:

答案 0 :(得分:1)

您的问题当前

minimize     3 x1 -   x2
 subject to    -x1 + 6 x2 - x3 +   x4 >= -3
                     7 x2      + 2 x4 <=  5
                x1 +   x2 + x3        >=  1
                            x3 +   x4 <=  2

添加约束

abs(x1) + abs(x2) + abs(x3) + abs(x4) <= 3

引入一些额外的变量并重写约束:

 x1<=z1
-x1<=z1
 x2<=x2
-x2<=z2
 x3<=z3
-x3<=z3
 x4<=z4
-x4<=z4
z1+z2+z3+z4<=3

z变量将仅绑定到x变量的正(绝对)值。