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