Optimization scipy linprog次优解
尝试测试一个非常简单的优化问题,但无法看到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]) 成功:真的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) 答复: 选择权 状态
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解算器来说并不罕见