gpt4 book ai didi

python - 使用 scipy.optimize.linprog 进行线性规划

转载 作者:太空狗 更新时间:2023-10-29 21:19:43 24 4
gpt4 key购买 nike

我刚刚用 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

谁能解释一下,为什么我会得到这个奇怪的结果?

最佳答案

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'
)

这将为您提供预期结果,值为 -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

关于python - 使用 scipy.optimize.linprog 进行线性规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com