在Scipy Linprog中,是否有设置使得结果"nicer"?

In Scipy Linprog, is there a setting that makes the results "nicer"?

我用 scipy.optimize.linprog 解决了以下线性程序:

result = linprog(
    [0, 0, 0, 0],
    A_eq=[
        [1, 1, 0, 0],
        [1, 0, 1, 1]
    ],
    b_eq=[
        -10000, -10000
    ],
    bounds=[(None, -1000), (None, -1000), (None, -1000), (None, -1000)]
)
print(result.x)

并得到:

[-4982.07750764 -5017.92249214 -2508.96124608 -2508.96124608]

这个程序有很多解法都是"nicer"(有更多的整数),例如:

[-5000 -5000 -2500 -2500]

有没有办法告诉 linprog 更喜欢这样的解决方案?

默认情况下,linprog 将使用内点法。这将给出正确的解决方案,但它们通常看起来不太好。单纯形法通常给出 "nicer" 个解。当我们添加参数 method = 'revised simplex' 时,我们看到:

[-1000. -9000. -1000. -8000.]

当然仍然不是独一无二的,但看起来好多了。