基于自适应反馈调节因子的阿基米德优化算法(IAOA)
文章目录
- 基于自适应反馈调节因子的阿基米德优化算法(IAOA)
- 1.阿基米德优化算法
- 2. 改进阿基米德优化算法
- 2.1 佳点集种群初始化
- 2.2 自适应反馈调节因子
- 2.3 莱维旋转变换策略
 
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.Python代码
 
摘要:针对基础阿基米德优化算法收敛速度慢、容易陷入局部最优的问题,文中提出了一种基于自适应反馈调节因子的阿基米德优化算法。首先,通过佳点集初始化种群,增强初始种群的遍历性,提高初始解的质量;其次,提出自适应反馈调节因子,平衡算法的全局探索与局部开发能力;最后,提出了莱维旋转变换策略,增加种群的多样性,以防止算法陷入局部最优。
1.阿基米德优化算法
基础阿基米德优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/119999874
2. 改进阿基米德优化算法
2.1 佳点集种群初始化
初始种群在解空间中的细微不同都可能影响算法的进化方向,最后产生完全不同的最终结果。在初始化阶段, AOA容易受到随机的干扰,发生聚集现象。本文通过引入佳点集初始化方法,来拟提高算法在解空间上的遍历能力。
2.2 自适应反馈调节因子
在 AOA 迭代后期进行局部开发时, 根据位置更新式可知, 个体收敛于当前最优解的方式是直接跳跃到当前最优 位置附近, 而不是像粒子群优化算法那样向最优位置移动。 这是一种盲目跟进的行为, 导致  
     
      
       
       
         A 
        
       
         O 
        
       
         A 
        
       
      
        \mathrm{AOA} 
       
      
    AOA 极容易陷入局部最优。 又根据密度因子式 (7) 可知, 随着迭代次数的增加, 密度因子 会呈现从 1 到0线性递减的趋势。密度因子过小会导致个体 信息的缺失, 从而导致了种群多样性的减少。因此, 本文提出 了自适应反馆调节因子对算法进行改进。本文将种群进化成 功率  
     
      
       
        
         
         
         
           [ 
          
         
           23 
          
         
           ] 
          
         
        
       
      
        { }^{[23]} 
       
      
    [23] 以及个体归一化后的适应度作为反馈调节参数对密 度因子进行改进, 使得个体根据种群所处的实际环境以及自身的适应度动态调节, 具体操作如下。
 以最小值问题为例, 个体  
     
      
       
       
         i 
        
       
      
        i 
       
      
    i 在第  
     
      
       
       
         t 
        
       
      
        t 
       
      
    t 次迭代中的成功值  
     
      
       
       
         S 
        
       
         ( 
        
       
         i 
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        S(i, t) 
       
      
    S(i,t) 定义 为 :
  
      
       
        
         
          
          
           
           
             S 
            
           
             ( 
            
           
             i 
            
           
             , 
            
           
             t 
            
           
             ) 
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                 
                   1 
                  
                 
                   , 
                  
                 
                
               
               
                
                 
                 
                    fit  
                  
                  
                  
                    ( 
                   
                   
                    
                    
                      pbest 
                     
                    
                       
                     
                    
                   
                     i 
                    
                   
                  
                    ( 
                   
                  
                    t 
                   
                  
                    ) 
                   
                  
                    ) 
                   
                  
                 
                   < 
                  
                 
                   f 
                  
                 
                   i 
                  
                 
                   t 
                  
                  
                  
                    ( 
                   
                   
                   
                      pbest  
                    
                   
                     i 
                    
                   
                  
                    ( 
                   
                  
                    t 
                   
                  
                    − 
                   
                  
                    1 
                   
                  
                    ) 
                   
                  
                    ) 
                   
                  
                 
                
               
              
              
               
                
                 
                 
                   0 
                  
                 
                   , 
                  
                 
                
               
               
                
                 
                 
                    fit  
                  
                  
                  
                    ( 
                   
                   
                    
                    
                      pbest 
                     
                    
                       
                     
                    
                   
                     i 
                    
                   
                  
                    ( 
                   
                  
                    t 
                   
                  
                    ) 
                   
                  
                    ) 
                   
                  
                 
                   = 
                  
                 
                    fit  
                  
                  
                  
                    ( 
                   
                  
                    p 
                   
                   
                   
                      pbest  
                    
                   
                     i 
                    
                   
                  
                    ( 
                   
                  
                    t 
                   
                  
                    − 
                   
                  
                    1 
                   
                  
                    ) 
                   
                  
                    ) 
                   
                  
                 
                
               
              
             
            
           
          
          
          
          
            (10) 
           
          
         
        
       
         S(i, t)= \begin{cases}1, & \text { fit }\left(\operatorname{pbest}^i(t)\right)<f i t\left(\text { pbest }^i(t-1)\right) \\ 0, & \text { fit }\left(\operatorname{pbest}^i(t)\right)=\text { fit }\left(p \text { pbest }^i(t-1)\right)\end{cases}\tag{10} 
        
       
     S(i,t)={1,0, fit (pbesti(t))<fit( pbest i(t−1)) fit (pbesti(t))= fit (p pbest i(t−1))(10)
 其中, phest  
     
      
       
        
         
        
          i 
         
        
       
         ( 
        
       
         t 
        
       
         ) 
        
       
      
        { }^i(t) 
       
      
    i(t) 表示迭代至第  
     
      
       
       
         t 
        
       
      
        t 
       
      
    t 次时, 个体  
     
      
       
       
         i 
        
       
      
        i 
       
      
    i 的历史最优位置;  
     
      
       
       
         f 
        
       
         i 
        
       
         t 
        
       
      
        f i t 
       
      
    fit ( 火) 为适应度函数; 根据个体  
     
      
       
       
         i 
        
       
      
        i 
       
      
    i 的成功值  
     
      
       
       
         S 
        
       
         ( 
        
       
         i 
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        S(i, t) 
       
      
    S(i,t), 种群的成 功率  
     
      
       
       
         ( 
        
        
        
          P 
         
        
          s 
         
        
       
         ) 
        
       
      
        \left(P_s\right) 
       
      
    (Ps) 定义为个体历史最优位置对应的进化成功个体数占 种群大小的比例, 计算式如下:
  
      
       
        
         
          
          
           
            
            
              P 
             
            
              s 
             
            
           
             ( 
            
           
             t 
            
           
             ) 
            
           
             = 
            
            
            
              1 
             
            
              N 
             
            
            
            
              ∑ 
             
             
             
               i 
              
             
               = 
              
             
               1 
              
             
            
              N 
             
            
           
             S 
            
           
             ( 
            
           
             i 
            
           
             , 
            
           
             t 
            
           
             ) 
            
           
          
          
          
          
            (11) 
           
          
         
        
       
         P_s(t)=\frac{1}{N} \sum_{i=1}^N S(i, t)\tag{11} 
        
       
     Ps(t)=N1i=1∑NS(i,t)(11)
 其中,  
     
      
       
       
         N 
        
       
      
        N 
       
      
    N 为种群的大小。
在迭代初期, 个体广泛分布在解空间中, 进化成功的个体 相对较多, 种群进化成功率较高, 侧面说明最优个体的引领方 向正确。在迭代后期, 种群个体逐渐聚集, 若进化成功率降 低,则应该保留更多的个体信息来保证算法的局部开发能力。 将种群进化成功率  
     
      
       
        
        
          P 
         
        
          s 
         
        
       
      
        P_s 
       
      
    Ps 和密度因子  
     
      
       
       
         d 
        
       
      
        d 
       
      
    d 结合, 动态反馈算法的进 化状态, 以此来平衡算法的全局开发能力。自适应反馈调节 因子如下:
  
      
       
        
         
          
          
           
            
            
              d 
             
            
              i 
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
           
             2 
            
           
             ∗ 
            
           
             exp 
            
           
              
            
            
            
              ( 
             
             
              
               
               
                 t 
                
               
                 max 
                
               
                  
                
               
              
                − 
               
              
                t 
               
              
              
              
                t 
               
              
                max 
               
              
                 
               
              
             
            
              ) 
             
            
           
             − 
            
            
            
              ( 
             
             
             
               t 
              
              
              
                t 
               
              
                max 
               
              
                 
               
              
             
            
              ) 
             
            
           
             ∗ 
            
            
            
              ( 
             
            
              α 
             
            
              ∗ 
             
             
             
               P 
              
             
               s 
              
             
            
              ( 
             
            
              t 
             
            
              ) 
             
            
              + 
             
            
              β 
             
            
              ∗ 
             
             
             
               F 
              
             
               i 
              
             
            
              ) 
             
            
           
          
          
          
          
            (12) 
           
          
         
        
       
         d_i^{t+1}=2 * \exp \left(\frac{t_{\max }-t}{t_{\max }}\right)-\left(\frac{t}{t_{\max }}\right) *\left(\alpha * P_s(t)+\beta * F_i\right)\tag{12} 
        
       
     dit+1=2∗exp(tmaxtmax−t)−(tmaxt)∗(α∗Ps(t)+β∗Fi)(12)
 其中, 参数  
     
      
       
       
         α 
        
       
      
        \alpha 
       
      
    α 表示种群进化成功率重要性系数,  
     
      
       
        
        
          F 
         
        
          i 
         
        
       
      
        F_i 
       
      
    Fi 定义为:
  
      
       
        
         
          
          
           
            
            
              F 
             
            
              i 
             
            
           
             = 
            
            
            
              λ 
             
             
             
               − 
              
              
              
                ( 
               
              
                f 
               
               
               
                 ( 
                
                
                
                  X 
                 
                
                  i 
                 
                
               
                 ) 
                
               
              
                − 
               
               
               
                 f 
                
               
                 min 
                
               
                  
                
               
              
                + 
               
              
                ε 
               
              
                ) 
               
              
             
               / 
              
              
              
                ( 
               
               
               
                 f 
                
               
                 max 
                
               
                  
                
               
              
                − 
               
               
               
                 f 
                
               
                 min 
                
               
                  
                
               
              
                + 
               
              
                ε 
               
              
                ) 
               
              
             
            
           
          
          
          
          
            (13) 
           
          
         
        
       
         F_i=\lambda^{-\left(f\left(X_i\right)-f_{\min }+\varepsilon\right) /\left(f_{\max }-f_{\min }+\varepsilon\right)}\tag{13} 
        
       
     Fi=λ−(f(Xi)−fmin+ε)/(fmax−fmin+ε)(13)
 其中,  
     
      
       
        
        
          F 
         
        
          i 
         
        
       
      
        F_i 
       
      
    Fi 表示第  
     
      
       
       
         i 
        
       
      
        i 
       
      
    i 个个体归一化后的适应度系数;  
     
      
       
       
         β 
        
       
      
        \beta 
       
      
    β 为该系数 的重要性系数;  
     
      
       
       
         λ 
        
       
      
        \lambda 
       
      
    λ 为衰减因子;  
     
      
       
       
         ε 
        
       
      
        \varepsilon 
       
      
    ε 为一个非常小的有理数, 以防 止分母为 0 的情况。自适应反馈调节因子会根据适应度的变 化情况动态调整大小, 若当前个体适应度接近最优适应度, 自 适应反馈调节因子会保持原来的密度因子的性质, 加快算法 的收敛速度。而适应度较差的个体, 其自适应调节因子接近 最大值, 保留了自身更多信息, 保证了算法的局部开发能力。
2.3 莱维旋转变换策略
在保持  
     
      
       
       
         A 
        
       
         O 
        
       
         A 
        
       
      
        \mathrm{AOA} 
       
      
    AOA 的种群多样性基础上, 为了提高个体的探 索能力, 避免在迭代后期出现种群陷入局部最优的现象, 本文 提出了莱维旋转变换策略。以莱维步长  
     
      
       
        
         
         
         
           [ 
          
         
           24 
          
         
           ] 
          
         
        
       
      
        { }^{[24]} 
       
      
    [24] 为半径、最优个体 为中心对个体进行旋转变换操作, 以提高种群的多样性和收 敛速度, 其中莱维旋转变换算子为:
  
      
       
        
         
          
          
           
            
            
              x 
             
            
              i 
             
            
              t 
             
            
           
             = 
            
            
            
              x 
             
            
              best  
             
            
           
             + 
            
           
             s 
            
           
             ∗ 
            
            
            
              1 
             
             
             
               n 
              
              
               
               
                 ∥ 
                
                
                
                  x 
                 
                
                  i 
                 
                
                  t 
                 
                
               
                 ∥ 
                
               
              
                2 
               
              
             
            
            
            
              R 
             
            
              r 
             
            
            
            
              x 
             
            
              i 
             
            
              t 
             
            
           
          
          
          
          
            (14) 
           
          
         
        
       
         \boldsymbol{x}_i^t=\boldsymbol{x}_{\text {best }}+s * \frac{1}{n\left\|\boldsymbol{x}_i^t\right\|_2} \boldsymbol{R}_r \boldsymbol{x}_i^t \tag{14} 
        
       
     xit=xbest +s∗n∥xit∥21Rrxit(14)
 其中,  
     
      
       
        
        
          R 
         
        
          r 
         
        
       
         ∈ 
        
        
        
          R 
         
         
         
           n 
          
         
           ∗ 
          
         
           n 
          
         
        
       
      
        \boldsymbol{R}_r \in \boldsymbol{R}_{n * n} 
       
      
    Rr∈Rn∗n 是一个元素取值在  
     
      
       
       
         [ 
        
       
         − 
        
       
         1 
        
       
         , 
        
       
         1 
        
       
         ] 
        
       
      
        [-1,1] 
       
      
    [−1,1] 之间均匀分布的随 机矩阵;  
     
      
       
       
         ∥ 
        
       
      
        \| 
       
      
    ∥ -  
     
      
       
       
         ∥ 
        
       
      
        \| 
       
      
    ∥ 为向量 2 -范数;  
     
      
       
       
         s 
        
       
      
        s 
       
      
    s 为结合莱维的旋转因子; 理 论上  
     
      
       
        
         
         
         
           [ 
          
         
           25 
          
         
           ] 
          
         
        
       
      
        { }^{[25]} 
       
      
    [25] 能将位置旋转到以  
     
      
       
       
         s 
        
       
      
        s 
       
      
    s 为半径的任何位置, 可用于控制 解的搜索范围, 其表达式为:
  
      
       
        
         
          
          
           
           
             s 
            
           
             = 
            
           
             0.01 
            
           
             ∗ 
            
            
            
              μ 
             
             
             
               ∣ 
              
             
               ν 
              
              
              
                ∣ 
               
               
               
                 1 
                
               
                 / 
                
               
                 β 
                
               
              
             
            
            
            
              ( 
             
             
             
               x 
              
             
               i 
              
             
               t 
              
             
            
              − 
             
             
             
               x 
              
             
               best  
              
             
            
              ) 
             
            
           
          
          
          
          
            (15) 
           
          
         
        
       
         s=0.01 * \frac{\mu}{|\nu|^{1 / \beta}}\left(\boldsymbol{x}_i^t-\boldsymbol{x}_{\text {best }}\right)\tag{15} 
        
       
     s=0.01∗∣ν∣1/βμ(xit−xbest )(15)
  
      
       
        
         
          
          
           
            
            
              σ 
             
            
              μ 
             
            
           
             = 
            
            
             
             
               { 
              
              
               
               
                 Γ 
                
               
                 ( 
                
               
                 1 
                
               
                 + 
                
               
                 β 
                
               
                 ) 
                
               
                 ⋅ 
                
               
                 sin 
                
               
                  
                
                
                
                  ( 
                 
                 
                  
                  
                    π 
                   
                  
                    β 
                   
                  
                 
                   2 
                  
                 
                
                  ) 
                 
                
               
               
               
                 Γ 
                
                
                
                  [ 
                 
                 
                  
                  
                    ( 
                   
                  
                    1 
                   
                  
                    + 
                   
                  
                    β 
                   
                  
                    ) 
                   
                  
                 
                   2 
                  
                 
                
                  ] 
                 
                
               
                 β 
                
               
                 ⋅ 
                
                
                
                  2 
                 
                 
                  
                  
                    ( 
                   
                  
                    β 
                   
                  
                    − 
                   
                  
                    1 
                   
                  
                    ) 
                   
                  
                 
                   2 
                  
                 
                
               
              
             
               } 
              
             
             
             
               1 
              
             
               / 
              
             
               β 
              
             
            
           
          
          
          
          
            (16) 
           
          
         
        
       
         \sigma_\mu=\left\{\frac{\Gamma(1+\beta) \cdot \sin \left(\frac{\pi \beta}{2}\right)}{\Gamma\left[\frac{(1+\beta)}{2}\right] \beta \cdot 2^{\frac{(\beta-1)}{2}}}\right\}^{1 / \beta}\tag{16} 
        
       
     σμ=⎩ 
               ⎨ 
               ⎧Γ[2(1+β)]β⋅22(β−1)Γ(1+β)⋅sin(2πβ)⎭ 
               ⎬ 
               ⎫1/β(16)
 其中,  
     
      
       
       
         β 
        
       
      
        \beta 
       
      
    β 的取值会影响搜索半径的大小,  
     
      
       
       
         β 
        
       
      
        \beta 
       
      
    β 的取值越大, 其局部 开放能力就越强 。
莱维旋转变换算子可以对个体以一定的角度进行旋转, 以最大限度地避免生成重复个体; 并且其结合莱维步长的短 距离步长和长距离步长相间的特点, 扩大群体的搜寻范围, 协 助算法在必要时跳出局部最优, 以提高算法的搜索性能。最 后, 为了兼顾种群搜索领域的广度与深度, 本文根据个体的适 应度值, 计算个体的进化概率, 如式 (17) 所示。个体的可行解 质量越差, 则该个体被选择进行莱维旋转变换操作的概率就 越大, 同时本文还采用贪婪选择更新解, 在保留优势个体的同 时兼顾个体的探索能力。
  
      
       
        
         
          
          
           
            
            
              p 
             
            
              i 
             
            
           
             = 
            
            
             
             
               f 
              
             
               i 
              
              
              
                t 
               
              
                i 
               
              
             
             
              
              
                ∑ 
               
               
               
                 i 
                
               
                 = 
                
               
                 1 
                
               
              
                N 
               
              
             
               f 
              
             
               i 
              
              
              
                t 
               
              
                i 
               
              
             
            
           
          
          
          
          
            (17) 
           
          
         
        
       
         p_i=\frac{f i t_i}{\sum_{i=1}^N f i t_i}\tag{17} 
        
       
     pi=∑i=1Nfitifiti(17)
 其中,  
     
      
       
        
        
          p 
         
        
          i 
         
        
       
      
        p_i 
       
      
    pi 是选择概率;  
     
      
       
       
         f 
        
       
         i 
        
        
        
          t 
         
        
          i 
         
        
       
      
        f i t_i 
       
      
    fiti 的表达式为:
  
      
       
        
         
          
          
           
            
            
               fit  
             
            
              i 
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                  
                  
                    1 
                   
                   
                   
                     1 
                    
                   
                     + 
                    
                    
                    
                      f 
                     
                    
                      i 
                     
                    
                   
                  
                 
                   , 
                  
                 
                
               
               
                
                 
                  
                  
                    f 
                   
                  
                    i 
                   
                  
                 
                   ⩾ 
                  
                 
                   0 
                  
                 
                
               
              
              
               
                
                 
                 
                   1 
                  
                 
                   + 
                  
                  
                  
                    ∣ 
                   
                   
                   
                     f 
                    
                   
                     i 
                    
                   
                  
                    ∣ 
                   
                  
                 
                   , 
                  
                 
                
               
               
                
                 
                  
                  
                    f 
                   
                  
                    i 
                   
                  
                 
                   < 
                  
                 
                   0 
                  
                 
                
               
              
             
            
           
          
          
          
          
            (18) 
           
          
         
        
       
         \text { fit }_i= \begin{cases}\frac{1}{1+f_i}, & f_i \geqslant 0 \\ 1+\left|f_i\right|, & f_i<0\end{cases}\tag{18} 
        
       
      fit i={1+fi1,1+∣fi∣,fi⩾0fi<0(18)
 其中,  
     
      
       
        
        
          f 
         
        
          i 
         
        
       
      
        f_i 
       
      
    fi 为第  
     
      
       
       
         i 
        
       
      
        i 
       
      
    i 个个体的适应度值。

3.实验结果

4.参考文献
[1]陈俊,何庆,李守玉.基于自适应反馈调节因子的阿基米德优化算法[J].计算机科学,2022,49(08):237-246.


















