gpt4 book ai didi

python - scipy.optimize.basinhopping 间隔和接受测试语法

转载 作者:行者123 更新时间:2023-11-28 17:43:10 25 4
gpt4 key购买 nike

我正在尝试使用 basinhopping 找到目标函数的全局最小值,但在大多数情况下它停留在局部最小值。我通读了 basinhopping 的文档, 并发现 intervalaccept_test 可能会有帮助,但现在的问题是要给它们什么值,例如我希望我的目标函数尽可能接近 0(1e-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

最佳答案

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

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

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

关于python - scipy.optimize.basinhopping 间隔和接受测试语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840859/

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