Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scipy最大化线性规划不';行不通_Python_Numpy_Scipy_Linear Programming - Fatal编程技术网

Python Scipy最大化线性规划不';行不通

Python Scipy最大化线性规划不';行不通,python,numpy,scipy,linear-programming,Python,Numpy,Scipy,Linear Programming,我有以下资料: 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) 我们可以手动最大化这个值,

我有以下资料:

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
这完全是错误的答案!是我的代码错了,还是我发现了一个bug

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

np.all(np.dot(A, np.array([0.5,0.5,0.5])) <= b)
看到它至少是一个更好的解决方案。事实上,这是最佳解决方案

编辑2:
scipy.\uu版本=0.16.0

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

如果我尝试运行它,我会得到一个错误:
使用方法='simplex'的linprog输入无效。ub中的列数必须等于c的大小
。Py3.4,scipy 0.15.1对不起,忘记了一个
-1
。现在可以了。以上是我更复杂的代码中的一个MWE,因此出现了错误。根据文档,
linprog
找到了最小值,而在问题的最后一部分,你承认你的解决方案导致了更大的值。噢,我太傻了!!!RTFM的经典案例。当我在计算我正在最大化的数学时,没有费心去检查scipy做了什么。很抱歉发布一个答案,我会接受。当然,用它的负数替换第一个参数,最小化变成最大化,匹配OP的答案。
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]))