Scipy 最大化线性规划不起作用

Scipy maximizing linear programming doesn't work

我有以下内容:

ball = scipy.optimize.linprog(array([0,0,1]), A, b)

其中

A = 
array([[-1.0,  0.0,  1.0],
   [ 1.0,  0.0,  1.0],
   [ 0.0, -1.0,  1.0],
   [ 0.0,  1.0,  1.0]], dtype=float128)

b = array([ 0.0,  1.0,  0.0,  1.0], dtype=float128)

我们可以手动最大化这个来得到答案x = [0.5, 0.5, 0.5]。然而 scipy 给了我

  status: 0
   slack: array([ 0.,  1.,  0.,  1.])
 success: True
     fun: -0.0
       x: array([ 0.,  0.,  0.])
 message: 'Optimization terminated successfully.'
     nit: 0

这简直是错误的答案!是我的代码有误,还是我发现了错误?

编辑: 要验证 scipy 给出的解决方案不是最优的,请执行

np.all(np.dot(A, np.array([0.5,0.5,0.5])) <= b)

查看我的解决方案是否满足约束条件。然后注意

np.dot(np.array([0,0,1]), np.array([0.5,0.5,0.5])) > np.dot(np.array([0,0,1]), np.array([0,0,0]))

看到它至少是一个更好的解决方案。其实是最优解。

编辑 2: scipy.__version__ = 0.16.0

根据文档,linprog 找到了最小值,而您提出的解决方案是最大值。