gpt4 book ai didi

python - 使用 scipy 进行优化

转载 作者:行者123 更新时间:2023-11-28 17:37:14 25 4
gpt4 key购买 nike

在下面的脚本中:

import numpy as np
from scipy.optimize import minimise

a=np.array(range(4))
b=np.array(range(4,8))

def sm(x,a,b):
sm=np.zeros(1)
a=a*np.exp(x)
sm += sum(b-a)
return sm

x0=np.zeros(4)
print sm(x0,a,b) #checking my function

opt = minimize(sm,x0,args=(a,b),method='nelder-mead',
options={'xtol': 1e-8, 'disp': True})

我正在尝试针对 x 进行优化,但我收到以下消息:

Warning: Maximum number of function evaluations has been exceeded.

结果是:

array([-524.92769674, 276.6657959 , 185.98604937, 729.5822923 ])

这不是最优的。我的问题是我收到此消息和结果是因为我的起点不正确吗?

最佳答案

您的函数 sm 似乎是无界的。当您增加 x 时,sm 将变得越来越负,因此它会变为 -inf

Re: comment - 如果你想让 sm() 尽可能接近零,修改函数定义中的最后一行以读取 return abs(sm).

这最小化了函数的绝对值,使其接近于零。

您示例的结果:

>>> opt = minimize(sm,x0,args=(a,b),method='nelder-mead', options={'xtol': 1e-8,     'disp': True})
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 153
Function evaluations: 272
>>> opt
status: 0
nfev: 272
success: True
fun: 2.8573836630130245e-09
x: array([-1.24676625, 0.65786454, 0.44383101, 1.73177358])
message: 'Optimization terminated successfully.'
nit: 153

关于python - 使用 scipy 进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229810/

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