zoukankan      html  css  js  c++  java
  • 最优化-一维搜索

    精确一维搜索

    试探法

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

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

       

  • 相关阅读:
    牛客挑战赛45 D.坐标
    树上启发式合并(dsu on tree)合集
    2020HDU多校第二场 1012.String Distance
    2020HDU多校第一场 1009.Leading Robots
    2020牛客暑期多校训练营(第一场)H.Minimum-cost Flow
    自用综合线段树模板(区间加乘、区间置数、区间求和)
    ZOJ 4008.Yet Another Tree Query Problem(问题模型转化+线段树离线处理)
    最小费用最大流模板
    2020 CCPC Wannafly Winter Camp Day3.C. 无向图定向(k染色问题)
    2020牛客寒假算法基础集训营3.E.牛牛的随机数(数位dp拆位算贡献)
  • 原文地址:https://www.cnblogs.com/shensobaolibin/p/10147872.html
Copyright © 2011-2022 走看看