目录
- 1.算法原理
- 2.改进点
- 3.结果展示
- 4.参考文献
- 5.代码获取
 
1.算法原理
【智能算法】麻雀搜索算法(SSA)原理及实现
2.改进点
精英反向学习策略
将精英反向学习策略应用到初始化阶段, 通过反向解的生成与精英个体的选择, 不仅使算法搜索范围得到扩大, 提高了全局搜索的能力, 也能够提高算法规避局部最优的能力:
  
      
       
        
         
          
          
           
           
             ( 
            
            
            
              x 
             
             
             
               i 
              
             
               j 
              
             
            
              ′ 
             
            
            
            
              ) 
             
            
              t 
             
            
           
             = 
            
           
             k 
            
           
             ( 
            
           
             l 
            
            
            
              b 
             
            
              j 
             
            
              t 
             
            
           
             + 
            
           
             u 
            
            
            
              b 
             
            
              j 
             
            
              t 
             
            
           
             ) 
            
           
             − 
            
            
            
              x 
             
             
             
               i 
              
             
               j 
              
             
            
              t 
             
            
           
          
          
          
          
            (1) 
           
          
         
        
       
         (x_{ij}^{\prime})^t=k(lb_j^t+ub_j^t)-x_{ij}^t\tag{1} 
        
       
     (xij′)t=k(lbjt+ubjt)−xijt(1)
阶段性控制步长策略
提出一种基于警戒值的螺旋式搜索策略,用于在扩大搜索范围的同时逼近最优解。为了提升搜索精度和收敛速度,引入了非线性衰减因子μ,使得算法初期可以广泛搜索不同区域,而中后期则集中优化已知区域。改进后的发现者位置更新:
  
      
       
        
         
          
          
           
            
            
              x 
             
             
             
               i 
              
             
               , 
              
             
               j 
              
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                 
                   x 
                  
                  
                  
                    b 
                   
                  
                    j 
                   
                  
                    t 
                   
                  
                 
                   + 
                  
                 
                   ∣ 
                  
                  
                  
                    x 
                   
                   
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                  
                    t 
                   
                  
                 
                   − 
                  
                 
                   x 
                  
                  
                  
                    b 
                   
                  
                    j 
                   
                  
                    t 
                   
                  
                 
                   ∣ 
                  
                 
                   × 
                  
                  
                  
                    e 
                   
                  
                    l 
                   
                  
                 
                   × 
                  
                 
                   cos 
                  
                 
                    
                  
                 
                   ( 
                  
                 
                   2 
                  
                 
                   π 
                  
                 
                   l 
                  
                 
                   ) 
                  
                 
                
               
              
              
               
                
                 
                  
                  
                    R 
                   
                  
                    2 
                   
                  
                 
                   < 
                  
                 
                   0.5 
                  
                 
                
               
              
              
               
                
                 
                  
                  
                    x 
                   
                   
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                  
                    t 
                   
                  
                 
                   × 
                  
                 
                   μ 
                  
                 
                   , 
                  
                 
                   0.5 
                  
                 
                   ⩽ 
                  
                  
                  
                    R 
                   
                  
                    2 
                   
                  
                 
                   < 
                  
                 
                   S 
                  
                  
                  
                    T 
                   
                  
                    ′ 
                   
                  
                 
                
               
              
              
               
                
                 
                  
                  
                    x 
                   
                   
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                  
                    t 
                   
                  
                 
                   + 
                  
                 
                   Q 
                  
                 
                   , 
                  
                  
                  
                    R 
                   
                  
                    2 
                   
                  
                 
                   ⩾ 
                  
                 
                   S 
                  
                  
                  
                    T 
                   
                  
                    ′ 
                   
                  
                 
                
               
              
             
            
           
          
          
          
          
            (2) 
           
          
         
        
       
         x_{i,j}^{t+1}=\begin{cases}xb_j^t+|x_{i,j}^t-xb_j^t|\times\mathrm{e}^l\times\cos(2\pi l)\\[2ex]R_2<0.5\\[2ex]x_{i,j}^t\times\mu,0.5\leqslant R_2<\mathrm{S}T^{\prime}\\[2ex]x_{i,j}^t+Q,R_2\geqslant\mathrm{S}T^{\prime}\end{cases}\tag{2} 
        
       
     xi,jt+1=⎩ 
              ⎨ 
              ⎧xbjt+∣xi,jt−xbjt∣×el×cos(2πl)R2<0.5xi,jt×μ,0.5⩽R2<ST′xi,jt+Q,R2⩾ST′(2)
 各参数表述为:
  
      
       
        
         
          
          
           
           
             l 
            
           
             = 
            
           
             ( 
            
           
             a 
            
           
             − 
            
           
             1 
            
           
             ) 
            
           
             × 
            
           
             r 
            
           
             a 
            
           
             n 
            
           
             d 
            
           
             + 
            
           
             1 
            
            
           
             a 
            
           
             = 
            
            
            
              ( 
             
            
              − 
             
             
             
               t 
              
              
              
                i 
               
              
                t 
               
              
                e 
               
               
               
                 r 
                
               
                 max 
                
               
                  
                
               
              
             
            
              ) 
             
            
           
             − 
            
           
             1 
            
            
           
             μ 
            
           
             = 
            
            
            
              1 
             
             
             
               a 
              
             
               × 
              
              
              
                t 
               
               
               
                 i 
                
               
                 t 
                
               
                 e 
                
                
                
                  r 
                 
                
                  max 
                 
                
                   
                 
                
               
              
             
            
            
           
             e 
            
           
          
          
          
          
            (3) 
           
          
         
        
       
         l=(a-1)\times rand+1\\a=\left(-\frac t{iter_{\max}}\right)-1\\\mu=\frac1{a\times\frac t{iter_{\max}}}\\\mathrm{e}\tag{3} 
        
       
     l=(a−1)×rand+1a=(−itermaxt)−1μ=a×itermaxt1e(3)
混沌余弦变化因子
在发现者寻找到最优解并引领种群收敛的情况下, 其余跟随者的迅速靠拢是跳跃式的, 这会导致算法陷入局部最优, 降低了算法的多样性。 在跟随者的位置更新中引入混沌余弦变化因子, 通过在不同阶段调整, 加强跟随者对未知区域的广泛探索, 降低陷入局部最优的概率:
  
      
       
        
         
          
          
           
            
             
              
              
                η 
               
              
             
             
              
               
                
               
                 = 
                
                
                
                  e 
                 
                 
                 
                   ( 
                  
                 
                   δ 
                  
                 
                   × 
                  
                 
                   cos 
                  
                 
                    
                  
                  
                  
                    ( 
                   
                   
                   
                     π 
                    
                   
                     2 
                    
                   
                  
                    u 
                   
                  
                 
                   ) 
                  
                 
                
               
              
             
            
            
             
              
               
              
             
            
            
             
              
              
                u 
               
              
             
             
              
               
                
               
                 = 
                
               
                 1 
                
               
                 − 
                
                
                
                  t 
                 
                 
                 
                   i 
                  
                 
                   t 
                  
                 
                   e 
                  
                  
                  
                    r 
                   
                   
                   
                     m 
                    
                   
                     a 
                    
                   
                     x 
                    
                   
                  
                 
                
               
              
             
            
           
          
          
          
          
            (4) 
           
          
         
        
       
         \begin{aligned}\eta&=\mathrm{e}^{\left(\delta\times\cos\left(\frac\pi2u\right.\right)}\\\\u&=1-\frac t{iter_{\mathrm{max}}}\end{aligned}\tag{4} 
        
       
     ηu=e(δ×cos(2πu)=1−itermaxt(4)
 采用 Circle 混沌映射生成相关参数:
  
      
       
        
         
          
          
           
            
            
              y 
             
             
             
               i 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              m 
             
            
              o 
             
            
              d 
             
            
            
            
              ( 
             
             
             
               y 
              
             
               i 
              
             
            
              + 
             
            
              0.2 
             
            
              − 
             
             
             
               ( 
              
              
              
                0.5 
               
               
               
                 2 
                
               
                 π 
                
               
              
             
               ) 
              
             
            
              sin 
             
            
               
             
             
             
               ( 
              
             
               2 
              
             
               π 
              
              
              
                y 
               
              
                i 
               
              
             
               ) 
              
             
            
              , 
             
            
              1 
             
            
              ) 
             
            
           
          
          
          
          
            (5) 
           
          
         
        
       
         y_{i+1}=\mathrm{mod}\left(y_i+0.2-\left(\frac{0.5}{2\pi}\right)\sin\left(2\pi y_i\right),1\right)\tag{5} 
        
       
     yi+1=mod(yi+0.2−(2π0.5)sin(2πyi),1)(5)
 改进后的跟随者位置更新:
  
      
       
        
         
          
          
           
            
            
              x 
             
             
             
               i 
              
             
               , 
              
             
               j 
              
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                 
                   Q 
                  
                 
                   × 
                  
                 
                   exp 
                  
                 
                    
                  
                 
                   ( 
                  
                  
                   
                   
                     x 
                    
                    
                    
                      w 
                     
                    
                      j 
                     
                    
                      ′ 
                     
                    
                   
                     − 
                    
                    
                    
                      x 
                     
                     
                     
                       i 
                      
                     
                       , 
                      
                     
                       j 
                      
                     
                    
                      ′ 
                     
                    
                   
                   
                   
                     i 
                    
                   
                     2 
                    
                   
                  
                 
                   ) 
                  
                 
                   , 
                  
                 
                   i 
                  
                 
                   > 
                  
                  
                  
                    n 
                   
                  
                    2 
                   
                  
                 
                
               
              
              
               
                
                 
                 
                   x 
                  
                  
                  
                    b 
                   
                  
                    j 
                   
                   
                   
                     t 
                    
                   
                     + 
                    
                   
                     1 
                    
                   
                  
                 
                   + 
                  
                 
                   ∣ 
                  
                  
                  
                    x 
                   
                   
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                  
                    ′ 
                   
                  
                 
                   − 
                  
                 
                   x 
                  
                  
                  
                    b 
                   
                  
                    j 
                   
                   
                   
                     t 
                    
                   
                     + 
                    
                   
                     1 
                    
                   
                  
                 
                   ∣ 
                  
                 
                   × 
                  
                 
                
               
              
              
               
                
                 
                 
                   L 
                  
                 
                   × 
                  
                  
                  
                    A 
                   
                  
                    + 
                   
                  
                 
                   × 
                  
                 
                   η 
                  
                 
                   × 
                  
                 
                   cos 
                  
                 
                    
                  
                 
                   ( 
                  
                 
                   2 
                  
                 
                   π 
                  
                 
                   k 
                  
                 
                   ) 
                  
                 
                   , 
                  
                 
                   i 
                  
                 
                   ⩽ 
                  
                  
                  
                    n 
                   
                  
                    2 
                   
                  
                 
                
               
              
             
            
           
          
          
          
          
            (6) 
           
          
         
        
       
         x_{i,j}^{t+1}=\begin{cases}Q\times\exp\Bigl(\frac{xw_j^{\prime}-x_{i,j}^{\prime}}{i^2}\Bigr) ,i>\frac{n}{2}\\xb_j^{t+1}+\bigl| x_{i,j}^{\prime}-xb_j^{t+1} \bigr|\times\\\boldsymbol{L}\times\boldsymbol{A}^{+}\times\eta\times\cos(2\pi\boldsymbol{k} ) ,i\leqslant\frac{n}{2}\end{cases}\tag{6} 
        
       
     xi,jt+1=⎩ 
              ⎨ 
              ⎧Q×exp(i2xwj′−xi,j′),i>2nxbjt+1+ 
                      xi,j′−xbjt+1 
                      ×L×A+×η×cos(2πk),i⩽2n(6)
自适应选择机制的 Lévy 飞行
提出一种自适应选择机制的 Lévy 飞行策略, 通过随迭代次数不断减小的自适应因子p , 随机选择麻雀个体进行 Lévy 飞行扰动, 增强麻雀位置的多样性。自适应选择因子:
  
      
       
        
         
          
          
           
           
             p 
            
           
             = 
            
           
             1 
            
           
             − 
            
            
            
              t 
             
             
             
               i 
              
             
               t 
              
             
               e 
              
              
              
                r 
               
              
                max 
               
              
                 
               
              
             
            
            
            
              e 
             
             
              
              
                i 
               
              
                t 
               
              
                e 
               
               
               
                 r 
                
               
                 max 
                
               
                  
                
               
              
                − 
               
              
                t 
               
              
              
              
                i 
               
              
                t 
               
              
                e 
               
               
               
                 r 
                
               
                 max 
                
               
                  
                
               
              
             
            
           
          
          
          
          
            (7) 
           
          
         
        
       
         p=1-\frac t{iter_{\max}}\mathrm{e}^{\frac{iter_{\max}-t}{iter_{\max}}}\tag{7} 
        
       
     p=1−itermaxteitermaxitermax−t(7)
 Lévy 飞行的位置更新:
  
      
       
        
         
          
          
           
           
             ( 
            
            
            
              x 
             
            
              i 
             
            
              ′ 
             
            
            
            
              ) 
             
            
              t 
             
            
           
             = 
            
            
            
              x 
             
            
              i 
             
            
              t 
             
            
           
             + 
            
           
             m 
            
           
             ⊕ 
            
           
             L 
            
           
             e 
            
           
             v 
            
           
             y 
            
           
             ( 
            
           
             λ 
            
           
             ) 
            
           
          
          
          
          
            (8) 
           
          
         
        
       
         (x_i^{\prime})^t=x_i^t+m\oplus Levy(\lambda)\tag{8} 
        
       
     (xi′)t=xit+m⊕Levy(λ)(8)
3.结果展示

 
 
 
 
 
比较困难的F7,F8

 
 
 
4.参考文献
[1] 李江华,王鹏晖,李伟.一种混合多策略改进的麻雀搜索算法[J].计算机工程与科学,2024,46(02):303-315.
5.代码获取
【资源清单】代码资源清单导航~



















