簡體   English   中英

scipy.optimize.basinhopping interval並接受測試合成器

[英]scipy.optimize.basinhopping interval and accept test syntaces

我試圖找到使用basinhopping的目標函數的全局最小值,但在大多數情況下它被卡在局部最小值。 basinhopping閱讀了文件中的basinhopping ,並發現intervalaccept_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM