Python 使用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

我刚刚用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
总是最小化目标函数。如果您想最大化,可以使用
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