Python 使用scipy.optimize.linprog的线性规划
我刚刚用scipy.optimize.linprog检查了简单的线性规划问题:Python 使用scipy.optimize.linprog的线性规划,python,numpy,scipy,Python,Numpy,Scipy,我刚刚用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 有人能解释一下,为什么我得到了这个奇怪的结果吗?optimize.linprog总是最小化目标函数。如果您想最大化,可以使用m
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
有人能解释一下,为什么我得到了这个奇怪的结果吗?
optimize.linprog
总是最小化目标函数。如果您想最大化,可以使用max(f(x))==-min(-f(x))
这将为您提供预期结果,值为-f(x)=-11.0
slack: array([ 0., 4., 0., 4., 0.])
message: 'Optimization terminated successfully.'
nit: 3
x: array([ 1., 5.])
status: 0
success: True
fun: -11.0
optimize.linprog
始终最小化目标函数。如果您想最大化,可以使用max(f(x))==-min(-f(x))
这将为您提供预期结果,值为-f(x)=-11.0
slack: array([ 0., 4., 0., 4., 0.])
message: 'Optimization terminated successfully.'
nit: 3
x: array([ 1., 5.])
status: 0
success: True
fun: -11.0
好吧,一旦你意识到
linprog
实际上最小化了:)好吧,一旦你意识到linprog
实际上最小化了:)就不再那么奇怪了
slack: array([ 0., 4., 0., 4., 0.])
message: 'Optimization terminated successfully.'
nit: 3
x: array([ 1., 5.])
status: 0
success: True
fun: -11.0