scipy.optimize.linprog相等约束似乎不满足

2024-09-25 08:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我对方法中的等式约束是如何工作的感到很困惑。我做错什么了?我希望dot(A_eq,x)等于b_eq,我认为这就是等式约束的定义。然而,美国运输部(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)

Tags: 方法模型import编辑定义错误npres