jui*_*ise 7 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
Run Code Online (Sandbox Code Playgroud)
得到了非常奇怪的结果,我预计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
Run Code Online (Sandbox Code Playgroud)
谁能解释一下,为什么我得到这个奇怪的结果?
cel*_*cel 17
optimize.linprog始终最小化您的目标功能.如果你想最大化,你可以使用它max(f(x)) == -min(-f(x))
from scipy import optimize
optimize.linprog(
c = [-1, -2],
A_ub=[[1, 1]],
b_ub=[6],
bounds=(1, 5),
method='simplex'
)
Run Code Online (Sandbox Code Playgroud)
这将为您提供您的预期结果和价值 -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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11450 次 |
| 最近记录: |