目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
 
- 3.结果展示
- 4.参考文献
- 5.代码获取
 
1.背景
2023年,J Bai受到双曲正弦余弦函数启发,提出了双曲正弦余弦优化算法(Sinh Cosh optimizer, SCHO)。

 
2.算法原理
2.1算法思想
SCHO灵感来源于Sinh函数和Cosh函数特性,其包括四个步骤:探索和开发阶段、有界搜索策略和切换机制。
2.2算法过程
探索阶段
探索阶段和开发阶段平衡基于:
  
      
       
        
         
          
          
           
           
             T 
            
           
             = 
            
           
             f 
            
           
             l 
            
           
             o 
            
           
             o 
            
           
             r 
            
            
            
              ( 
             
             
              
              
                M 
               
              
                a 
               
              
                x 
               
              
                _ 
               
              
                i 
               
              
                t 
               
              
                e 
               
              
                r 
               
              
                a 
               
              
                t 
               
              
                i 
               
              
                o 
               
              
                n 
               
              
              
              
                c 
               
              
                t 
               
              
             
            
              ) 
             
            
           
          
          
          
          
            (1) 
           
          
         
        
       
         T=floor\left(\frac{Max\_iteration}{ct}\right)\tag{1} 
        
       
     T=floor(ctMax_iteration)(1)

 探索位置更新:
  
      
       
        
         
          
          
           
            
            
              X 
             
             
             
               ( 
              
             
               i 
              
             
               , 
              
             
               j 
              
             
               ) 
              
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                  
                  
                    X 
                   
                   
                   
                     b 
                    
                   
                     e 
                    
                   
                     s 
                    
                   
                     t 
                    
                   
                   
                   
                     ( 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                 
                   + 
                  
                  
                  
                    r 
                   
                  
                    1 
                   
                  
                 
                   × 
                  
                  
                  
                    W 
                   
                  
                    1 
                   
                  
                 
                   × 
                  
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    i 
                   
                  
                 
                   , 
                  
                  
                  
                    r 
                   
                  
                    2 
                   
                  
                 
                   > 
                  
                 
                   0.5 
                  
                 
                
               
              
              
               
                
                 
                  
                  
                    X 
                   
                   
                   
                     b 
                    
                   
                     e 
                    
                   
                     s 
                    
                   
                     t 
                    
                   
                   
                   
                     ( 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                 
                   − 
                  
                  
                  
                    r 
                   
                  
                    1 
                   
                  
                 
                   × 
                  
                  
                  
                    W 
                   
                  
                    1 
                   
                  
                 
                   × 
                  
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    i 
                   
                  
                 
                   , 
                  
                  
                  
                    r 
                   
                  
                    2 
                   
                  
                 
                   < 
                  
                 
                   0.5 
                  
                 
                
               
              
             
            
           
          
          
          
          
            (2) 
           
          
         
        
       
         \left.X_{(i,j)}^{t+1}=\left\{\begin{array}{ll}X_{best}^{(j)}+r_1\times W_1\times X_{(i,j)}^i, r_2>0.5\\X_{best}^{(j)}-r_1\times W_1\times X_{(i,j)}^i, r_2<0.5\end{array}\right.\right.\tag{2} 
        
       
     X(i,j)t+1={Xbest(j)+r1×W1×X(i,j)i,r2>0.5Xbest(j)−r1×W1×X(i,j)i,r2<0.5(2)
 W1为第一探索阶段Xt (i,j)的权重系数,控制第一阶段候选解远离自身,逐步向最优解探索:
  
      
       
        
         
          
          
           
            
            
              W 
             
            
              1 
             
            
           
             = 
            
            
            
              r 
             
            
              3 
             
            
           
             × 
            
            
            
              a 
             
            
              1 
             
            
           
             × 
            
           
             ( 
            
           
             cosh 
            
           
              
            
            
            
              r 
             
            
              4 
             
            
           
             + 
            
           
             u 
            
           
             × 
            
           
             sinh 
            
           
              
            
            
            
              r 
             
            
              4 
             
            
           
             − 
            
           
             1 
            
           
             ) 
            
           
          
          
          
          
            (3) 
           
          
         
        
       
         W_1=r_3\times a_1\times(\cosh r_4+u\times\sinh r_4-1)\tag{3} 
        
       
     W1=r3×a1×(coshr4+u×sinhr4−1)(3)
 U是控制探索精度的敏感系数,参数a1:
  
      
       
        
         
          
          
           
            
            
              a 
             
            
              1 
             
            
           
             = 
            
           
             3 
            
           
             × 
            
            
            
              ( 
             
            
              − 
             
            
              1.3 
             
            
              × 
             
             
             
               t 
              
             
               Max_iteration 
              
             
            
              + 
             
            
              m 
             
            
              ) 
             
            
           
          
          
          
          
            (4) 
           
          
         
        
       
         a_1=3 \times\left(-1.3\times\frac{t}{\text{Max\_iteration}}+ m\right)\tag{4} 
        
       
     a1=3×(−1.3×Max_iterationt+m)(4)
 在第二阶段的探索中,搜索个体几乎不受最优解的影响,因此它们在当前位置的基础上非定向地探索下一个位置:
  
      
       
        
         
          
          
           
            
            
              X 
             
             
             
               ( 
              
             
               i 
              
             
               j 
              
             
               ) 
              
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    t 
                   
                  
                 
                   + 
                  
                 
                   ∣ 
                  
                 
                   ε 
                  
                 
                   × 
                  
                  
                  
                    W 
                   
                  
                    2 
                   
                  
                 
                   × 
                  
                  
                  
                    X 
                   
                   
                   
                     b 
                    
                   
                     e 
                    
                   
                     s 
                    
                   
                     t 
                    
                   
                   
                   
                     ( 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                 
                   − 
                  
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    t 
                   
                  
                 
                   ∣ 
                  
                 
                   , 
                  
                  
                  
                    r 
                   
                  
                    5 
                   
                  
                 
                   > 
                  
                 
                   0.5 
                  
                 
                
               
              
              
               
                
                 
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    t 
                   
                  
                 
                   − 
                  
                 
                   ∣ 
                  
                 
                   ε 
                  
                 
                   × 
                  
                  
                  
                    W 
                   
                  
                    2 
                   
                  
                 
                   × 
                  
                  
                  
                    X 
                   
                   
                   
                     b 
                    
                   
                     e 
                    
                   
                     s 
                    
                   
                     t 
                    
                   
                   
                   
                     ( 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                 
                   − 
                  
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    t 
                   
                  
                 
                   ∣ 
                  
                  
                  
                    r 
                   
                  
                    5 
                   
                  
                 
                   < 
                  
                 
                   0.5 
                  
                 
                
               
              
             
            
           
          
          
          
          
            (5) 
           
          
         
        
       
         \left.X_{(ij)}^{t+1}=\left\{\begin{array}{ll}X_{(i,j)}^t+\Big|\varepsilon\times W_2\times X_{best}^{(j)}-X_{(i,j)}^t\Big|, r_5>0.5\\X_{(i,j)}^t-\Big|\varepsilon\times W_2\times X_{best}^{(j)}-X_{(i,j)}^t\Big| r_5<0.5\end{array}\right.\right.\tag{5} 
        
       
     X(ij)t+1=⎩ 
               ⎨ 
               ⎧X(i,j)t+ 
                       ε×W2×Xbest(j)−X(i,j)t 
                       ,r5>0.5X(i,j)t− 
                       ε×W2×Xbest(j)−X(i,j)t 
                       r5<0.5(5)
 W2是第二阶段探索中X(j)最优的权重系数:
  
      
       
        
         
          
          
           
            
            
              W 
             
            
              2 
             
            
           
             = 
            
            
            
              r 
             
            
              6 
             
            
           
             × 
            
            
            
              a 
             
            
              2 
             
            
           
          
          
          
          
            (6) 
           
          
         
        
       
         W_2=r_6\times a_2\tag{6} 
        
       
     W2=r6×a2(6)
 a2是单调递减函数:
  
      
       
        
         
          
          
           
            
            
              a 
             
            
              2 
             
            
           
             = 
            
           
             2 
            
           
             × 
            
            
            
              ( 
             
            
              − 
             
             
             
               t 
              
              
              
                M 
               
              
                a 
               
              
                x 
               
              
                _ 
               
              
                i 
               
              
                t 
               
              
                e 
               
              
                r 
               
              
                a 
               
              
                t 
               
              
                i 
               
              
                o 
               
              
                n 
               
              
             
            
              + 
             
            
              n 
             
            
              ) 
             
            
           
          
          
          
          
            (7) 
           
          
         
        
       
         a_2=2 \times\left( -\frac{t}{Max\_iteration}+n\right)\tag{7} 
        
       
     a2=2×(−Max_iterationt+n)(7)
开发阶段
为了充分利用搜索空间,将开发分为两个阶段,并在整个迭代中进行。在第一个开发阶段,对X的附近空间进行开发:
  
      
       
        
         
          
          
           
            
            
              X 
             
             
             
               ( 
              
             
               i 
              
             
               , 
              
             
               j 
              
             
               ) 
              
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              { 
             
             
              
               
                
                 
                  
                  
                    X 
                   
                   
                   
                     b 
                    
                   
                     e 
                    
                   
                     s 
                    
                   
                     t 
                    
                   
                   
                   
                     ( 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                 
                   + 
                  
                  
                  
                    r 
                   
                  
                    7 
                   
                  
                 
                   × 
                  
                  
                  
                    W 
                   
                  
                    3 
                   
                  
                 
                   × 
                  
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    t 
                   
                  
                 
                   , 
                  
                  
                  
                    r 
                   
                  
                    8 
                   
                  
                 
                   > 
                  
                 
                   0.5 
                  
                 
                
               
              
              
               
                
                 
                  
                  
                    X 
                   
                   
                   
                     b 
                    
                   
                     e 
                    
                   
                     s 
                    
                   
                     t 
                    
                   
                   
                   
                     ( 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                 
                   − 
                  
                  
                  
                    r 
                   
                  
                    7 
                   
                  
                 
                   × 
                  
                  
                  
                    W 
                   
                  
                    3 
                   
                  
                 
                   × 
                  
                  
                  
                    X 
                   
                   
                   
                     ( 
                    
                   
                     i 
                    
                   
                     , 
                    
                   
                     j 
                    
                   
                     ) 
                    
                   
                  
                    t 
                   
                  
                 
                   , 
                  
                  
                  
                    r 
                   
                  
                    8 
                   
                  
                 
                   < 
                  
                 
                   0.5 
                  
                 
                
               
              
             
            
           
          
          
          
          
            (8) 
           
          
         
        
       
         X_{(i,j)}^{t+1}=\begin{cases} X_{best}^{(j)}+r_{7}\times W_{3}\times X_{(i,j)}^{t}, r_{8}>0.5\\ X_{best}^{(j)}-r_{7}\times W_{3}\times X_{(i,j)}^{t}, r_{8}<0.5\end{cases}\tag{8} 
        
       
     X(i,j)t+1={Xbest(j)+r7×W3×X(i,j)t,r8>0.5Xbest(j)−r7×W3×X(i,j)t,r8<0.5(8)
 W3是第一阶段开发的权重系数,控制候选解从近到远地开发自身周围的搜索空间:
  
      
       
        
         
          
          
           
            
            
              W 
             
            
              3 
             
            
           
             = 
            
            
            
              r 
             
            
              9 
             
            
           
             × 
            
            
            
              a 
             
            
              1 
             
            
           
             × 
            
           
             ( 
            
           
             cosh 
            
           
              
            
            
            
              r 
             
            
              10 
             
            
           
             + 
            
           
             u 
            
           
             × 
            
           
             sinh 
            
           
              
            
            
            
              r 
             
            
              10 
             
            
           
             ) 
            
           
          
          
          
          
            (9) 
           
          
         
        
       
         W_3=r_9\times a_1\times(\cosh r_{10}+u\times\sinh r_{10})\tag{9} 
        
       
     W3=r9×a1×(coshr10+u×sinhr10)(9)
 在开发的第二阶段,将执行候选解决方案围绕所获得的最优解进行深度开发,并且围绕最优解的开发强度将随着迭代的增加而增加:
  
      
       
        
         
          
          
           
            
            
              X 
             
             
             
               ( 
              
             
               i 
              
             
               , 
              
             
               j 
              
             
               ) 
              
             
             
             
               t 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
            
            
              X 
             
             
             
               ( 
              
             
               i 
              
             
               , 
              
             
               j 
              
             
               ) 
              
             
            
              t 
             
            
           
             + 
            
            
            
              r 
             
            
              11 
             
            
           
             × 
            
            
             
             
               sinh 
              
             
                
              
              
              
                r 
               
              
                12 
               
              
             
             
             
               c 
              
             
               o 
              
             
               s 
              
             
               h 
              
              
              
                r 
               
              
                12 
               
              
             
            
            
            
              ∣ 
             
             
             
               W 
              
             
               2 
              
             
            
              × 
             
             
             
               X 
              
              
              
                b 
               
              
                e 
               
              
                s 
               
              
                t 
               
              
              
              
                ( 
               
              
                j 
               
              
                ) 
               
              
             
            
              − 
             
             
             
               X 
              
              
              
                ( 
               
              
                i 
               
              
                , 
               
              
                j 
               
              
                ) 
               
              
             
               t 
              
             
            
              ∣ 
             
            
           
          
          
          
          
            (10) 
           
          
         
        
       
         X_{(i,j)}^{t+1}=X_{(i,j)}^{t}+r_{11}\times\frac{\sinh r_{12}}{coshr_{12}}\left|W_{2}\times X_{best}^{(j)}-X_{(i,j)}^{t}\right|\tag{10} 
        
       
     X(i,j)t+1=X(i,j)t+r11×coshr12sinhr12 
              W2×Xbest(j)−X(i,j)t 
              (10)
 W2控制第二开采阶段的程度。其绝对值在以后的迭代中逐渐增大,开发程度也随之增大。
有界搜索策略
为了充分利用潜在的搜索空间,SCHO在后期采用了一种类似于动物狩猎的策略,称为有界搜索策略。该策略的每一个起始点由下式计算:
  
      
       
        
         
          
          
           
           
             B 
            
            
            
              S 
             
             
             
               k 
              
             
               + 
              
             
               1 
              
             
            
           
             = 
            
           
             B 
            
            
            
              S 
             
            
              k 
             
            
           
             + 
            
           
             f 
            
           
             l 
            
           
             o 
            
           
             o 
            
           
             r 
            
           
             ( 
            
            
             
             
               M 
              
             
               a 
              
             
               x 
              
             
               _ 
              
             
               i 
              
             
               t 
              
             
               e 
              
             
               r 
              
             
               a 
              
             
               t 
              
             
               i 
              
             
               o 
              
             
               n 
              
             
               − 
              
             
               B 
              
              
              
                S 
               
              
                k 
               
              
             
            
              α 
             
            
           
             ) 
            
           
          
          
          
          
            (11) 
           
          
         
        
       
         BS_{k+1}=BS_k+floor\Bigg(\frac{Max\_iteration-BS_k}{\alpha}\Bigg)\tag{11} 
        
       
     BSk+1=BSk+floor(αMax_iteration−BSk)(11)
 α为控制潜力空间深部勘探开发精度的敏感系数,BS1表述为:
  
      
       
        
         
          
          
           
           
             B 
            
            
            
              S 
             
            
              1 
             
            
           
             = 
            
           
             f 
            
           
             l 
            
           
             o 
            
           
             o 
            
           
             r 
            
            
            
              ( 
             
             
              
              
                M 
               
              
                a 
               
              
                x 
               
              
                _ 
               
              
                i 
               
              
                t 
               
              
                e 
               
              
                r 
               
              
                a 
               
              
                t 
               
              
                i 
               
              
                o 
               
              
                n 
               
              
             
               β 
              
             
            
              ) 
             
            
           
          
          
          
          
            (12) 
           
          
         
        
       
         BS_1=floor\left(\frac{Max\_iteration}{\beta}\right)\tag{12} 
        
       
     BS1=floor(βMax_iteration)(12)
 其中β控制启动有界搜索策略的值,并设置为1.55。当SCHO每次都使用有界搜索策略时,上下界设置为:
  
      
       
        
         
          
          
           
           
             u 
            
            
            
              b 
             
            
              k 
             
            
           
             = 
            
            
            
              X 
             
             
             
               b 
              
             
               e 
              
             
               s 
              
             
               t 
              
             
             
             
               ( 
              
             
               j 
              
             
               ) 
              
             
            
           
             + 
            
            
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               t 
              
              
              
                M 
               
              
                a 
               
               
               
                 x 
                
               
                 − 
                
               
              
                i 
               
              
                t 
               
              
                e 
               
              
                r 
               
              
                a 
               
              
                t 
               
              
                i 
               
              
                o 
               
              
                n 
               
              
             
            
              ) 
             
            
           
             × 
            
            
            
              ∣ 
             
             
             
               X 
              
              
              
                b 
               
              
                e 
               
              
                s 
               
              
                t 
               
              
              
              
                ( 
               
              
                j 
               
              
                ) 
               
              
             
            
              − 
             
             
             
               X 
              
              
              
                s 
               
              
                e 
               
              
                c 
               
              
                o 
               
              
                n 
               
              
                d 
               
              
              
              
                ( 
               
              
                j 
               
              
                ) 
               
              
             
            
              ∣ 
             
            
            
           
             l 
            
            
            
              b 
             
            
              k 
             
            
           
             = 
            
            
            
              X 
             
             
             
               b 
              
             
               e 
              
             
               s 
              
             
               t 
              
             
             
             
               ( 
              
             
               j 
              
             
               ) 
              
             
            
           
             − 
            
            
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               t 
              
              
              
                M 
               
              
                a 
               
              
                x 
               
              
                _ 
               
              
                i 
               
              
                t 
               
              
                e 
               
              
                r 
               
              
                a 
               
              
                t 
               
              
                i 
               
              
                o 
               
              
                n 
               
              
             
            
              ) 
             
            
           
             × 
            
            
            
              ∣ 
             
             
             
               X 
              
              
              
                b 
               
              
                e 
               
              
                s 
               
              
                t 
               
              
              
              
                ( 
               
              
                j 
               
              
                ) 
               
              
             
            
              − 
             
             
             
               X 
              
              
              
                s 
               
              
                e 
               
              
                c 
               
              
                o 
               
              
                n 
               
              
                d 
               
              
              
              
                ( 
               
              
                j 
               
              
                ) 
               
              
             
            
              ∣ 
             
            
           
          
          
          
          
            (13) 
           
          
         
        
       
         ub_k=X_{best}^{(j)}+\left(1-\frac{t}{Max_-iteration}\right)\times\left|X_{best}^{(j)}-X_{second}^{(j)}\right|\\ lb_k=X_{best}^{(j)}-\left(1-\frac{t}{Max\_iteration}\right)\times\left|X_{best}^{(j)}-X_{second}^{(j)}\right|\tag{13} 
        
       
     ubk=Xbest(j)+(1−Max−iterationt)× 
              Xbest(j)−Xsecond(j) 
              lbk=Xbest(j)−(1−Max_iterationt)× 
              Xbest(j)−Xsecond(j) 
              (13)
切换机制
在SCHO中,提出了一种带有Sinh和Cosh的转换机制,实现了勘探和开发之间的转换:
  
      
       
        
         
          
          
           
           
             A 
            
           
             = 
            
            
            
              ( 
             
            
              p 
             
            
              − 
             
            
              q 
             
            
              × 
             
             
              
              
                ( 
               
               
               
                 t 
                
                
                
                  M 
                 
                
                  a 
                 
                 
                 
                   x 
                  
                 
                   − 
                  
                 
                
                  i 
                 
                
                  t 
                 
                
                  e 
                 
                
                  r 
                 
                
                  a 
                 
                
                  t 
                 
                
                  i 
                 
                
                  o 
                 
                
                  n 
                 
                
               
              
                ) 
               
              
              
              
                ( 
               
               
                
                
                  cosh 
                 
                
                   
                 
                 
                 
                   t 
                  
                  
                  
                    M 
                   
                  
                    a 
                   
                  
                    x 
                   
                  
                    − 
                   
                  
                    i 
                   
                  
                    t 
                   
                  
                    r 
                   
                  
                    a 
                   
                  
                    t 
                   
                  
                    i 
                   
                  
                    o 
                   
                  
                    n 
                   
                  
                 
                
                
                
                  sinh 
                 
                
                   
                 
                 
                 
                   t 
                  
                  
                  
                    M 
                   
                  
                    a 
                   
                  
                    x 
                   
                  
                    − 
                   
                  
                    i 
                   
                  
                    t 
                   
                  
                    e 
                   
                  
                    r 
                   
                  
                    a 
                   
                  
                    t 
                   
                  
                    i 
                   
                  
                    o 
                   
                  
                    n 
                   
                  
                 
                
               
              
                ) 
               
              
             
            
              ) 
             
            
           
             × 
            
            
            
              r 
             
            
              13 
             
            
           
          
          
          
          
            (14) 
           
          
         
        
       
         A=\left(p-q\times\left(\frac{t}{Max_-iteration}\right)^{\left(\frac{\cosh\frac{t}{Max-itration}}{\sinh\frac{t}{Max-iteration}}\right)}\right)\times r_{13}\tag{14} 
        
       
     A= 
              p−q×(Max−iterationt)(sinhMax−iterationtcoshMax−itrationt) 
              ×r13(14)
流程图

伪代码

3.结果展示

 
4.参考文献
[1] Bai J, Li Y, Zheng M, et al. A sinh cosh optimizer[J]. Knowledge-Based Systems, 2023, 282: 111081.



















