![](/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.