scipy.optimize.linprog等式约束似乎不满意

时间:2015-04-14 14:10:26

标签: python scipy linear-programming

我对方法中的等式约束如何工作感到非常困惑。我在这做错了什么?我希望点(A_eq,x)等于b_eq。我认为这是平等约束的定义。但是,np.dot(A_eq,res.x)给出[0,-6],而b_eq明确给出[0,0]。我疯了,还是这个错误?

(编辑:约束实际上是来自模型的错误指定。一旦我更正模型,它实际上工作正常。但是,鉴于这个错误指定的模型,我仍然期望等式约束保持,或者在最坏的情况下,linprog程序应该失败而不是成功,但给出的答案不符合约束条件。

import numpy as np
from scipy.optimize import linprog

c=[-0.098782540360068297, -0.072316526358138802, 0.004, 0.004, 0.004, 0.004]
A_ub=[[1.0, 0, 0, 0, 0, 0], [-1.0, 0, 0, 0, 0, 0], [0, -1.0, 0, 0, 0, 0], [0, 1.0, 0, 0, 0, 0], [1.0, 1.0, 0, 0, 0, 0]]
b_ub=[3.0, 3.0, 3.0, 3.0, 20.0]
A_eq=[[1.0, 0, -1, 1, -1, 1], [0, -1.0, -1, 1, -1, 1]]
b_eq=[0,0]
res=linprog(c, A_ub, b_ub, A_eq, b_eq)

np.dot(A_eq, res.x)

1 个答案:

答案 0 :(得分:1)

好抓!这是一个错误,它是fixed