Optimization scipy linprog次优解

Optimization scipy linprog次优解,optimization,scipy,Optimization,Scipy,尝试测试一个非常简单的优化问题,但无法看到scipy.optimize.linprog的结果 输入向量=-np.数组([-1.,-1.,-1,1,1,1,1,0,0]) A_upper=np.数组([np.one(len(input_向量)),-np.one(len(input_向量))) b_upper=np.数组([.1,0.1]) opt_res=sp.optimize.linprog(c=input_vector,A_ub=A_upper,b_ub=b_upper) 答复: 选择权 状态

尝试测试一个非常简单的优化问题,但无法看到scipy.optimize.linprog的结果

输入向量=-np.数组([-1.,-1.,-1,1,1,1,1,0,0])

A_upper=np.数组([np.one(len(input_向量)),-np.one(len(input_向量)))

b_upper=np.数组([.1,0.1])

opt_res=sp.optimize.linprog(c=input_vector,A_ub=A_upper,b_ub=b_upper)

答复:

选择权

状态:0

松弛:数组([0,0.2])

成功:真的

 fun: -0.10000000000000001

   x: array([ 0. ,  0. ,  0. ,  0.1,  0. ,  0. ,  0. ,  0. ,  0. ,  0. ])
消息:“优化已成功终止。” nit:1

当然,[0.333,0.333,0.333,-0.25,-0.25,-0.25,-0.25]是一个更好的解决方案,它符合约束条件。是的,我知道,这只是冰山一角…建议的解决方案可以乘以一个正标量

我错过了什么?非常感谢


Sam

linprog
是正确的。由于没有提供任何边界,
linprog
将假定所有变量都是非负的。请参阅(参数
边界
)。如果要允许负值,则需要显式指定

这种默认行为对于LP解算器来说并不罕见