融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES)
文章目录
- 融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES)
 - 1.秃鹰优化算法
 - 2.改进秃鹰优化算法
 - 2.1 Tent 映射
 - 2.2 自适应惯性权重
 - 2.3 柯西变异
 
- 3.实验结果
 - 4.参考文献
 - 5.Matlab代码
 - 6.python代码
 
摘要:针对基本秃鹰搜索算法存在收敛速度慢、易陷入局部最优的缺点,提出了一种融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES).首先使用Tent混沌映射初始化种群,保留了种群的多样性;其次,引入自适应惯性权重,加快算法的收敛速度,增强算法的局部开发能力;最后将柯西变异算子整合到当前全局最优位置进行变异更新,提高算法陷入局部最优的能力.
1.秃鹰优化算法
基础秃鹰优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/113775430
2.改进秃鹰优化算法
2.1 Tent 映射
文章使用 Tent 映射来初始化种群, Tent 映射的表达式 如下所示:
  
      
       
        
         
          
          
           
            
            
              x 
             
             
             
               i 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                 
                   2 
                  
                  
                  
                    x 
                   
                  
                    i 
                   
                  
                 
                   , 
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                   ≤ 
                  
                 
                   x 
                  
                 
                   ≤ 
                  
                  
                  
                    1 
                   
                  
                    2 
                   
                  
                 
                
               
              
              
               
                
                 
                 
                   2 
                  
                  
                  
                    ( 
                   
                  
                    1 
                   
                  
                    − 
                   
                   
                   
                     x 
                    
                   
                     i 
                    
                   
                  
                    ) 
                   
                  
                 
                   , 
                  
                 
                
               
               
                
                 
                  
                  
                    1 
                   
                  
                    2 
                   
                  
                 
                   ≤ 
                  
                 
                   x 
                  
                 
                   ≤ 
                  
                 
                   1 
                  
                 
                
               
              
             
            
           
          
          
          
          
            (17) 
           
          
         
        
       
         x_{i+1}=\left\{\begin{array}{rc} 2 x_i, & 0 \leq x \leq \frac{1}{2} \\ 2\left(1-x_i\right), & \frac{1}{2} \leq x \leq 1 \end{array}\right.\tag{17} 
        
       
     xi+1={2xi,2(1−xi),0≤x≤2121≤x≤1(17)
 即经过贝努利移位变换后表达式如下:
  
      
       
        
         
          
          
           
            
            
              x 
             
             
             
               i 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              ( 
             
            
              2 
             
             
             
               x 
              
             
               i 
              
             
            
              ) 
             
             
            
             
             
               m 
              
             
               o 
              
             
               d 
              
             
             
           
             1 
            
           
          
          
          
          
            (18) 
           
          
         
        
       
         x_{i+1}=\left(2 x_i\right) \bmod 1 \tag{18} 
        
       
     xi+1=(2xi)mod1(18)
 Tent 混沌映射初始化种群产生序列的具体步骤如下:
 Step1: 在区间  
     
      
       
       
         ( 
        
       
         0 
        
       
         , 
        
       
         1 
        
       
         ) 
        
       
      
        (0,1) 
       
      
    (0,1) 内随机产生初始值  
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0, 记作  
     
      
       
       
         i 
        
       
         = 
        
       
      
        i= 
       
      
    i= 0 ;
Step2: 根据式 (17) 进行迭代运算产生一个新的 x x x 序 列, 且 i = i + 1 i=i+1 i=i+1;
Step3: 当 i i i 达到最大迭代次数时, 则停止迭代, 且将 迭代产生的 x x x 序列保存下来。
2.2 自适应惯性权重
本文提出了新的自适应权重 的方法, 自适应惯性权重公式如下:
  
      
       
        
         
          
          
           
           
             w 
            
           
             = 
            
           
             sin 
            
           
              
            
            
            
              ( 
             
            
              π 
             
            
              + 
             
             
             
               t 
              
              
              
                2 
               
               
               
                 t 
                
               
                 max 
                
               
                  
                
               
              
             
            
              × 
             
            
              π 
             
            
              ) 
             
            
           
             + 
            
            
             
             
               ( 
              
              
              
                w 
               
              
                max 
               
              
                 
               
              
             
               + 
              
              
              
                w 
               
              
                min 
               
              
                 
               
              
             
               ) 
              
             
            
              2 
             
            
           
          
          
          
          
            (19) 
           
          
         
        
       
         w=\sin \left(\pi+\frac{t}{2 t_{\max }} \times \pi\right)+\frac{\left(w_{\max }+w_{\min }\right)}{2} \tag{19} 
        
       
     w=sin(π+2tmaxt×π)+2(wmax+wmin)(19)
 其中,  
     
      
       
       
         t 
        
       
      
        t 
       
      
    t 表示当前迭代数;  
     
      
       
        
        
          t 
         
        
          max  
         
        
       
      
        t_{\text {max }} 
       
      
    tmax  是设置的种群最大 迭代次数;  
     
      
       
        
        
          w 
         
        
          max  
         
        
       
      
        w_{\text {max }} 
       
      
    wmax  是初始惯性权重, 在文中取值为 0.92 ; ;  
     
      
       
        
        
          w 
         
        
          min  
         
        
       
      
        w_{\text {min }} 
       
      
    wmin  是秃鹰种群最大迭代次数时的惯性权重, 在文中取 值为 0.4 。将惯性权重因子引入秃鹰搜索优化算法中, 在探 索阶段, 秃鹰的位置更新的表达式如下:
  
      
       
        
         
          
          
           
            
             
              
               
              
             
             
              
               
                
                
                
                  P 
                 
                 
                 
                   i 
                  
                 
                   , 
                  
                 
                    new  
                  
                 
                
               
                 = 
                
               
                 w 
                
               
                 × 
                
                
                
                  P 
                 
                
                  i 
                 
                
               
                 + 
                
               
                 x 
                
               
                 ( 
                
               
                 i 
                
               
                 ) 
                
               
                 × 
                
                
                
                  ( 
                 
                
                  w 
                 
                
                  × 
                 
                 
                 
                   P 
                  
                 
                   i 
                  
                 
                
                  − 
                 
                 
                 
                   P 
                  
                 
                   mean  
                  
                 
                
                  ) 
                 
                
               
                 + 
                
               
                 y 
                
               
                 ( 
                
               
                 i 
                
               
                 ) 
                
               
                 × 
                
               
                 ( 
                
               
                 w 
                
               
                 × 
                
               
              
             
            
            
             
              
               
              
             
             
              
               
                
                
                 
                 
                   P 
                  
                 
                   i 
                  
                 
                
                  − 
                 
                 
                 
                   P 
                  
                  
                  
                    i 
                   
                  
                    + 
                   
                  
                    1 
                   
                  
                 
                
                  ) 
                 
                
               
              
             
            
           
          
          
          
          
            (20) 
           
          
         
        
       
         \begin{aligned} & \boldsymbol{P}_{i, \text { new }}=\boldsymbol{w} \times \boldsymbol{P}_{\boldsymbol{i}}+\boldsymbol{x}(\boldsymbol{i}) \times\left(\boldsymbol{w} \times \boldsymbol{P}_{\boldsymbol{i}}-\boldsymbol{P}_{\text {mean }}\right)+\boldsymbol{y}(\boldsymbol{i}) \times(\boldsymbol{w} \times \\ & \left.\boldsymbol{P}_{\boldsymbol{i}}-\boldsymbol{P}_{i+1}\right) \end{aligned} \tag{20} 
        
       
     Pi, new =w×Pi+x(i)×(w×Pi−Pmean )+y(i)×(w×Pi−Pi+1)(20)
2.3 柯西变异
针对秃鹰算法易陷入局部极值的缺点, 本文在原有的算 法中融入柯西变异算子, 改善算法的全局搜索能力, 扩大搜 索空间。柯西分布是一种在概率论中常见的连续型概率分布, 柯西分布在原点处的概率密度较大, 两端处的密度较小; 两 端的形状又长又扁。正因此特点可以通过融入柯西变异对秃 鹰个体产生较大的扰动, 使得算法更容易跳出局部最优值  
     
      
       
        
         
         
         
           [ 
          
         
           2 
          
         
           ] 
          
         
           ] 
          
         
        
       
      
        { }^{[2]]} 
       
      
    [2]] 。 标准的柯西分布概率密度函数公式如下:
  
      
       
        
         
          
          
           
           
             f 
            
           
             ( 
            
           
             x 
            
           
             ) 
            
           
             = 
            
            
            
              1 
             
            
              π 
             
            
           
             × 
            
            
            
              1 
             
             
             
               ( 
              
              
              
                x 
               
              
                2 
               
              
             
               + 
              
             
               1 
              
             
               ) 
              
             
            
           
             , 
            
           
             − 
            
           
             ∞ 
            
           
             < 
            
           
             x 
            
           
             < 
            
           
             + 
            
           
             ∞ 
            
           
          
          
          
          
            (21) 
           
          
         
        
       
         f(x)=\frac{1}{\pi} \times \frac{1}{\left(x^2+1\right)},-\infty<x<+\infty \tag{21} 
        
       
     f(x)=π1×(x2+1)1,−∞<x<+∞(21)
 柯西分布从峰值下降至两侧时相对平缓, 且峰值相对较 小, 在变异后秃鹰种群会在搜索相邻空间时使用较少的时间, 将主要精力花费在寻找全局最优值上。使用式 (22) 对搜索空 间猎物阶段获得的全局最优值进行变异处理:
  
      
       
        
         
          
          
           
            
            
              P 
             
             
             
               new  
              
             
               , 
              
             
                best  
              
             
            
           
             = 
            
            
            
              P 
             
            
              best  
             
            
           
             + 
            
            
            
              P 
             
            
              best  
             
            
           
             × 
            
           
             Cauchy 
            
           
              
            
           
             ( 
            
           
             0 
            
           
             , 
            
           
             1 
            
           
             ) 
            
           
          
          
          
          
            (22) 
           
          
         
        
       
         P_{\text {new }, \text { best }}=P_{\text {best }}+P_{\text {best }} \times \operatorname{Cauchy}(\mathbf{0}, \mathbf{1})\tag{22} 
        
       
     Pnew , best =Pbest +Pbest ×Cauchy(0,1)(22)
 CBES 算法具 体实现流程如下所示:
Step1:设置并初始化算法参数, 其中包含种群的规模 N \mathrm{N} N, 最大迭代次数 t max t_{\text {max }} tmax , 目标函数的维度以及初始值的边界 条件。
Step2: 使用 2.1 节中的 Tent 混沌映射对种群进行初始 化, 按照适应度函数求出每只秃鹰的适应度值, 对所有秃鹰 的适应度值排序, 找出当前种群的全局最优位置。
Step3:在秃鹰选择搜索阶段, 按照公式 (1) 进行位置 跟新。
Step4: 在秃鹰搜索空间猎物阶段, 按照公式 (20) 进 行位置更新。
Step5: 在俯冲阶段, 按照公式 (22) 对上一个步骤得 到的全局最优解进行柯西变异处理, 再将得到的结果按照公 式(16)进行秃鹰的位置更新。
Step6: 更新秃鹰种群的最优个体位置与适应度值, 更 新算法的迭代次数。判断算法是否满足设置的最大迭代次数 或者精度要求, 若满足, 则终止算法, 输出适应度最优值及 最优解; 若没有, 则返回 Step3 进行循环。
3.实验结果

4.参考文献
[1]丁容,高建瓴,张倩.融合自适应惯性权重和柯西变异的秃鹰搜索算法[J].小型微型计算机系统,2023,44(05):910-915.DOI:10.20009/j.cnki.21-1106/TP.2021-0748.



















