最優化-一維搜索


精確一維搜索

試探法

精確一維搜索就是通過迭代取減少搜索區間

對於搜索區間[a, b]

在這個區間中找連個互不相同的試探點p1 p2獲取f(p1), f(p2), 設p1 < p2

若f(p1) < f(p2)   則丟棄區間 [p2, b]

若f(p1) >= f(p2) 則丟棄區間 [a, p1]

這樣就達到了通過一次迭代減小搜索區間的目的

 

當搜索區間長度< 給定的誤差e時,終止迭代

不同的試探法,其實不同的是選取p1, p2的方法

 

0.618法

  0.618法就是

  p1 = a * 0.618 + b * (1-0,618)

  p2 = a * (1-0,618) + b * 0.618

 

斐波那契法:

  對與第i次迭代

  p1 = Fi+1 / (Fi + Fi+1) * a + Fi / (Fi + Fi+1) * b

  p2 = Fi / (Fi + Fi+1) * a + Fi+1 / (Fi + Fi+1) * b

 

插值法

  通過已有的條件構造插值函數

  通過求插值函數的極小值點去近似已有函數的極小值點

 

三點二次插值

  已有三個點(p1,f(p1)),(p2,f(p2)),(p3,f(p3))

  通過拉格朗日插值法獲取插值函數

  求得插值函數的倒數為0獲取插值函數的極小值點(p0,f(p0))

  現在我們有四個點了,通過這種方法得到四個點后,通過試探法的迭代方法去縮小區間即可

  終止准則也同迭代法的終止准則

 

二點二次插值

  給定初始步長alaph和步長縮減因子

  我可以獲得x的函數值和他的導數

  獲取第一個點x0,f(x0), f'(x0)

  給定步長alaph,往函數下降的方法走alaph得到x1

  若f(x1) > f(x0) + f'(x0) * abs(x0 - x1) 則步長不斷以alaph = 2*alaph增加直到不滿足條件

  通過f(x1), f(x0), f'(x0)計算插值函數,並求得最優點u

  若f(u) < e 終止迭代

  否則將u作為初始點,繼續迭代步長alaph = p * alaph

  

  一般來說 alaph = 2  p = 1/10

 

二點三次插值

  給定初始步長alaph和步長縮減因子

  我可以獲得x的函數值和他的導數

  獲取第一個點x0,f(x0), f'(x0)

  給定步長alaph,往函數下降的方法走alaph得到x1

  計算得到f(x1), f'(x1)

  若f'(x1) * f'(x0) > 0 則將x1做為x0 alaph = 2 * alaph的方式迭代直到不滿足條件

  

  通過f(x1),f'(x1), f(x0), f'(x0)計算插值函數,並求得最優點u

  若f(u) < e 終止迭代

  否則將u作為初始點,繼續迭代步長alaph = p * alaph

  

  一般來說 alaph = 2  p = 1/10

非精確一維搜索 

Goldstein方法

  對於函數Φ(x) 我能知道在任意一點的函數值與倒數

  對於區間[umin, umax],置精度要求0<β12<1

  一般來說umin= 0 umax = +∞

 

  取初始點u0

  若Φ(u) > Φ(0) + β1 * Φ(0)’ * u

  umax = u

  

  若Φ(0) + β* Φ(0)‘ * u <= Φ(u) <=  Φ(0) + β* Φ(0)’ * u

  達到精度要求,停止計算

  

  若Φ(u)  <  Φ(0) + β* Φ(0)‘ * u

  umin = u

  

  當 umax = +∞時,置下一步的試探點為u = 2 * umin

  否則u = (umin+umax) / 2

 

Armijo方法

  取一大於0的數M,0<β1<1

  Φ(u) <=  Φ(0) + β* Φ(0)‘ * u

  且Φ(u*M) >=  Φ(0) + β* Φ(0) ’* u

  條件終止

 

Wolfe-Powell方法

  置精度要求0<β12<1

  Φ(u) <=  Φ(0) + β* Φ(0)‘ * u

  Φ’(u) <=   β* Φ(0)'

 

   


免責聲明!

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



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