【发布时间】:2017-12-08 23:47:30
【问题描述】:
我尝试使用来自scipy.optimize 的linprog 来解决具有约束的线性系统,但得到的答案与一些不等式相矛盾。
这是我的设置:
import numpy as np
from scipy.optimize import linprog
c = np.array([1,0,0,0,0,0,0])
A_ub = np.identity(7)*(-1)
b_ub = np.array([[-2],[-2],[-2],[-2],[-2],[-2],[-2]])
A_eq = np.array([[1,1,1,1,1,1,0],[0.3,1.3,0.9,0,0,0,-1],[0.3,0,0,0,0,0,-2/3],
[0,0.65,0,0,0,0,-1/15],[0,0,0.3,0,0,0,-1/15]])
b_eq = np.array([[100],[0],[0],[0],[0]])
res = linprog(c = c, A_ub=A_ub, b_ub=b_ub, A_eq = A_eq, b_eq = b_eq)
答案如下:
fun: -0.0
message: 'Optimization terminated successfully.'
nit: 15
slack: array([ -2., -2., -2., 94., 0., 0., -2.])
status: 0
success: True
x: array([ 0.00000000e+00, -8.88178420e-16, -1.77635684e-15,
9.60000000e+01, 2.00000000e+00, 2.00000000e+00,
-7.10542736e-15])
如您所见,x_2 => 8.88178420e-16 不小于 -2。
有人能解释一下为什么会这样吗?
这里是文档的链接: linprog
【问题讨论】:
标签: python scipy linear-programming