0


智能优化算法:卷积优化算法-2023 附代码

智能优化算法:卷积优化算法 2023

摘要:将二维卷积运算引入智能优化算法的种群位置更新过程,提出一种新的智能优化算法,即卷积优化算法(Convolution Optimization Algorithm,COA)。 该算法主要包括卷积搜索和解质量增强 2 种机制:在卷积搜索过程中,分别定义纵向卷积核、横向卷积核和区域卷积核,依次进行二维卷积运算并更新种群的位置向量,然后将 3 种卷积核更新后的种群的位置向量进行随机权重或等比例权重相加,进一步更新种群的位置向量;在解质量增强过程中,对最优解的搜索空间逐维进行带非惯性权重的高斯变异,并对最优解进行扰动,从而提高算法的局部搜索能力。

1.卷积优化算法

COA 主要包括卷积搜索和解质量增强 2 种机制,其中:卷积搜索机制的是通过矩阵卷积运算增强搜索趋势并加快收敛速度,从而在搜索空间中获得更好的位置;解质量增强机制通过提高解的质量,避免每次迭代中出现局部最优。

1.1 种群初始化

     C 
    
   
     O 
    
   
     A 
    
   
  
    \mathrm{COA} 
   
  
COA 中, 个体的位置向量  
 
  
   
    
    
      X 
     
    
      p 
     
    
   
     ( 
    
   
     p 
    
   
     = 
    
   
     1 
    
   
     , 
    
   
     2 
    
   
     , 
    
   
     ⋯ 
    
   
  
    \boldsymbol{X}_p(p=1,2, \cdots 
   
  
Xp​(p=1,2,⋯,  
 
  
   
   
     n 
    
   
  
    n 
   
  
n ) 为优化问题的候选解, 定义  
 
  
   
    
    
      X 
     
    
      p 
     
    
   
  
    \boldsymbol{X}_p 
   
  
Xp​ 用于在  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 维空间 中搜索,其中  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 为决策变量的维度。这样, 在卷积 优化算法中, 种群的位置向量  
 
  
   
   
     X 
    
   
  
    \boldsymbol{X} 
   
  
X 由维度为  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 的  
 
  
   
   
     n 
    
   
  
    n 
   
  
n 个个体组成, 则种群的位置向量  
 
  
   
   
     X 
    
   
  
    \boldsymbol{X} 
   
  
X 由  
 
  
   
   
     n 
    
   
     × 
    
   
     d 
    
   
  
    n \times d 
   
  
n×d 阶矩阵 构成,有

  
   
    
     
      
      
       
       
         X 
        
       
         = 
        
        
        
          [ 
         
         
          
           
            
             
             
               X 
              
             
               1 
              
             
            
           
          
          
           
            
             
             
               ⋮ 
              
              
               
              
             
            
           
          
          
           
            
             
             
               X 
              
             
               n 
              
             
            
           
          
         
        
          ] 
         
        
       
         = 
        
        
        
          [ 
         
         
          
           
            
             
             
               x 
              
             
               11 
              
             
            
           
           
            
            
              ⋯ 
             
            
           
           
            
             
             
               x 
              
              
              
                1 
               
              
                d 
               
              
             
            
           
          
          
           
            
             
             
               ⋮ 
              
              
               
              
             
            
           
           
            
             
            
           
           
            
             
             
               ⋮ 
              
              
               
              
             
            
           
          
          
           
            
             
             
               x 
              
              
              
                n 
               
              
                1 
               
              
             
            
           
           
            
            
              ⋯ 
             
            
           
           
            
             
             
               x 
              
              
              
                n 
               
              
                d 
               
              
             
            
           
          
         
        
          ] 
         
        
       
      
      
      
      
        (1) 
       
      
     
    
   
     \boldsymbol{X}=\left[\begin{array}{c} \boldsymbol{X}_1 \\ \vdots \\ \boldsymbol{X}_n \end{array}\right]=\left[\begin{array}{ccc} x_{11} & \cdots & x_{1 d} \\ \vdots & & \vdots \\ x_{n 1} & \cdots & x_{n d} \end{array}\right] \tag{1} 
    
   
 X=​X1​⋮Xn​​​=​x11​⋮xn1​​⋯⋯​x1d​⋮xnd​​​(1)

     C 
    
   
     O 
    
   
     A 
    
   
  
    \mathrm{COA} 
   
  
COA 中, 种群的位置向量  
 
  
   
   
     X 
    
   
  
    X 
   
  
X 的适应度值为

  
   
    
     
      
      
       
        
        
          F 
         
        
          X 
         
        
       
         = 
        
        
        
          [ 
         
         
          
           
            
             
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
               
                 1 
                
               
              
                ) 
               
              
             
            
           
          
          
           
            
             
             
               ⋮ 
              
              
               
              
             
            
           
          
          
           
            
             
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
               
                 n 
                
               
              
                ) 
               
              
             
            
           
          
         
        
          ] 
         
        
       
         = 
        
        
        
          [ 
         
         
          
           
            
             
             
               f 
              
              
              
                ( 
               
               
               
                 [ 
                
                
                 
                  
                   
                    
                    
                      x 
                     
                    
                      11 
                     
                    
                   
                  
                  
                   
                    
                    
                      x 
                     
                    
                      12 
                     
                    
                   
                  
                  
                   
                   
                     ⋯ 
                    
                   
                  
                  
                   
                    
                    
                      x 
                     
                     
                     
                       1 
                      
                     
                       d 
                      
                     
                    
                   
                  
                 
                
               
                 ] 
                
               
              
                ) 
               
              
             
            
           
          
          
           
            
             
            
           
           
            
             
             
               ⋮ 
              
              
               
              
             
            
           
           
            
             
            
           
           
            
             
            
           
          
          
           
            
             
             
               f 
              
              
              
                ( 
               
               
               
                 [ 
                
                
                 
                  
                   
                    
                    
                      x 
                     
                     
                     
                       n 
                      
                     
                       1 
                      
                     
                    
                   
                  
                  
                   
                    
                    
                      x 
                     
                     
                     
                       n 
                      
                     
                       2 
                      
                     
                    
                   
                  
                  
                   
                   
                     ⋯ 
                    
                   
                  
                  
                   
                    
                    
                      x 
                     
                     
                     
                       n 
                      
                     
                       d 
                      
                     
                    
                   
                  
                 
                
               
                 ] 
                
               
              
                ) 
               
              
             
            
           
          
         
        
          ] 
         
        
       
      
      
      
      
        (2) 
       
      
     
    
   
     \boldsymbol{F}_X=\left[\begin{array}{c} f\left(\boldsymbol{X}_1\right) \\ \vdots \\ f\left(\boldsymbol{X}_n\right) \end{array}\right]=\left[\begin{array}{rrrr} f\left(\left[\begin{array}{rrrr} x_{11} & x_{12} & \cdots & x_{1 d} \end{array}\right]\right) \\ & \vdots & & \\ f\left(\left[\begin{array}{rrrr} x_{n 1} & x_{n 2} & \cdots & x_{n d} \end{array}\right]\right) \end{array}\right]\tag{2} 
    
   
 FX​=​f(X1​)⋮f(Xn​)​​=​f([x11​​x12​​⋯​x1d​​])f([xn1​​xn2​​⋯​xnd​​])​⋮​​​​(2)

式中:

     f 
    
    
    
      ( 
     
     
     
       X 
      
     
       p 
      
     
    
      ) 
     
    
   
  
    f\left(\boldsymbol{X}_p\right) 
   
  
f(Xp​) 表示适应度函数, 也称目标函数。

     C 
    
   
     O 
    
   
     A 
    
   
  
    \mathrm{COA} 
   
  
COA 中,初始种群的位置向量  
 
  
   
    
    
      X 
     
    
      0 
     
    
   
  
    \boldsymbol{X}^0 
   
  
X0 在  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 维搜 索空间中随机生成, 每个个体的位置向量  
 
  
   
    
    
      X 
     
    
      p 
     
    
      0 
     
    
   
  
    \boldsymbol{X}_p^0 
   
  
Xp0​ 的初始 化可定义为

  
   
    
     
      
      
       
        
        
          X 
         
        
          p 
         
        
          0 
         
        
       
         = 
        
        
        
          l 
         
        
          p 
         
        
       
         + 
        
        
        
          r 
         
        
          a 
         
        
          n 
         
        
          d 
         
        
       
         ⋅ 
        
        
        
          ( 
         
         
         
           u 
          
         
           p 
          
         
        
          , 
         
         
         
           l 
          
         
           p 
          
         
        
          ) 
         
        
       
      
      
      
      
        (3) 
       
      
     
    
   
     \boldsymbol{X}_p^0=\boldsymbol{l}_p+\mathrm{rand} \cdot\left(\boldsymbol{u}_p, \boldsymbol{l}_p\right)\tag{3} 
    
   
 Xp0​=lp​+rand⋅(up​,lp​)(3)

式中:

      l 
     
    
      p 
     
    
   
  
    \boldsymbol{l}_p 
   
  
lp​ 为一个  
 
  
   
   
     1 
    
   
     × 
    
   
     d 
    
   
  
    1 \times d 
   
  
1×d 阶矩阵, 为第  
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个个体的下限;  
 
  
   
    
    
      u 
     
    
      p 
     
    
   
  
    \boldsymbol{u}_p 
   
  
up​ 为一个  
 
  
   
   
     1 
    
   
     × 
    
   
     d 
    
   
  
    1 \times d 
   
  
1×d 阶矩阵, 为第  
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个个体的上限; rand 为  
 
  
   
   
     [ 
    
   
     0 
    
   
     , 
    
   
     1 
    
   
     ] 
    
   
  
    [0,1] 
   
  
[0,1] 之间的随机数。

1.2 卷积搜索机制

卷积搜索过程分为纵向卷积位置更新、横向卷积位置更新、区域卷积位置更新和综合位置更新 4个步骤。

1.2.1 纵向卷积位置更新

定义纵向卷积核为

          K 
         
        
          L 
         
        
       
         = 
        
       
         2 
        
       
         × 
        
       
         rand 
        
       
         ⁡ 
        
       
         ( 
        
       
         k 
        
       
         , 
        
       
         1 
        
       
         ) 
        
       
         − 
        
        
        
          I 
         
        
          L 
         
        
       
      
      
      
      
        (4) 
       
      
     
    
   
     \boldsymbol{K}_{\mathrm{L}}=2 \times \operatorname{rand}(k, 1)-\boldsymbol{I}_{\mathrm{L}}\tag{4} 
    
   
 KL​=2×rand(k,1)−IL​(4)

式中:

      K 
     
    
      L 
     
    
   
  
    \boldsymbol{K}_{\mathrm{L}} 
   
  
KL​ 为一个  
 
  
   
   
     k 
    
   
     × 
    
   
     1 
    
   
  
    k \times 1 
   
  
k×1 阶矩阵, 为纵向卷积核, 其中  
 
  
   
   
     k 
    
   
  
    k 
   
  
k 为纵向卷积核的高, 1 为纵向卷积核的宽;  
 
  
   
   
     rand 
    
   
     ⁡ 
    
   
     ( 
    
   
     k 
    
   
     , 
    
   
     1 
    
   
     ) 
    
   
  
    \operatorname{rand}(k, 1) 
   
  
rand(k,1) 为一个  
 
  
   
   
     k 
    
   
     × 
    
   
     1 
    
   
  
    k \times 1 
   
  
k×1 阶矩阵,每个元素为  
 
  
   
   
     [ 
    
   
     0 
    
   
     , 
    
   
     1 
    
   
     ] 
    
   
  
    [0,1] 
   
  
[0,1] 之间的随机 数;  
 
  
   
    
    
      I 
     
    
      L 
     
    
   
  
    \boldsymbol{I}_{\mathrm{L}} 
   
  
IL​ 为一个  
 
  
   
   
     k 
    
   
     × 
    
   
     1 
    
   
  
    k \times 1 
   
  
k×1 阶矩阵, 所有元素为 1 。 定义纵向卷积为

  
   
    
     
      
      
       
        
        
          X 
         
        
          L 
         
        
          t 
         
        
       
         = 
        
        
        
          X 
         
        
          t 
         
        
       
         ∗ 
        
        
        
          K 
         
        
          L 
         
        
       
      
      
      
      
        (5) 
       
      
     
    
   
     \boldsymbol{X}_{\mathrm{L}}^t=\boldsymbol{X}^t * \boldsymbol{K}_{\mathrm{L}}\tag{5} 
    
   
 XLt​=Xt∗KL​(5)

式中:

     t 
    
   
  
    t 
   
  
t 为当前迭代次数;  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    X^t 
   
  
Xt 为一个  
 
  
   
   
     n 
    
   
     × 
    
   
     d 
    
   
  
    n \times d 
   
  
n×d 阶矩阵, 为 第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代种群的位置向量;  
 
  
   
    
    
      X 
     
    
      L 
     
    
      t 
     
    
   
  
    X_{\mathrm{L}}^t 
   
  
XLt​ 为一个  
 
  
   
   
     n 
    
   
     × 
    
   
     d 
    
   
  
    n \times d 
   
  
n×d 阶矩阵, 为 第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代纵向卷积位置更新后的种群的位置向量。

比较

      X 
     
    
      L 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{L}}^t 
   
  
XLt​ 和  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中每个个体位置的适应度值的大 小,择优替换掉  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中个体位置, 则有

  
   
    
     
      
      
       
        
        
          X 
         
        
          p 
         
        
          t 
         
        
       
         = 
        
        
        
          { 
         
         
          
           
            
             
              
              
                X 
               
               
               
                 L 
                
               
                 p 
                
               
              
                t 
               
              
             
               , 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
                
                
                  L 
                 
                
                  p 
                 
                
               
                 t 
                
               
              
                ) 
               
              
             
               < 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
               
                 p 
                
               
                 t 
                
               
              
                ) 
               
              
             
               ; 
              
             
            
           
          
          
           
            
             
              
              
                X 
               
              
                p 
               
              
                t 
               
              
             
               , 
              
             
                else 。 
              
             
            
           
          
         
        
       
      
      
      
      
        (6) 
       
      
     
    
   
     \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{Lp}}^t, f\left(\boldsymbol{X}_{\mathrm{Lp}}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } 。 \end{array}\right.\tag{6} 
    
   
 Xpt​={XLpt​,f(XLpt​)<f(Xpt​);Xpt​, else 。​(6)

式中:

      X 
     
    
      p 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_p^t 
   
  
Xpt​ 为第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代种群的第  
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个个体位置;  
 
  
   
    
    
      X 
     
     
     
       L 
      
     
       p 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{L} p}^t 
   
  
XLpt​ 为 第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代纵向卷积位置更新后的种群的第  
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个个体 位置。

1.2.2 横向卷积位置更新

定义横向卷积核为

          K 
         
        
          T 
         
        
       
         = 
        
       
         2 
        
       
         × 
        
       
         rand 
        
       
         ⁡ 
        
       
         ( 
        
       
         k 
        
       
         , 
        
       
         1 
        
       
         ) 
        
       
         − 
        
        
        
          I 
         
        
          T 
         
        
       
      
      
      
      
        (7) 
       
      
     
    
   
     \boldsymbol{K}_{\mathrm{T}}=2 \times \operatorname{rand}(k, 1)-\boldsymbol{I}_{\mathrm{T}} \tag{7} 
    
   
 KT​=2×rand(k,1)−IT​(7)

式中:

      K 
     
    
      T 
     
    
   
  
    \boldsymbol{K}_{\mathrm{T}} 
   
  
KT​ 为一个  
 
  
   
   
     1 
    
   
     × 
    
   
     k 
    
   
  
    1 \times k 
   
  
1×k 阶矩阵, 为横向卷积核, 其中 1 为横向卷积核的高,  
 
  
   
   
     k 
    
   
  
    k 
   
  
k 为横向卷积核的宽;  
 
  
   
   
     rand 
    
   
     ⁡ 
    
   
     ( 
    
   
     1 
    
   
     , 
    
   
     k 
    
   
     ) 
    
   
  
    \operatorname{rand}(1, k) 
   
  
rand(1,k) 为一个  
 
  
   
   
     1 
    
   
     × 
    
   
     k 
    
   
  
    1 \times k 
   
  
1×k 阶矩阵,每个元素为  
 
  
   
   
     [ 
    
   
     0 
    
   
     , 
    
   
     1 
    
   
     ] 
    
   
  
    [0,1] 
   
  
[0,1] 之间的随机 数;  
 
  
   
    
    
      I 
     
    
      T 
     
    
   
  
    \boldsymbol{I}_{\mathrm{T}} 
   
  
IT​ 为一个  
 
  
   
   
     1 
    
   
     × 
    
   
     k 
    
   
  
    1 \times k 
   
  
1×k 阶矩阵,所有元素为 1 。

定义横向卷积为

          X 
         
        
          T 
         
        
          t 
         
        
       
         = 
        
        
        
          X 
         
        
          t 
         
        
       
         ∗ 
        
        
        
          K 
         
        
          T 
         
        
       
      
      
      
      
        (8) 
       
      
     
    
   
     \boldsymbol{X}_{\mathrm{T}}^t=\boldsymbol{X}^t * \boldsymbol{K}_{\mathrm{T}} \tag{8} 
    
   
 XTt​=Xt∗KT​(8)

式中:

      X 
     
    
      T 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{T}}^t 
   
  
XTt​ 为一个  
 
  
   
   
     n 
    
   
     × 
    
   
     d 
    
   
  
    n \times d 
   
  
n×d 阶矩阵, 为横向卷积更新后的 种群的位置向量。

比较

      X 
     
    
      T 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{T}}^t 
   
  
XTt​ 和  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中每个个体位置的适应度值的大 小,择优替换掉  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中个体位置,则有

  
   
    
     
      
      
       
        
        
          X 
         
        
          p 
         
        
          t 
         
        
       
         = 
        
        
        
          { 
         
         
          
           
            
             
              
              
                X 
               
               
               
                 T 
                
               
                 p 
                
               
              
                t 
               
              
             
               , 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
                
                
                  T 
                 
                
                  p 
                 
                
               
                 t 
                
               
              
                ) 
               
              
             
               < 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
               
                 p 
                
               
                 t 
                
               
              
                ) 
               
              
             
               ; 
              
             
            
           
          
          
           
            
             
              
              
                X 
               
              
                p 
               
              
                t 
               
              
             
               , 
              
             
                else  
              
             
            
           
          
         
        
       
      
      
      
      
        (9) 
       
      
     
    
   
     \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{T}_p}^t, f\left(\boldsymbol{X}_{\mathrm{T}_p}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } \end{array}\right.\tag{9} 
    
   
 Xpt​={XTp​t​,f(XTp​t​)<f(Xpt​);Xpt​, else ​(9)

式中:

      X 
     
     
     
       T 
      
     
       p 
      
     
    
      t 
     
    
   
  
    X_{\mathrm{T}_p}^t 
   
  
XTp​t​ 为第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代横向卷积位置更新后的种群的第 
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个个体位置。

1.2.3 区域卷积位置更新

定义区域卷积核为

          K 
         
        
          R 
         
        
       
         = 
        
       
         2 
        
       
         × 
        
       
         rand 
        
       
         ⁡ 
        
       
         ( 
        
       
         k 
        
       
         , 
        
       
         1 
        
       
         ) 
        
       
         − 
        
        
        
          I 
         
        
          R 
         
        
       
      
      
      
      
        (10) 
       
      
     
    
   
     \boldsymbol{K}_{\mathrm{R}}=2 \times \operatorname{rand}(k, 1)-\boldsymbol{I}_{\mathrm{R}} \tag{10} 
    
   
 KR​=2×rand(k,1)−IR​(10)

式中:

      K 
     
    
      R 
     
    
   
  
    \boldsymbol{K}_{\mathrm{R}} 
   
  
KR​ 为一个  
 
  
   
   
     k 
    
   
     × 
    
   
     k 
    
   
  
    k \times k 
   
  
k×k 阶矩阵, 为区域卷积核, 其中  
 
  
   
   
     k 
    
   
  
    k 
   
  
k 为区域卷积核的高和宽;  
 
  
   
   
     rand 
    
   
     ⁡ 
    
   
     ( 
    
   
     k 
    
   
     , 
    
   
     k 
    
   
     ) 
    
   
  
    \operatorname{rand}(k, k) 
   
  
rand(k,k) 为一个  
 
  
   
   
     k 
    
   
     × 
    
   
     k 
    
   
  
    k \times k 
   
  
k×k 阶 矩阵,每个元素为  
 
  
   
   
     [ 
    
   
     0 
    
   
     , 
    
   
     1 
    
   
     ] 
    
   
  
    [0,1] 
   
  
[0,1] 之间的随机数;  
 
  
   
    
    
      I 
     
    
      R 
     
    
   
  
    \boldsymbol{I}_{\mathrm{R}} 
   
  
IR​ 为一个  
 
  
   
   
     k 
    
   
     × 
    
   
     k 
    
   
  
    k \times k 
   
  
k×k 阶矩阵,所有元素为 1 。

定义区域卷积为

          X 
         
        
          R 
         
        
          t 
         
        
       
         = 
        
        
        
          X 
         
        
          t 
         
        
       
         ∗ 
        
        
        
          K 
         
        
          R 
         
        
       
      
      
      
      
        (11) 
       
      
     
    
   
     \boldsymbol{X}_{\mathrm{R}}^t=\boldsymbol{X}^t * \boldsymbol{K}_{\mathrm{R}} \tag{11} 
    
   
 XRt​=Xt∗KR​(11)

式中:

      X 
     
    
      R 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{R}}^t 
   
  
XRt​ 为一个  
 
  
   
   
     n 
    
   
     × 
    
   
     d 
    
   
  
    n \times d 
   
  
n×d 阶矩阵, 为区域卷积更新后的 种群的位置向量。

比较

      X 
     
    
      R 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{R}}^t 
   
  
XRt​ 和  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中每个个体位置的适应度值的大 小,择优替换掉  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    X^t 
   
  
Xt 中个体位置, 则有

  
   
    
     
      
      
       
        
        
          X 
         
        
          p 
         
        
          t 
         
        
       
         = 
        
        
        
          { 
         
         
          
           
            
             
              
              
                X 
               
               
               
                 R 
                
               
                 p 
                
               
              
                t 
               
              
             
               , 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
                
                
                  R 
                 
                
                  p 
                 
                
               
                 t 
                
               
              
                ) 
               
              
             
               < 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
               
                 p 
                
               
                 t 
                
               
              
                ) 
               
              
             
               ; 
              
             
            
           
          
          
           
            
             
              
              
                X 
               
              
                p 
               
              
                t 
               
              
             
               , 
              
             
                else  
              
             
            
           
          
         
        
       
      
      
      
      
        (12) 
       
      
     
    
   
     \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{R} p}^t, f\left(\boldsymbol{X}_{\mathrm{R} p}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } \end{array}\right. \tag{12} 
    
   
 Xpt​={XRpt​,f(XRpt​)<f(Xpt​);Xpt​, else ​(12)

式中:

      X 
     
     
     
       R 
      
     
       p 
      
     
    
      t 
     
    
   
  
    X_{\mathrm{R} p}^t 
   
  
XRpt​ 为第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代区域卷积位置更新后的种群的第  
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个个体位置。

1.2.4 综合位置更新

在综合位置更新阶段, 将第

     t 
    
   
  
    t 
   
  
t 代纵向卷积更新 后的种群的位置向量  
 
  
   
    
    
      X 
     
    
      L 
     
    
      t 
     
    
   
  
    X_{\mathrm{L}}^t 
   
  
XLt​, 第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代横向卷积更新后的 种群的位置向量  
 
  
   
    
    
      X 
     
    
      T 
     
    
      t 
     
    
   
  
    X_{\mathrm{T}}^t 
   
  
XTt​ 和第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代区域卷积更新后的种 群的位置向量  
 
  
   
    
    
      X 
     
    
      R 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{R}}^t 
   
  
XRt​, 采用随机权重或等比例权重相加 合并为  
 
  
   
    
    
      X 
     
    
      s 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{s}}^t 
   
  
Xst​, 即

  
   
    
     
      
      
       
        
        
          X 
         
        
          S 
         
        
          t 
         
        
       
         = 
        
        
         
          
          
            r 
           
          
            1 
           
          
         
           × 
          
          
          
            X 
           
          
            L 
           
          
            t 
           
          
         
           + 
          
          
          
            r 
           
          
            2 
           
          
         
           × 
          
          
          
            X 
           
          
            T 
           
          
            t 
           
          
         
           + 
          
          
          
            r 
           
          
            3 
           
          
         
           × 
          
          
          
            X 
           
          
            R 
           
          
            t 
           
          
         
         
          
          
            r 
           
          
            1 
           
          
         
           + 
          
          
          
            r 
           
          
            2 
           
          
         
           + 
          
          
          
            r 
           
          
            3 
           
          
         
        
       
      
      
      
      
        (13) 
       
      
     
    
   
     \boldsymbol{X}_{\mathrm{S}}^t=\frac{r_1 \times \boldsymbol{X}_{\mathrm{L}}^t+r_2 \times \boldsymbol{X}_{\mathrm{T}}^t+r_3 \times \boldsymbol{X}_{\mathrm{R}}^t}{r_1+r_2+r_3} \tag{13} 
    
   
 XSt​=r1​+r2​+r3​r1​×XLt​+r2​×XTt​+r3​×XRt​​(13)

式中:

      r 
     
    
      1 
     
    
   
     、 
    
    
    
      r 
     
    
      2 
     
    
   
     、 
    
    
    
      r 
     
    
      3 
     
    
   
  
    r_1 、 r_2 、 r_3 
   
  
r1​、r2​、r3​ 均为  
 
  
   
   
     [ 
    
   
     0 
    
   
     , 
    
   
     1 
    
   
     ] 
    
   
  
    [0,1] 
   
  
[0,1] 之间的随机数, 特别地, 可 以令  
 
  
   
    
    
      r 
     
    
      1 
     
    
   
     = 
    
    
    
      r 
     
    
      2 
     
    
   
     = 
    
    
    
      r 
     
    
      3 
     
    
   
  
    r_1=r_2=r_3 
   
  
r1​=r2​=r3​, 以便进行等比例权重相加。

比较

      X 
     
    
      s 
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{s}}^t 
   
  
Xst​ 和  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中每个个体位置的适应度值的大 小,择优替换掉  
 
  
   
    
    
      X 
     
    
      t 
     
    
   
  
    X^t 
   
  
Xt 中个体位置, 则有

  
   
    
     
      
      
       
        
        
          X 
         
        
          p 
         
        
          t 
         
        
       
         = 
        
        
        
          { 
         
         
          
           
            
             
              
              
                X 
               
               
               
                 s 
                
               
                 p 
                
               
              
                t 
               
              
             
               , 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
                
                
                  s 
                 
                
                  p 
                 
                
                  p 
                 
                
               
                 t 
                
               
              
                ) 
               
              
             
               < 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
               
                 p 
                
               
                 t 
                
               
              
                ) 
               
              
             
               ; 
              
             
            
           
          
          
           
            
             
              
              
                X 
               
              
                p 
               
              
                t 
               
              
             
               , 
              
             
                else  
              
             
            
           
          
         
        
       
      
      
      
      
        (14) 
       
      
     
    
   
     \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{sp}}^t, f\left(\boldsymbol{X}_{\mathrm{spp}}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } \end{array}\right. \tag{14} 
    
   
 Xpt​={Xspt​,f(Xsppt​)<f(Xpt​);Xpt​, else ​(14)

式中:

      X 
     
     
     
       s 
      
     
       p 
      
     
    
      t 
     
    
   
  
    X_{\mathrm{s} p}^t 
   
  
Xspt​ 为第  
 
  
   
   
     t 
    
   
  
    t 
   
  
t 代综合位置更新后的种群的第  
 
  
   
   
     p 
    
   
  
    p 
   
  
p 个 个体位置。

最后, 计算

      X 
     
    
      t 
     
    
   
  
    \boldsymbol{X}^t 
   
  
Xt 中所有个体位置的适应度值, 并根据适应度值的大小进行排序, 选出最优 解  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 。

1.3 解质量增强机制

     C 
    
   
     O 
    
   
     A 
    
   
  
    \mathrm{COA} 
   
  
COA 中,解质量增强机制是对最优解  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 的  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 维搜索空间逐维进行带非惯性权重的高斯变异, 对最优解  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 进行扰动, 从而提高算法的局部搜 索能力。

对最优解

      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 中  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 维搜索空间逐维进行带非惯性权重的高斯变异, 则有

  
   
    
     
      
      
       
        
        
          X 
         
         
          
          
            n 
           
          
            b 
           
          
            s 
           
          
         
           ( 
          
         
           q 
          
         
           ) 
          
         
        
          t 
         
        
       
         = 
        
       
         ω 
        
       
         ⋅ 
        
        
        
          X 
         
        
          q 
         
        
          t 
         
        
       
         + 
        
       
         randn 
        
       
         ⁡ 
        
       
         ⋅ 
        
        
        
          X 
         
         
          
          
            b 
           
          
            s 
           
          
         
           ( 
          
         
           q 
          
         
           ) 
          
         
        
          t 
         
        
       
      
      
      
      
        (15) 
       
      
     
    
   
     \boldsymbol{X}_{\mathrm{nbs}(q)}^t=\omega \cdot \boldsymbol{X}_q^t+\operatorname{randn} \cdot \boldsymbol{X}_{\mathrm{bs}(q)}^t \tag{15} 
    
   
 Xnbs(q)t​=ω⋅Xqt​+randn⋅Xbs(q)t​(15)

式中:

      X 
     
     
      
      
        b 
       
      
        s 
       
      
     
       ( 
      
     
       q 
      
     
       ) 
      
     
    
      t 
     
    
   
     = 
    
    
     
     
       [ 
      
      
       
        
         
          
          
            x 
           
           
           
             1 
            
           
             q 
            
           
          
         
        
        
         
          
          
            x 
           
           
           
             2 
            
           
             q 
            
           
          
         
        
        
         
         
           ⋯ 
          
         
        
        
         
          
          
            x 
           
           
           
             n 
            
           
             q 
            
           
          
         
        
       
      
     
       ] 
      
     
    
      T 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}(q)}^t=\left[\begin{array}{llll}x_{1 q} & x_{2 q} & \cdots & x_{n q}\end{array}\right]^{\mathrm{T}} 
   
  
Xbs(q)t​=[x1q​​x2q​​⋯​xnq​​]T 为一个  
 
  
   
   
     n 
    
   
     × 
    
   
     1 
    
   
  
    n \times 1 
   
  
n×1 阶 矩阵, 为最优解  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 中  
 
  
   
   
     d 
    
   
  
    d 
   
  
d 维搜索空间中的第  
 
  
   
   
     q 
    
   
     ( 
    
   
     q 
    
   
     = 
    
   
     1 
    
   
  
    q(q=1 
   
  
q(q=1,  
 
  
   
   
     2 
    
   
     , 
    
   
     ⋯ 
     
   
     , 
    
   
     d 
    
   
     ) 
    
   
  
    2, \cdots, d) 
   
  
2,⋯,d) 维的位置;  
 
  
   
   
     ω 
    
   
     = 
    
   
     1 
    
   
     − 
    
    
     
     
       ( 
      
     
       t 
      
     
       / 
      
      
      
         iter  
       
      
        max  
       
      
     
       ) 
      
     
    
      2 
     
    
   
  
    \omega=1-\left(t / \text { iter }_{\text {max }}\right)^2 
   
  
ω=1−(t/ iter max ​)2, 其中 iter  
 
  
   
    
     
    
      max  
     
    
   
  
    _{\text {max }} 
   
  
max ​ 为最大迭代次数; randn 为一个满足均值为 0 , 方差 为 1 的标准正态分布的随机数;  
 
  
   
    
    
      X 
     
     
      
      
        n 
       
      
        b 
       
      
        s 
       
      
     
       ( 
      
     
       q 
      
     
       ) 
      
     
    
      t 
     
    
   
  
    X_{\mathrm{nbs}(q)}^t 
   
  
Xnbs(q)t​ 为一个  
 
  
   
   
     n 
    
   
     × 
    
   
     1 
    
   
  
    n \times 1 
   
  
n×1 阶矩阵, 为对最优解  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 的第  
 
  
   
   
     q 
    
   
  
    q 
   
  
q 维进行带非惯性权重 高斯变异后的第  
 
  
   
   
     q 
    
   
  
    q 
   
  
q 维位置。

令对第

     q 
    
   
  
    q 
   
  
q 维进行带非惯性权重高斯变异后的个 体位置为  
 
  
   
    
    
      X 
     
     
     
       ( 
      
     
       q 
      
     
       ) 
      
     
        nbs  
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{(q) \text { nbs }}^t 
   
  
X(q) nbs t​, 比较  
 
  
   
    
    
      X 
     
     
     
       ( 
      
     
       q 
      
     
       ) 
      
     
        nbs  
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{(q) \text { nbs }}^t 
   
  
X(q) nbs t​ 和  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    \boldsymbol{X}_{\mathrm{bs}}^t 
   
  
Xbst​ 的适应度值的大 小,择优替换掉  
 
  
   
    
    
      X 
     
     
     
       b 
      
     
       s 
      
     
    
      t 
     
    
   
  
    X_{\mathrm{bs}}^t 
   
  
Xbst​ 的个体位置,则有

  
   
    
     
      
      
       
        
        
          X 
         
         
         
           b 
          
         
           s 
          
         
        
          t 
         
        
       
         = 
        
        
        
          { 
         
         
          
           
            
             
              
              
                X 
               
               
               
                 ( 
                
               
                 q 
                
               
                 ) 
                
                
                
                  n 
                 
                
                  b 
                 
                
                  s 
                 
                
               
              
                t 
               
              
             
               , 
              
             
            
           
           
            
             
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
                
                
                  ( 
                 
                
                  q 
                 
                
                  ) 
                 
                 
                 
                   n 
                  
                 
                   b 
                  
                 
                   s 
                  
                 
                
               
                 t 
                
               
              
                ) 
               
              
             
               < 
              
             
               f 
              
              
              
                ( 
               
               
               
                 X 
                
                
                
                  b 
                 
                
                  s 
                 
                
               
                 t 
                
               
              
                ) 
               
              
             
               ; 
              
             
            
           
          
          
           
            
             
              
              
                X 
               
               
               
                 b 
                
               
                 s 
                
               
              
                t 
               
              
             
               , 
              
             
            
           
           
            
            
               else 。 
             
            
           
          
         
        
       
      
      
      
      
        (16) 
       
      
     
    
   
     \boldsymbol{X}_{\mathrm{bs}}^t= \begin{cases}\boldsymbol{X}_{(q) \mathrm{nbs}}^t, & f\left(\boldsymbol{X}_{(q) \mathrm{nbs}}^t\right)<f\left(\boldsymbol{X}_{\mathrm{bs}}^t\right) ; \\ \boldsymbol{X}_{\mathrm{bs}}^t, & \text { else } 。\end{cases} \tag{16} 
    
   
 Xbst​={X(q)nbst​,Xbst​,​f(X(q)nbst​)<f(Xbst​); else 。​(16)

**

      C 
     
    
      O 
     
    
      A 
     
    
   
     \mathrm{COA} 
    
   
 COA 运行过程的伪代码如下:**

输人: 种群大小为

     n 
    
   
  
    n 
   
  
n, 个体位置的维度为  
 
  
   
   
     d 
    
   
  
    d 
   
  
d, 最大 迭代次数为 iter  
 
  
   
    
     
    
      max  
     
    
   
  
    _{\text {max }} 
   
  
max ​, 卷积核参数为  
 
  
   
   
     k 
    
   
  
    k 
   
  
k 和适应度函数为  
 
  
   
   
     f 
    
    
    
      ( 
     
     
     
       X 
      
     
       p 
      
     
    
      ) 
     
    
   
     ( 
    
   
     p 
    
   
     = 
    
   
     1 
    
   
     , 
    
   
     2 
    
   
     , 
    
   
     ⋯ 
     
   
     , 
    
   
     n 
    
   
     ) 
    
   
  
    f\left(\boldsymbol{X}_p\right)(p=1,2, \cdots, n) 
   
  
f(Xp​)(p=1,2,⋯,n)

输出:最优解及其位置
1 : 初始化种群, 计算每个个体位置的适应度值, 选出最优个体的适应度值及其位置
2 : While

     t 
    
   
     ⩽ 
    
   
  
    t \leqslant 
   
  
t⩽ iter  
 
  
   
    
     
    
      max  
     
    
   
  
    _{\text {max }} 
   
  
max ​ do

3 : 在纵向卷积位置更新阶段, 由式 (4)- (6) 更 新种群的位置向量
4 : 在横向卷积位置更新阶段, 由式 (7)- (9) 更 新种群的位置向量
5 : 在区域卷积位置更新阶段, 由式 (10)-(12) 更新种群的位置向量
6 : 在综合位置更新阶段, 由式 (13)、(14) 更新 种群的位置向量
7 : 计算种群个体位置的适应度值, 选出最优解
8 : for

     q 
    
   
     = 
    
   
     1 
    
   
  
    q=1 
   
  
q=1 to  
 
  
   
   
     d 
    
   
  
    d 
   
  
d do

9 : 在解增强阶段, 由式 (15)、(16) 更新最优解 及其位置
10 : end for
11 : 更新全局最优解及其位置

     12 
    
   
     : 
    
   
     t 
    
   
     = 
    
   
     t 
    
   
     + 
    
   
     1 
    
   
  
    12: t=t+1 
   
  
12:t=t+1

13 : end while

2.实验结果

在这里插入图片描述

3.参考文献

[1]陈克伟,魏曙光,张嘉曦.基于二维卷积运算的智能优化算法[J].装甲兵学报,2023,2(01):102-108.

4.Matlab

5.Python


本文转载自: https://blog.csdn.net/u011835903/article/details/130000907
版权归原作者 智能算法研学社(Jack旭) 所有, 如有侵权,请联系我们删除。

“智能优化算法:卷积优化算法-2023 附代码”的评论:

还没有评论