我目前正在使用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
此外,x1
,x2
,x3
和x4
应为整数。
这很容易解决,但是如果我需要添加一个约束说:
abs(x1) + abs(x2) + abs(x3) + abs(x4) <= 3
您将如何添加此约束和/或如何处理解决方案以遵守此类附加约束?
答案 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
变量的正(绝对)值。