python Scipy.optimize 模塊中優化求解器總結


minimize中各種優化器總結

python科學計算生態棧中的頂級開源庫scipy提供了大量的數值優化求解器,尤其以optimize模塊最為顯著,其提供了統一的數值優化求解器接口minimize(),雖然方便使用,但是也對非數學專業的人員初次使用時帶來存選擇困難,尤其是十幾種方法統一由同一個接口調用,各方法使用限制、優缺點難以把握,此外官方文檔在對各求解器參數設置的解釋略顯晦澀,部分過於簡略,甚至有些凌亂,導致使用起來並非得心應手,今天調研閱讀現有優秀博客和官方文檔,對該接口的各種方法進行總結,方便后續根據需要快速選擇所需算法。

求解器 中文名 jac要求 hess要求 邊界約束 條件約束 求解規模
Nelder-Mead 單純形法 可選
Powell 鮑威爾法 可選
CG 共軛梯度法 可選 中小
BFGS 擬牛頓法 可選 中大
L-BFGS-B 限制內存BFGS法 可選 可選 中大
TNC 截斷牛頓法 可選 可選 中大
COBYLA 線性近似法 可選 中大
SLSQP 序列最小二乘法 可選 可選 可選 中大
trust-constr 信賴域算法 可選 可選 可選 中大
Newton-CG 牛頓共軛梯度法 必須 可選
dogleg 信賴域狗腿法 必須 可選 中大
trust-ncg 牛頓共軛梯度信賴域法 必須 可選
trust-exact 高精度信賴域法 必須 可選
trust-krylov 子空間迭代信賴域法 必須 可選

注:
jac可選,代表jac有五種選項{callable, 2-point, 3-point, cs, bool},可任選其一。默認為None,即采用有限差分近似計算;2/3-point 或者 cs 采用2點、3點、中心差分近似計算;若為True,則目標函數需返回目標函數值和jac向量;若為callable,則提供jac計算函數。hess 也有五種選項{callable, 2-point, 3-point, cs, HessianUpdateStrategy},但要注意,只有jac提供計算函數,hess才可以使用差分近似,我想這也是避免因差分二次近似導致數值耗散的緣故。表中各算法適用問題規模乃個人總結,僅供參考。

參考鏈接

https://blog.csdn.net/youcans/article/details/118396836
https://blog.csdn.net/weixin_41645983/article/details/93191580
https://wuli.wiki/online/NelMea.html
https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM