【优化算法】梯度优化算法:一种新的原启发式优化算法算法 ...

诗林  论坛元老 | 2024-12-31 14:45:09 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1344|帖子 1344|积分 4032



1.摘要

本文提出了一种新型的元启发式优化算法——梯度优化器(Gradient-based Optimizer, GBO)。GBO算法灵感来源于牛顿法,采用两个主要操作:梯度搜索规则(Gradient Search Rule, GSR)和局部逃逸操作算子(Local Escaping Operator, LEO),通过一组向量来探索搜索空间。GSR利用基于梯度的方法加强探索倾向并加速收敛速率,以实现更优的搜索空间定位,LEO则资助GBO逃离局部最优解。
2.算法原理

梯度搜索规则(GSR)
在梯度搜索规则(GSR)中,GBO算法通过控制向量的移动,可以在可行域内更有效地搜索并探求到更优的位置。思量到很多优化题目不可微分,因此采用数值梯度方法。为了根据方程推导GSR,必要使用泰勒级数来计算函数的一阶导数:
                                                                                           f                                        (                                        x                                        +                                        Δ                                        x                                        )                                        =                                        0                                        f                                        (                                        x                                        )                                        +                                                       f                                                                          ′                                                                     (                                                       x                                           0                                                      )                                        Δ                                        x                                        +                                                                                        f                                                                                                       ′                                                       ′                                                                                                 (                                                               x                                                 0                                                              )                                              Δ                                                               x                                                 2                                                                                          2                                              !                                                                     +                                                                                        f                                                                                                       (                                                       3                                                       )                                                                                                 (                                                               x                                                 0                                                              )                                              Δ                                                               x                                                 3                                                                                          3                                              !                                                                     +                                        ⋯                                                                                                                            f                                        (                                        x                                        −                                        Δ                                        x                                        )                                        =                                        f                                        (                                        x                                        )                                        −                                                       f                                                                          ′                                                                     (                                                       x                                           0                                                      )                                        Δ                                        x                                        +                                                                                        f                                                                                                       ′                                                       ′                                                                                                 (                                                               x                                                 0                                                              )                                              Δ                                                               x                                                 2                                                                                          2                                              !                                                                     −                                                                                        f                                                                                                       (                                                       3                                                       )                                                                                                 (                                                               x                                                 0                                                              )                                              Δ                                                               x                                                 3                                                                                          3                                              !                                                                     +                                        ⋯                                                                                \begin{gathered} f(x+\Delta x)=0f(x)+f^{^{\prime}}(x_0)\Delta x+\frac{f^{^{\prime\prime}}(x_0)\Delta x^2}{2!}+\frac{f^{^{(3)}}(x_0)\Delta x^3}{3!}+\cdots \\ f(x-\Delta x)=f(x)-f^{^{\prime}}(x_{0})\Delta x+\frac{f^{^{\prime\prime}}(x_{0})\Delta x^{2}}{2!}-\frac{f^{^{(3)}}(x_{0})\Delta x^{3}}{3!}+\cdots \end{gathered}                     f(x+Δx)=0f(x)+f′(x0​)Δx+2!f′′(x0​)Δx2​+3!f(3)(x0​)Δx3​+⋯f(x−Δx)=f(x)−f′(x0​)Δx+2!f′′(x0​)Δx2​−3!f(3)(x0​)Δx3​+⋯​
一阶导数的中心差分形式:
                                                    f                                                      ′                                                 (                            x                            )                            =                                                   f                                  (                                  x                                  +                                  Δ                                  x                                  )                                  −                                  f                                  (                                  x                                  −                                  Δ                                  x                                  )                                                      2                                  Δ                                  x                                                       f^{^{\prime}}(x)=\frac{f(x+\Delta x)-f(x-\Delta x)}{2\Delta x}                     f′(x)=2Δxf(x+Δx)−f(x−Δx)​
整理为迭代形式:
                                                    x                                           n                                  +                                  1                                                 =                                       x                               n                                      −                                                   2                                  Δ                                  x                                  ×                                  f                                  (                                               x                                     n                                              )                                                      f                                  (                                               x                                     n                                              +                                  Δ                                  x                                  )                                  −                                  f                                  (                                               x                                     n                                              −                                  Δ                                  x                                  )                                                       x_{n+1}=x_n-\frac{2\Delta x\times f(x_n)}{f(x_n+\Delta x)-f(x_n-\Delta x)}                     xn+1​=xn​−f(xn​+Δx)−f(xn​−Δx)2Δx×f(xn​)​
                                              x                            n                                       x_n                  xn​的相近位置是                                             x                            n                                  +                         Δ                         x                              x_n+\Delta x                  xn​+Δx和                                             x                            n                                  −                         Δ                         x                              x_n-\Delta x                  xn​−Δx,在GBO算法中,这些相近位置被种群中的另外两个位置(向量)所替代。由于                                   f                         (                         x                         )                              f(x)                  f(x)是一个最小化题目,位置                                             x                            n                                  +                         Δ                         x                              x_n+\Delta x                  xn​+Δx的适应度比                                             x                            n                                       x_n                  xn​差,而                                             x                            n                                  −                         Δ                         x                              x_n-\Delta x                  xn​−Δx比                                             x                            n                                       x_n                  xn​好。因此,GBO算法用更好的位置                                             x                                       b                               e                               s                               t                                                 x_{best}                  xbest​,即                                             x                            n                                       x_n                  xn​邻域内的位置, 替换                                             x                            n                                  −                         Δ                         x                              x_n-\Delta x                  xn​−Δx,用较差的位置                                             x                                       w                               o                               r                               s                               t                                                 x_{worst}                  xworst​代替                                             x                            n                                       x_n                  xn​邻域内的较差位置,替换                                             x                            n                                  +                         Δ                         x                              x_n+\Delta x                  xn​+Δx。此外,提出的算法使用位置                                             x                            n                                       x_n                  xn​而非其适应度                                   f                         (                                   x                            n                                  )                              f(x_n)                  f(xn​):
                                         G                            S                            R                            =                            r                            a                            n                            d                            n                            ×                                                   2                                  Δ                                  x                                  ×                                               x                                     n                                                                  (                                               x                                                   w                                        o                                        r                                        s                                        t                                                           −                                               x                                                   b                                        e                                        s                                        t                                                           +                                  ε                                  )                                                       GSR=randn\times\frac{2\Delta x\times x_{n}}{(x_{\mathrm{worst}}-x_{best}+\varepsilon)}                     GSR=randn×(xworst​−xbest​+ε)2Δx×xn​​
在提出的GBO算法中,梯度搜索规则(GSR)思量了优化过程中的随机行为,以促进探索和逃离局部最优:
                                                                                                                                                              Δ                                        x                                        =                                        r                                        a                                        n                                        d                                        (                                        1                                        :                                        N                                        )                                        ×                                        ∣                                        s                                        t                                        e                                        p                                        ∣                                                                                                                                                                                               s                                        t                                        e                                        p                                        =                                                                       (                                                               x                                                                   b                                                    e                                                    s                                                    t                                                                               −                                                               x                                                                   r                                                    1                                                                  m                                                              )                                              +                                              δ                                                          2                                                                                                                                                                                                             δ                                        =                                        2                                        ×                                        r                                        a                                        n                                        d                                        ×                                                       (                                                           ∣                                                                                                    x                                                                           r                                                          1                                                                          m                                                                      +                                                                       x                                                                           r                                                          2                                                                          m                                                                      +                                                                       x                                                                           r                                                          3                                                                          m                                                                      +                                                                       x                                                                           r                                                          4                                                                          m                                                                                    4                                                              −                                                               x                                                 n                                                 m                                                              ∣                                                          )                                                                                              \begin{aligned} & \Delta x=rand(1:N)\times|step| \\ & step=\frac{(x_{best}-x_{r1}^{m})+\delta}{2} \\ & \delta=2\times rand\times\left(\left|\frac{x_{r1}^{m}+x_{r2}^{m}+x_{r3}^{m}+x_{r4}^{m}}{4}-x_{n}^{m}\right|\right) \end{aligned}                     ​Δx=rand(1:N)×∣step∣step=2(xbest​−xr1m​)+δ​δ=2×rand×(                        ​4xr1m​+xr2m​+xr3m​+xr4m​​−xnm​                        ​)​
为了更有效地利用                                             x                            n                                       x_n                  xn​附近的区域,GBO算法中引入了移动方向(DM)。这一机制通过使用最佳向量                                             x                                       b                               e                               s                               t                                                 x_{best}                  xbest​,并将当前向量                                             x                            n                                       x_n                  xn​向                                   (                                   x                                       b                               e                               s                               t                                            −                                   x                            n                                  )                              (x_{best}-x_n)                  (xbest​−xn​)方向移动来操作。这样的设计不仅加强了局部搜索的本领,另有助于提拔算法的收敛速率,从而使GBO算法在探求最优解的讨程中更加高效:
                                         D                            M                            =                            r                            a                            n                            d                            ×                                       ρ                               2                                      ×                            (                                       x                                           b                                  e                                  s                                  t                                                 −                                       x                               n                                      )                                  DM=rand\times\rho_{2}\times(x_{best}-x_{n})                     DM=rand×ρ2​×(xbest​−xn​)
因此,位置更新为:
                                                                                                                                                              X                                                       1                                           n                                           m                                                      =                                                       X                                           n                                           m                                                      −                                        G                                        S                                        R                                        +                                        D                                        M                                                                                                                                                                                               X                                                       1                                           n                                           m                                                      =                                                       x                                           n                                           m                                                      −                                        r                                        a                                        n                                        d                                        n                                        ×                                                       ρ                                           1                                                      ×                                                                       2                                              Δ                                              x                                              ×                                                               x                                                 n                                                 m                                                                                          (                                                               x                                                                   w                                                    o                                                    r                                                    s                                                    t                                                                               −                                                               x                                                                   b                                                    e                                                    s                                                    t                                                                               +                                              ε                                              )                                                                     +                                        r                                        a                                        n                                        d                                        ×                                                       ρ                                           2                                                      ×                                        (                                                       x                                                           b                                              e                                              s                                              t                                                                     −                                                       x                                           n                                           m                                                      )                                                                                \begin{aligned} & X\mathbf{1}_{n}^{m}=X_n^m-GSR+DM \\ & X\mathbf{1}_{n}^{m}=x_n^m-randn\times\rho_1\times\frac{2\Delta x\times x_n^m}{(x_{\mathrm{worst}}-x_{\mathrm{best}}+\varepsilon)}+rand\times\rho_2\times(x_{\mathrm{best}}-x_n^m) \end{aligned}                     ​X1nm​=Xnm​−GSR+DMX1nm​=xnm​−randn×ρ1​×(xworst​−xbest​+ε)2Δx×xnm​​+rand×ρ2​×(xbest​−xnm​)​
局部逃逸操作算子(LEO)

为了加强GBO算法办理复杂题目的服从,引入了局部逃逸操作算子(LEO)。LEO通过整合多个办理方案来明显改变解的位置,这些方案包括最佳位置                                             x                                       b                               e                               s                               t                                                 x_{best}                  xbest​,两个随机解                                             x                                       m                               r                               1                                                 x_{mr1}                  xmr1​和                                             x                                       m                               r                               2                                                 x_{mr2}                  xmr2​,以及一个新生成的随机解                                             x                                       m                               k                                                 x_{mk}                  xmk​:
                                                    x                               k                               m                                      =                                       L                               2                                      ×                                       x                               p                               m                                      +                            (                            1                            −                                       L                               2                                      )                            ×                                       x                                           r                                  a                                  n                                  d                                                       x_{k}^{m}=L_{2}\times x_{p}^{m}+(1-L_{2})\times x_{rand}                     xkm​=L2​×xpm​+(1−L2​)×xrand​

伪代码

3.效果展示



4.参考文献

[1] Ahmadianfar I, Bozorg-Haddad O, Chu X. Gradient-based optimizer: A new metaheuristic optimization algorithm[J]. Information Sciences, 2020, 540: 131-159.
5.获取代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表