gpt4 book ai didi

python - Scipy basinhopping 不尊重 stepsize?

转载 作者:太空狗 更新时间:2023-10-30 01:13:11 24 4
gpt4 key购买 nike

运行以下代码,在第 7 次打印出正在评估的参数 (x) 时,参数从大约 100 跳到 .01,尽管初始步长设置为 .1,间隔设置为 50。如何basinhopping 能够实现超过 stepsize 如此大幅度的跳跃?

import multiprocessing as mp
from scipy.optimize import basinhopping

def runEnvironment(x):
return x**2

def func(x):
print "x:",x
pool = mp.Pool(processes=1)

results=pool.apply(runEnvironment,(x,))
pool.close()
return results


if __name__ == '__main__':
x0=100
ret=basinhopping(func, x0, niter=100, T=1.0, stepsize=.1, minimizer_kwargs=None, take_step=None, accept_test=None, callback=None, interval=50, disp=False, niter_success=None)

最佳答案

basinhopping 是一个迭代过程,它使用局部最小化,然后在坐标空间中迈出一步(步长),然后再次进行局部最小化,希望达到不同的最小值。

stepsize参数只适用于坐标空间中的step。

在您的示例中,默认局部最小化器(我认为是 BFGS)在第一次迭代时找到全局最小值。局部极小化器使用 7 次函数评估来做到这一点,但它仍在一次跳盆迭代中。 basinhopping 不知道它处于全局最小值,因此它会继续尝试找到更好的值。

关于python - Scipy basinhopping 不尊重 stepsize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36782172/

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