工程优化第三章总结
常用的一維搜索算法
- 搜索算法概述
- “成功-失敗”法
- 0.618法(黃金分割法)
- 二分法
- 牛頓法
- 插值法
- 二次插值法
- 三次插值法
- 非精確一維搜索
- Armijo-Goldstein準則
- Wolfe-Powell準則
搜索算法概述
求解無約束優化問題min f(x), x∈Rn
f: D是Rn的 子集,D->R
一般求解方法:
求無約束的某可微函數的最優解,根據一階必要條件,可以令函數的梯度等于0,由此求得駐點;然后通過充分條件進行判別,求出所要的解。
問題:
- 對某些較簡單的函數,這樣做有時是可行的;但對一般n元函數 f(x) 來說,由條件?f(x)=0得到的是一個非線性方程組,解它相當困難。
- 對于不可微函數,當然談不上使用這樣的方法。
為此,常直接使用迭代法
迭代法一般思路:
為了求函數f(x)的最優解,首先給定一個初始估計x0,然后按某種規劃(即算法)找出比x0更好的解x1,f(x1)<f(x0),再按此種規則找出比x1更好的解x2,如此迭代。
如此即可得到一個解的序列{xk},若這個解序列有極限x*,lim||xk -x*|| = 0,則稱他收斂與x*;
若算法是有效的,則它產生的解序列收斂于該問題的最優解。
終止條件:
理想的終止條件為:|f(x)-f(x*)|<ε 或者 ||x-x*||<ε。但是x*是未知的。
實用的終止條件是根據相繼兩次迭代的結果
收斂速度:
迭代法分類:
根據是否計算目標函數和約束函數的導數
根據迭代點是否沿某個方向產生
線搜索迭代法基本思想:
若從xk 出發至少存在一個方向dk可使目標函數值有所下降,可選定這個方向dk,沿這個方向邁進適當的一步,得到下一個迭代點xk+1,使f(xk+1)<f(xk)。
相當于在射線x=xk+λdk上選定新的點xk+1=xk+λkdk;
其中dk成搜索方向;λk稱為步長或學習率(在ML中)
線搜索迭代法的一般步驟:
之后各種算法的區分,主要在于搜索方向dk的不同。
迭代步長常見方法:
方法三又稱精確一維搜索或精確線搜索或一維最優化,確定的步長為最佳步長。
注意:在搜索方向上所得最優點處的梯度和該搜索方向正交
精確的一維搜索方法:
非精確一維搜索:
通過計算少量的函數值,得到一步長λk,使得后續迭代點xk+1=xk+λkdk滿足f(xk+1)<f(xk),即使目標函數要“充分”下降
“成功-失敗”法
常用的一維直接法有消去法和近似法兩類。它們都是從某個初始搜索區間出發,利用單峰函數的消去性質,逐步縮小搜索區間,直到滿足精度要求為止。
單峰函數:
進退算法(成功-失敗法)
由單峰函數的性質可知,函數值在極小點左邊嚴格下降,在右邊嚴格上升。 (直接法)
基本思想:從某個初始點出發,沿函數值下降的方向前進,直至發現函數值上升為止。由兩邊高,中間低的三點,可確定極小點所在的初始區間。
步驟:
算法說明:
缺點:效率低;
優點:可以求搜索區間;
注意:h選擇要適當,初始步長不能選的太小,也不能太大
例題
0.618法(黃金分割法)
0.618算是成功-失敗法的進階 (直接法)
成功-失敗法的初始點是隨機選取的;
黃金分割法考慮兩個條件:
使“壞”情況去掉
聯立式子1,2可求得t=0.618
最后初始的x1和x2選擇為: t = 0.618
x1 = a + (1- t)(b - a )
x2 =a +t (b -a )
算法說明:
優點:不要求函數可微,且每次迭代只需計算一個函數值,計算量小,程序簡單
缺點:收斂速度慢
比成功失敗法效率稍微好一點
二分法
基本思想 (非直接法)
計算步驟
算法說明
優點:計算量較少,總能收斂到一個局部極小點
缺點:收斂速度較慢
牛頓法
牛頓法是一種函數逼近法,基本思想是:在極小點附近用函數的二階泰勒多項式近似代替目標函數,從而求得目標函數的極小點的近似值。
計算步驟
算法說明
優點:收斂速度快,局部二階收斂
缺點:須計算二階導數,工作量大;對初始點要求高,要求初始點離極小點不太遠,否則有可能使極小化發散或收斂到非極小點;局部收斂。
插值法
二次插值法
(直接法)
基本原理:通過三個點模擬一個曲線,求此曲線的極小值點,每次迭代就模擬一次并求出極小點。
通過等式1,2,3不斷化簡,最后極小點求得為:
基本步驟:
每次選完x后x左右兩邊的點就為下一次迭代的x1,x3;終止條件由中間的點x2和x* 的差的絕對值判定。
三次插值法
基本思想:用四個已知值(如兩個點函數值及其導數值)構造一個三次多項式P3(x),用P3(x)的極小點近似目標函數的極小點x*; (非直接法)
三次插值法的收斂速度比二次插值法要快,達到2階收斂速度。
利用函數在兩點的函數值和導數值:
p(x) = A(x-x1)3+B(x-x1)2+C(x-x1)+D
推理過程:
根據極值的條件:
- 一階必要條件:一階導為0;
- 二階充分條件:二階導>0
最后迭代公式為:
滿足(u-v+2w>0)
基本流程:
算法說明:
優點:收斂速度快
缺點:計算復雜,計算量大,
一維方法總結:
非精確一維搜索
考慮非精確一維搜索方法的原因:
保證目標函數在每次迭代有滿意下降量的方法,就是非精確一維搜索方法或稱為可接受一維搜索方法。
Armijo-Goldstein準則
原理:
其中 0<ρ<1/2 目的是為保證目標函數有一個滿意的下降量,必須避免步長太靠近區間的端點。
Armijo-Goldstein準則下可接受區間[b,c],其中的點稱為可接受步長
基本步驟:
A-G 方法會出現的問題是:把最佳步長排除在可接受區間外面。
Wolfe-Powell準則
原理:
計算步驟:
(感覺非精確一維計算不會考 就算會考會算就行)
總結
- 上一篇: conda环境opencv报错cv2.e
- 下一篇: 搭建私有云