• 基于亨利气体溶解度优化算法的函数寻优算法


    一、理论基础

    1、亨利气体溶解度优化算法

    文献[1]提出了一种新的元启发式算法——亨利气体溶解度优化(Henry gas solubility optimization, HGSO)算法,该算法模拟在亨利定律约束下的行为来解决具有挑战性的优化问题。亨利定律是一个基本气体定律,它与在固定温度下溶解的特定气体的数量与特定类型和体积的液体有关。HGSO算法模拟气体的聚集行为,在搜索空间内平衡开发和探索,避免算法陷入局部最优。
    HGSO的数学模型如下所示:

    (1)步骤1:初始化过程

    气体的数量(种群大小 N N N)和气体的位置根据以下公式初始化: X i ( t + 1 ) = X min ⁡ + r × ( X max ⁡ − X min ⁡ ) (1) X_i(t+1)=X_{\min}+r\times(X_{\max}-X_{\min})\tag{1} Xi(t+1)=Xmin+r×(XmaxXmin)(1)其中, X ( i ) X_{(i)} X(i)表示 N N N个个体中第 i i i个气体的位置, r r r是0到1之间的随机数, X min ⁡ X_{\min} Xmin X max ⁡ X_{\max} Xmax是问题的边界, t t t是当前迭代次数。气体 i i i的数量、亨利常数 j ( H j ( t ) ) j(H_j(t)) j(Hj(t))的值、 j j j簇中气体 i i i的分压为 P i , j P_{i,j} Pi,j ∇ s o l E / R \nabla_{sol}E/R solE/R常数 j ( C i ) j(C_i) j(Ci)的值用以下公式初始化: H j ( t ) = l 1 × r a n d ( 0 , 1 ) , P i , j = l 2 × r a n d ( 0 , 1 ) , C j = l 3 × r a n d ( 0 , 1 ) (2) H_j(t)=l_1\times rand(0,1),P_{i,j}=l_2\times rand(0,1),C_j=l_3\times rand(0,1)\tag{2} Hj(t)=l1×rand(0,1),Pi,j=l2×rand(0,1),Cj=l3×rand(0,1)(2)其中, l 1 , l 2 , l 3 l_1, l_2, l_3 l1,l2,l3分别为 ( 5 E − 02 , 100 , 1 E − 02 ) (5E−02,100,1E−02) (5E02,100,1E02)的常数。

    (2)步骤2:分簇

    根据气体类型的数量,将种群代理划分为相等的簇。每个簇都有相似的气体,因此有相同的亨利常数值( H j H_j Hj)。

    (3)步骤3:评价

    对每个簇 j j j进行评价,以确定从同类型的其他气体中获得最高平衡状态的最佳气体。然后对气体进行排序,得到整个种群中的最优气体。

    (4)步骤4:更新亨利系数

    亨利系数按下式更新: H j ( t + 1 ) = H j ( t ) × exp ⁡ ( − C j × ( 1 / T ( t ) − 1 / T θ ) ) , T ( t ) = exp ⁡ ( − t / i t e r ) (3) H_j(t+1)=H_j(t)\times\exp\left(-C_j\times(1/T(t)-1/T^\theta)\right),T(t)=\exp(-t/iter)\tag{3} Hj(t+1)=Hj(t)×exp(Cj×(1/T(t)1/Tθ)),T(t)=exp(t/iter)(3)其中, H j H_j Hj为簇 j j j的亨利系数, T T T为温度, T θ T^\theta Tθ为等于298.15的常数, i t e r iter iter为最大迭代次数。

    (5)步骤5:更新溶解度

    溶解度按下式更新: S i , j ( t ) = K × H j ( t + 1 ) × P i , j ( t ) (4) S_{i,j}(t)=K\times H_j(t+1)\times P_{i,j}(t)\tag{4} Si,j(t)=K×Hj(t+1)×Pi,j(t)(4)其中, S i , j S_{i,j} Si,j为气体 i i i在簇 j j j中的溶解度, P i , j P_{i,j} Pi,j为气体 i i i在簇 j j j中的分压, K K K为常数。

    (6)步骤6:更新位置

    位置更新如下: X i , j ( t + 1 ) = X i , j ( t ) + F × r × γ × ( X i , b e s t ( t ) − X i , j ( t ) ) + F × r × α × ( S i , j ( t ) × X b e s t ( t ) − X i , j ( t ) ) (5) X_{i,j}(t+1)=X_{i,j}(t)+F\times r\times\gamma\times(X_{i,best}(t)-X_{i,j}(t))\\[2ex]+F\times r\times\alpha\times(S_{i,j}(t)\times X_{best}(t)-X_{i,j}(t))\tag{5} Xi,j(t+1)=Xi,j(t)+F×r×γ×(Xi,best(t)Xi,j(t))+F×r×α×(Si,j(t)×Xbest(t)Xi,j(t))(5) γ = β × exp ⁡ ( − F b e s t ( t ) + ε F i , j ( t ) + ε ) , ε = 0.05 (6) \gamma=\beta\times\exp\left(-\frac{F_{best}(t)+\varepsilon}{F_{i,j}(t)+\varepsilon}\right),\varepsilon=0.05\tag{6} γ=β×exp(Fi,j(t)+εFbest(t)+ε),ε=0.05(6)其中, X ( i , j ) X_{(i,j)} X(i,j)为气体 i i i在簇 j j j中得位置, r r r t t t分别为随机常数和当前迭代次数, X ( i , b e s t ) X_{(i,best)} X(i,best)为簇 j j j中气体 i i i的最佳位置,而 X b e s t X_{best} Xbest为种群的最佳位置。此外, γ \gamma γ是簇 i i i中气体 j j j与气体 j j j的相互作用力, α \alpha α是其他气体对簇 j j j中气体 i i i的等于1的影响值, β \beta β是常数。 F ( i , j ) F_{(i,j)} F(i,j)为簇 j j j中气体 i i i的适应度, F b e s t F_{best} Fbest为整个种群中最佳气体的适应度。 F F F是改变搜索代理方向的标志,提供多样性 = ± =± =±
    X ( i , b e s t ) X_{(i,best)} X(i,best) X b e s t X_{best} Xbest是负责平衡探索和开发能力的两个参数。其中 X ( i , b e s t ) X_{(i,best)} X(i,best)为簇 j j j中气体 i i i的最佳值, X b e s t X_{best} Xbest为种群中气体 i i i的最佳值。

    (7)步骤7:摆脱局部最优

    这一步用于摆脱局部最优。使用下列公式对最差的代理( N w N_w Nw)进行排序和选择: N w = N × ( r a n d ( c 2 − c 1 ) + c 1 ) , c 1 = 0.1 , c 2 = 0.2 (7) N_w=N\times(rand(c_2-c_1)+c_1),c_1=0.1,c_2=0.2\tag{7} Nw=N×(rand(c2c1)+c1),c1=0.1,c2=0.2(7)其中 N N N为搜索代理的数量。

    (8)步骤8:更新最差个体的位置

    G ( i , j ) = G min ⁡ ( i , j ) + r × ( G max ⁡ ( i , j ) − G min ⁡ ( i , j ) ) (8) G_{(i,j)}=G_{\min(i,j)}+r\times(G_{\max(i,j)}-G_{\min(i,j)})\tag{8} G(i,j)=Gmin(i,j)+r×(Gmax(i,j)Gmin(i,j))(8)其中, G ( i , j ) G_{(i,j)} G(i,j)为气体 i i i在簇 j j j中的位置, r r r为随机数, G min ⁡ G_{\min} Gmin G max ⁡ G_{\max} Gmax为问题的下界和上界。

    2、HGSO算法伪代码

    HGSO算法伪代码如图1所示。
    在这里插入图片描述

    图1 HGSO算法伪代码

    二、仿真实验与结果分析

    将HGSO与WOA、GSA、GWO、CS和PSO进行对比,以常用23个测试函数中的F3、F4(单峰函数/30维)、F9、F10(多峰函数/30维)、F17、F21(固定维度多峰函数/2维、4维)为例,实验设置种群规模为50,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    函数:F3
    HGSO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
    WOA:最差值: 26721.2896, 最优值: 869.6367, 平均值: 10028.754, 标准差: 6375.9941, 秩和检验: 1.2118e-12
    GSA:最差值: 491.6764, 最优值: 146.2229, 平均值: 268.2075, 标准差: 92.1835, 秩和检验: 1.2118e-12
    GWO:最差值: 1.4314e-17, 最优值: 1.9516e-24, 平均值: 5.1558e-19, 标准差: 2.6079e-18, 秩和检验: 1.2118e-12
    CS:最差值: 810.0449, 最优值: 218.9368, 平均值: 505.5444, 标准差: 121.9258, 秩和检验: 1.2118e-12
    PSO:最差值: 69061.5976, 最优值: 5871.4103, 平均值: 25972.9332, 标准差: 13939.9381, 秩和检验: 1.2118e-12
    函数:F4
    HGSO:最差值: 7.2527e-166, 最优值: 1.6784e-221, 平均值: 2.4176e-167, 标准差: 0, 秩和检验: 1
    WOA:最差值: 86.3704, 最优值: 0.059864, 平均值: 32.6374, 标准差: 29.0349, 秩和检验: 3.0199e-11
    GSA:最差值: 0.17874, 最优值: 2.5469e-09, 平均值: 0.005958, 标准差: 0.032633, 秩和检验: 3.0199e-11
    GWO:最差值: 1.7808e-16, 最优值: 2.4925e-19, 平均值: 1.7082e-17, 标准差: 3.5018e-17, 秩和检验: 3.0199e-11
    CS:最差值: 5.2226, 最优值: 2.3663, 平均值: 3.1258, 标准差: 0.61415, 秩和检验: 3.0199e-11
    PSO:最差值: 6.4504, 最优值: 0, 平均值: 0.9519, 标准差: 1.8834, 秩和检验: 0.0014908
    函数:F9
    HGSO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
    WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
    GSA:最差值: 24.874, 最优值: 10.9445, 平均值: 16.2842, 标准差: 3.8444, 秩和检验: 1.1805e-12
    GWO:最差值: 5.6843e-14, 最优值: 0, 平均值: 7.5791e-15, 标准差: 1.9653e-14, 秩和检验: 0.041774
    CS:最差值: 106.7827, 最优值: 65.4057, 平均值: 83.9938, 标准差: 10.8179, 秩和检验: 1.2118e-12
    PSO:最差值: 248.884, 最优值: 20.8577, 平均值: 148.6197, 标准差: 61.0108, 秩和检验: 1.2108e-12
    函数:F10
    HGSO:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
    WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 4.7962e-15, 标准差: 2.696e-15, 秩和检验: 4.162e-09
    GSA:最差值: 4.1973e-09, 最优值: 2.9739e-09, 平均值: 3.4605e-09, 标准差: 3.1288e-10, 秩和检验: 1.2118e-12
    GWO:最差值: 1.8652e-14, 最优值: 7.9936e-15, 平均值: 1.3678e-14, 标准差: 2.3969e-15, 秩和检验: 4.8215e-13
    CS:最差值: 7.4115, 最优值: 2.2361, 平均值: 3.937, 标准差: 1.5095, 秩和检验: 1.2118e-12
    PSO:最差值: 19.9668, 最优值: 8.8818e-16, 平均值: 13.87, 标准差: 7.1982, 秩和检验: 1.9088e-10
    函数:F17
    HGSO:最差值: 0.39928, 最优值: 0.39792, 平均值: 0.39837, 标准差: 0.00041578, 秩和检验: 1
    WOA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 5.7341e-07, 秩和检验: 3.0199e-11
    GSA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0, 秩和检验: 1.2118e-12
    GWO:最差值: 0.39812, 最优值: 0.39789, 平均值: 0.3979, 标准差: 4.3059e-05, 秩和检验: 8.1527e-11
    CS:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0, 秩和检验: 1.2118e-12
    PSO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0, 秩和检验: 1.2118e-12
    函数:F21
    HGSO:最差值: -4.5874, 最优值: -6.0631, 平均值: -4.9206, 标准差: 0.24896, 秩和检验: 1
    WOA:最差值: -5.0518, 最优值: -10.1532, 平均值: -9.6427, 标准差: 1.5557, 秩和检验: 5.4941e-11
    GSA:最差值: -3.1137, 最优值: -10.1532, 平均值: -5.2384, 标准差: 1.0726, 秩和检验: 1.7238e-08
    GWO:最差值: -5.0552, 最优值: -10.1531, 平均值: -9.4777, 标准差: 1.7508, 秩和检验: 6.6955e-11
    CS:最差值: -10.1532, 最优值: -10.1532, 平均值: -10.1532, 标准差: 3.5272e-13, 秩和检验: 1.9105e-11
    PSO:最差值: -2.6305, 最优值: -10.1532, 平均值: -8.7159, 标准差: 2.4609, 秩和检验: 1.4588e-09
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    实验结果表明:在求解具有挑战性的优化问题时,HGSO算法的结果优于其他算法。

    三、参考文献

    [1] Fatma A. Hashim, Essam H. Houssein, Mai S. Mabrouk, et al. Henry gas solubility optimization: A novel physics-based algorithm[J]. Future Generation Computer Systems, 2019, 101: 646-667.

  • 相关阅读:
    小白学习SpringCloud之Eureka
    WPF转义字符
    typecho 反序列化漏洞复现
    innodb与myisam的区别
    为什么使用Python保存的视频特别大!!(数据速率/总比特率)
    【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景
    Mysql 约束,基本查询,复合查询与函数
    谷粒商城----缓存与分布式锁
    Python (十二) 模块、包
    C语言三子棋,五子棋,n子棋的代码实现
  • 原文地址:https://blog.csdn.net/weixin_43821559/article/details/126345464