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