【发布时间】:2015-06-16 00:20:13
【问题描述】:
我刚刚用 scipy.optimize.linprog 检查了简单的线性规划问题:
1*x[1] + 2x[2] -> max
1*x[1] + 0*x[2] <= 5
0*x[1] + 1*x[2] <= 5
1*x[1] + 0*x[2] >= 1
0*x[1] + 1*x[2] >= 1
1*x[1] + 1*x[2] <= 6
得到了非常奇怪的结果,我预计 x[1] 会是 1 而 x[2] 会是 5,但是:
>>> print optimize.linprog([1, 2], A_ub=[[1, 1]], b_ub=[6], bounds=(1, 5), method='simplex')
status: 0
slack: array([ 4., 4., 4., 0., 0.])
success: True
fun: 3.0
x: array([ 1., 1.])
message: 'Optimization terminated successfully.'
nit: 2
谁能解释一下,为什么我会得到这个奇怪的结果?
【问题讨论】:
-
好吧,一旦你意识到
linprog实际上是最小化了,那就不再那么奇怪了:)