假设我有一个不可行的 LP,并且我想找到在不严重违反当前约束的情况下使其可行的解决方案。
解决这个问题的原则性方法是什么,我怎么能事后知道必须违反哪些约束?
我找到了以下示例,但我不清楚如何继续为弹性变量的惩罚选择一个好的值。更具体地说:
- 对松弛变量的任何惩罚是否足够?如何为我的松弛变量选择“显着成本”?
- 设置松弛变量的成本系数的原则方法是什么?
- 是否总是这样,只要解中的松弛变量为正,相应的原始约束是不可行的?
min: x + y; c1: x >= 6; c2: y >= 6; c3: x + y <= 11;这种模式显然是不可行的。我们现在可以以很大的成本引入松弛变量
min: x + y + 1000 e1 + 1000 e2 + 1000 e3; c1: x1 + e1 >= 6; c2: y + e2 >= 6; c3: x + y - e3 <= 11;这个模型的结果是:
Value of objective function: 1011变量的实际值:
x 5 y 6 e1 1 e2 0 e3 0使用这个简单的示例模型,可以有多种解决方案。在这里,第一个约束被放宽了,因为 e1 不为零。只有这一个约束必须放宽以使模型可行。1011的客观价值并没有说太多。但是,如果我们从中减去 1000 e1 + 1000 e2 + 1000 e3,则它变为 11,即原始目标函数 (x + y) 的值。