首页 > 技术文章 > 最优化-一维搜索

shensobaolibin 2018-12-20 10:33 原文

精确一维搜索

试探法

精确一维搜索就是通过迭代取减少搜索区间

对于搜索区间[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)'

 

   

推荐阅读