我试图用basinhopping
来寻找目标函数的全局最小值,但在大多数情况下,它都停留在局部极小值上。我通读了^{interval
和{interval
如何知道stepsize的更新频率?在
以下是我如何寻找“全球”最低要求:
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”设置步长。在
适当的步长取决于问题,但幸运的是basinhopping会自动调整步长。它多久做一次取决于“interval”关键字。每一次间隔迭代,步长将增加或减少0.9倍。如果最初对步长的猜测有偏差,这仍然需要一些时间。如果你把时间间隔缩短到10(左右),这应该快得多。在
我不认为接受测试对你有帮助。例如,可以用来强制配置空间的禁止区域。在
相关问题 更多 >
编程相关推荐