代码之家  ›  专栏  ›  技术社区  ›  Rusty Robot

目标函数值的零乘数不能给出最可行的解决方案

  •  0
  • Rusty Robot  · 技术社区  · 9 年前

    我是 using Pulp 求解一个线性程序(scipy也能得到同样的结果)。所以我的线性程序公式有问题,或者我不知道单纯形算法如何工作的一些棘手细节。

    以下是目标函数 最小化 ,请注意 x2 0 ,所以我不希望 x1 x2个 除了 0 因为 x3 没有最大约束 -1 * x3 能够为最小化提供更多价值:

    Objective function

    线性方程组:

    System of linear equations

    作为我得到的解决方案 x2 = 20 即使其在目标函数中的乘数是 0 .

    Linear program result

    如果在目标函数中我设置 -2 * x3 ,那么它工作得很好。

    1 回复  |  直到 9 年前
        1
  •  2
  •   serge_k    9 年前

    您发布的解决方案给出了目标=-380。检查 x=[20,0,0,20,0,20,20,0] ,目标函数也是-380,这意味着它也是最优的,因此,你有无限多的解(很容易证明这两点的任何凸组合都是最优的,参见任何线性规划书)。问题是PuLP解算器在遇到一个最佳极值点时停止。如果您有兴趣获得所有最佳极值,我建议您使用Cplex(它不是免费的,但您可能有资格参加IBM学术计划)。此外,您可以在PuLP解算器中将解算方法设置为Dual Simlex,以使其朝不同的方向前进,并且有可能获得另一个极端点。