簡體   English   中英

scipy.optimize.dual_annealing 中允許使用什么 `visit` 參數值?

[英]What `visit` parameter value is allowed in scipy.optimize.dual_annealing?

我嘗試使用scipy.optimize.dual_annealing來最小化 8 個參數的函數。 搜索空間(由我的bounds定義)相當廣泛,但我知道解決方案接近x0 因此,在閱讀了此處找到的文檔后,我決定使用較小的visit參數值,該值默認為 2.62,並且應該在 (0, 3] 范圍內。

當我使用visit=0.8 ,我得到了一個RuntimeWarning: 在日志中遇到的無效值,實際上,在源代碼中我發現了這個:

self._factor2 = np.exp((4.0 - self._visiting_param) * np.log(self._visiting_param - 1.0))

(_dual_annealing.py的1.62)(基本上self._visiting_param被straighforwardly分配的值visit

所以我想也許文檔是錯誤的,訪問范圍是(1,3]。

當我使用visit=1.2 ,我得到了一個FloatingPointError:在 log 中遇到的無效值,由於這次

x *= np.exp(-(self._visiting_param - 1.0) * np.log(self._factor6 / factor4) / (3.0 - self._visiting_param))

(_dual_annealing.py 的 l.121)其中self._factor6為負數。

這是一個真正的錯誤,一個錯誤的文檔,還是只是我誤解了什么? 為了搜索接近 x0,我可以為visit參數使用哪些值?

我的理解是你是對的,訪問參數的取值范圍沒有指定正確。 事實上,在極限情況 1 中,算法(理論上)恢復了(經典)模擬退火,如本文所述 但是,其中描述的實際實現(也scipy的實現)似乎僅適用於大於 1.4 的值。

我為此在 github 上創建了一個問題: https : //github.com/scipy/scipy/issues/12384

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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