繁体   English   中英

scipy.optimize.basinhopping interval并接受测试合成器

[英]scipy.optimize.basinhopping interval and accept test syntaces

我试图找到使用basinhopping的目标函数的全局最小值,但在大多数情况下它被卡在局部最小值。 basinhopping阅读了文件中的basinhopping ,并发现intervalaccept_test可能会有所帮助,但现在问题是给它们的值是什么,例如我希望我的目标函数尽可能接近0(1e-5 close)在4或5等非常大的值上花费太多时间。至于interval如何知道更新步长的频率?

以下是我寻找“全球”最低要求的方式:

np.random.seed(555)   # Seeded to allow replication.
minimizer_kwargs = {"method": "L-BFGS-B", "bounds": bnds,, tol=1e-4}
ret = basinhopping(merit_function, abcdex, minimizer_kwargs=minimizer_kwargs, niter=10)
zoom = ret['x']

res = minimize(merit_function, zoom, method = 'L-BFGS-B', bounds=bnds, tol=1e-9)
print res

如果您陷入局部最小值,则可能意味着您需要更大的步长。 您可以使用关键字“stepsize”设置stepsize。

适当的步长取决于问题,但幸运的是,购物盆地将自动调整步长。 它的频率取决于“interval”关键字。 每个间隔迭代步长将增加或减少0.9倍。 如果步长的初始猜测是关闭的,这仍然需要一些时间。 如果将间隔减小到10(左右),这应该快得多。

我不认为accept_test会帮助你。 例如,这可以用于强制配置空间的禁止区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM