scipy.optimize.basinhopping公司间隔和接受测试组合

2024-09-27 09:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用basinhopping来寻找目标函数的全局最小值,但在大多数情况下,它都停留在局部极小值上。我通读了^{}的文档,发现interval和{}可能有帮助,但现在的问题是给它们提供什么值,例如,我希望我的目标函数尽可能接近0(1-5接近),而不需要花费太多时间在非常大的值(如4或5)上。至于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

Tags: 函数目标functionmethodkwargsretintervalbounds
1条回答
网友
1楼 · 发布于 2024-09-27 09:23:20

如果你被困在一个局部最小值,那就意味着你需要一个更大的步长。您可以使用关键字“stepsize”设置步长。在

适当的步长取决于问题,但幸运的是basinhopping会自动调整步长。它多久做一次取决于“interval”关键字。每一次间隔迭代,步长将增加或减少0.9倍。如果最初对步长的猜测有偏差,这仍然需要一些时间。如果你把时间间隔缩短到10(左右),这应该快得多。在

我不认为接受测试对你有帮助。例如,可以用来强制配置空间的禁止区域。在

相关问题 更多 >

    热门问题