scipy數值優化
其實使用scipy進行數值優化,就是黑盒優化, 我們不依賴於我們優化的函式的算術表示式。注意這個表示式通常可以用於高效的、非黑盒優化。
scipy中的optimize子包中提供了常用的最優化演算法函式實現。我們可以直接呼叫這些函式完成我們的優化問題。optimize中函式最典型的特點就是能夠從函式名稱上看出是使用了什麼演算法。
下面optimize包中函式的概覽:
1
.非線性最優化
fmin – 簡單nelder-mead演算法
fmin_powell – 改進型powell法
fmin_bfgs – 擬newton法
fmin_cg – 非線性共軛梯度法
fmin_ncg – 線性搜尋newton共軛梯度法
leastsq – 最小二乘
2.有約束的多元函式問題
fmin_l_bfgs_b —使用l-bfgs-b演算法
fmin_tnc —梯度資訊
fmin_cobyla —線性逼近
fmin_slsqp —序列最小二乘法
nnls —解|
| ax - b |
|_2 for x>=03
.全域性優化
anneal —模擬退火演算法
brute –強力法
4.標量函式
fminbound
brent
golden
bracket
5.擬合
curve_fit– 使用非線性最小二乘法擬合
6.標量函式求根
brentq —classic brent (
1973
)brenth —a variation on the classic brent(1980)
ridder —ridder是提出這個演算法的人名
bisect —二分法
newton —牛頓法
fixed_point
7.多維函式求根
fsolve —通用
anderson —extended anderson mixing
8.實用函式
line_search —找到滿足強wolfe的alpha值
check_grad —通過和前向有限差分逼近比較檢查梯度函式的正確性
參考網上資料,以及從scipy的文件找到的,還有一些沒有放上去,這麼多,我也沒完全搞明白,這裡主要講leastsq和fmin_l_bfgs_b,但是它們的用法基本是一樣的。
幾種優化(求最優解)演算法的比較
原文 幾種優化 求最優解 演算法的比較 遺傳演算法 優點是能很好的處理約束,能很好的跳出區域性最優,最終得到全域性最優解,全域性搜尋能力強 缺點是收斂較慢,區域性搜尋能力較弱,執行時間長,且容易受引數的影響。遺傳演算法適合求解離散問題,具備數學理論支援,但是存在著漢明懸崖等問題。模擬退火 優點是區域...
凸優化中區域性最優解就是全域性最優解嗎?
對於凸優化來說,區域性最優就是全域性最優,換句話說,極小值就是最小值。至於為什麼?這個就是數學證明了,這個要用到凸函式 凸集的定義。我們可以用反證法來證明。已知x0x0是個區域性最優點,假設在全集ss上存在乙個點x x 使得 f x 因為f x f x 是凸函式,所以對於任意的tt f tx 1 t...
使用遺傳演算法求最優解
在2008年全國大學生數學建模競賽,學習過matlab遺傳演算法工具箱求最優解,用得也比較熟練,時隔兩年忘得差不多了!現在想用ga工具箱來解決乙個優化問題,不得不重新查資料學習使用!這是乙個根據已知資料擬合乙個函式,使用最小二乘法作為適應度函式,求最小值 適應度函式如下 function f zpp...