![](/img/trans.png)
[英]scipy.optimize.basinhopping doesn't call accept_test. Why?
[英]scipy.optimize.basinhopping interval and accept test syntaces
我试图找到使用basinhopping
的目标函数的全局最小值,但在大多数情况下它被卡在局部最小值。 我basinhopping
阅读了文件中的basinhopping
,并发现interval
和accept_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.