文献[1]提出了一种新的元启发式算法——亨利气体溶解度优化(Henry gas solubility optimization, HGSO)算法,该算法模拟在亨利定律约束下的行为来解决具有挑战性的优化问题。亨利定律是一个基本气体定律,它与在固定温度下溶解的特定气体的数量与特定类型和体积的液体有关。HGSO算法模拟气体的聚集行为,在搜索空间内平衡开发和探索,避免算法陷入局部最优。
HGSO的数学模型如下所示:
气体的数量(种群大小 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×(Xmax−Xmin)(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) (5E−02,100,1E−02)的常数。
根据气体类型的数量,将种群代理划分为相等的簇。每个簇都有相似的气体,因此有相同的亨利常数值( H j H_j Hj)。
对每个簇 j j j进行评价,以确定从同类型的其他气体中获得最高平衡状态的最佳气体。然后对气体进行排序,得到整个种群中的最优气体。
亨利系数按下式更新: 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为最大迭代次数。
溶解度按下式更新: 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为常数。
位置更新如下:
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的最佳值。
这一步用于摆脱局部最优。使用下列公式对最差的代理( 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(c2−c1)+c1),c1=0.1,c2=0.2(7)其中 N N N为搜索代理的数量。
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为问题的下界和上界。
HGSO算法伪代码如图1所示。
将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
实验结果表明:在求解具有挑战性的优化问题时,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.