![](/img/trans.png)
[英]What is the R equivalent if the scipy.optimize.dual_annealing function in Python
[英]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.