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
找到了最小值,而您提出的解决方案是最大值。
我有以下内容:
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
找到了最小值,而您提出的解决方案是最大值。