gpt4 book ai didi

python - scipy.optimize.minimize 使用 powell 方法违反最大函数评估

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:20 24 4
gpt4 key购买 nike

我正在使用 scipy.optimize.minimize 和 Powell 算法优化函数。有一个名为 maxfev 的选项可以设置最大函数评估。但是它似乎并不总是有效。算法越过函数评估限制。代码如下:

def func_eval(x):
import math as math
funcval=0
dimension=len(x)
tmp=0
tmp2=0
for i in range(dimension):
tmp +=x[i]

for i in range(dimension):
tmp2=(tmp-x[i])*x[i]
funcval += dimension*(math.pow(x[i],2)+0.4*tmp2)

return funcval

from scipy.optimize import minimize
x=[-11.04021,-92.72567,28.60728,68.65449,66.41443,-25.59824,73.97660,-69.85293,1.10955,17.56914]
res=minimize(func_eval,x,method='Powell',options={'maxfev':220})
print(res.fun)
print(res.nfev)

第二个选项的输出,即 func 评估的数量是 298 而不是 220。我的代码可能出了什么问题,还是算法本身有问题?

最佳答案

需要评估的功能multiple times每次迭代;每个维度一次。出于某种原因(我猜是性能或其他实现细节)评估计数只被检查 once per iteration .这就是可以超过最大值的原因。

评估计数超过最大值的程度取决于 x 的维数,也许还取决于函数和数据。

关于python - scipy.optimize.minimize 使用 powell 方法违反最大函数评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44907880/

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