请参考这里。
为了避免GWO算法陷入局部最优,本文不仅融入了WOA算法的螺旋泡网狩猎方式,同时也采用WOA算法中的随机概率因子来选择不同的狩猎行为。此外,WOA算法也易陷入局部最优且全局探索能力不强,因此需要通过基于Levy飞行算法的随机游走策略来提高算法的全局搜索能力以及提高种群的多样性。具体操作如下:
首先,按照蒙特卡洛方法生成随机向量 L e v y → \overrightarrow{Levy} Levy,公式如下: L e v y → = ( s 1 , s 2 , ⋯ , s n ) , s i = μ ∣ ν ∣ 1 / λ , i = 1 , 2 , ⋯ , n (1) \overrightarrow{Levy}=(s_1,s_2,\cdots,s_n),\,\,s_i=\frac{\mu}{|\nu|^{1/\lambda}},\,\,i=1,2,\cdots,n\tag{1} Levy=(s1,s2,⋯,sn),si=∣ν∣1/λμ,i=1,2,⋯,n(1)其中,参数 λ \lambda λ取1.5, μ \mu μ和 ν \nu ν服从标准差为 σ μ = [ Γ ( 1 + λ ) ∗ sin ( π ∗ λ / 2 ) Γ [ ( 1 + λ ) / 2 ] ∗ λ ∗ 2 ( λ − 1 ) / 2 ] 1 / λ \displaystyle\sigma_\mu=\left[\frac{\Gamma(1+\lambda)*\sin(\pi*\lambda/2)}{\Gamma[(1+\lambda)/2]*\lambda*2^{(\lambda-1)/2}}\right]^{1/\lambda} σμ=[Γ[(1+λ)/2]∗λ∗2(λ−1)/2Γ(1+λ)∗sin(π∗λ/2)]1/λ和 σ ν = 1 \sigma_\nu=1 σν=1的正态分布。然后,引入随机概率因子 p ∈ [ 0 , 1 ] p\in[0,1] p∈[0,1],当 p ≥ 0.5 p\geq0.5 p≥0.5时,灰狼群体根据最优个体的位置 X → α \overrightarrow{X}_\alpha Xα采用混合Levy飞行算法的螺旋泡网狩猎行为进行位置更新,即 X → ′ ( t ) = X → α ( t ) + L e v y → ⋅ ∣ X → α ( t ) − X → ( t ) ∣ ⋅ e b l ⋅ cos ( 2 π l ) (2) \overrightarrow X'(t)=\overrightarrow X_\alpha(t)+\overrightarrow{Levy}\cdot\left|\overrightarrow X_\alpha(t)-\overrightarrow X(t)\right|\cdot e^{bl}\cdot\cos(2\pi l)\tag{2} X′(t)=Xα(t)+Levy⋅∣∣∣Xα(t)−X(t)∣∣∣⋅ebl⋅cos(2πl)(2)其中, b b b为螺旋方程的常量系数,通常取 b = 1 b=1 b=1, l l l为 [ − 1 , 1 ] [-1,1] [−1,1]间的一个随机数。当 p < 0.5 p<0.5 p<0.5时,灰狼个体按照原始GWO模型进行包围狩猎。
为了提高灰狼优化算法的收敛速度,本文设计一种新的位置更新公式来替代原始公式,具体的数学表达式如下: W → 1 = ∣ X → 1 ∣ / ( ∣ X → 1 ∣ + ∣ X → 2 ∣ + ∣ X → 3 ∣ ) (3) \overrightarrow W_1=\left|\overrightarrow X_1\right|/(\left|\overrightarrow X_1\right|+\left|\overrightarrow X_2\right|+\left|\overrightarrow X_3\right|)\tag{3} W1=∣∣∣X1∣∣∣/(∣∣∣X1∣∣∣+∣∣∣X2∣∣∣+∣∣∣X3∣∣∣)(3) W → 2 = ∣ X → 2 ∣ / ( ∣ X → 1 ∣ + ∣ X → 2 ∣ + ∣ X → 3 ∣ ) (4) \overrightarrow W_2=\left|\overrightarrow X_2\right|/(\left|\overrightarrow X_1\right|+\left|\overrightarrow X_2\right|+\left|\overrightarrow X_3\right|)\tag{4} W2=∣∣∣X2∣∣∣/(∣∣∣X1∣∣∣+∣∣∣X2∣∣∣+∣∣∣X3∣∣∣)(4) W → 3 = ∣ X → 3 ∣ / ( ∣ X → 1 ∣ + ∣ X → 2 ∣ + ∣ X → 3 ∣ ) (5) \overrightarrow W_3=\left|\overrightarrow X_3\right|/(\left|\overrightarrow X_1\right|+\left|\overrightarrow X_2\right|+\left|\overrightarrow X_3\right|)\tag{5} W3=∣∣∣X3∣∣∣/(∣∣∣X1∣∣∣+∣∣∣X2∣∣∣+∣∣∣X3∣∣∣)(5) X → ′ ( t ) = W → 1 ⋅ ( X → 1 − X → α ) + W → 2 ⋅ ( X → 2 − X → β ) + W → 3 ⋅ ( X → 3 − X → δ ) (6) \overrightarrow X'(t)=\overrightarrow W_1\cdot\left(\overrightarrow X_1-\overrightarrow X_\alpha\right)+\overrightarrow W_2\cdot\left(\overrightarrow X_2-\overrightarrow X_\beta\right)+\overrightarrow W_3\cdot\left(\overrightarrow X_3-\overrightarrow X_\delta\right)\tag{6} X′(t)=W1⋅(X1−Xα)+W2⋅(X2−Xβ)+W3⋅(X3−Xδ)(6)并且这里 C → = 2 r → 1 (7) \overrightarrow C=2\overrightarrow r_1\tag{7} C=2r1(7)其中 r → 1 \overrightarrow r_1 r1取值与原始公式中的 r → 1 \overrightarrow r_1 r1相同。
为了提高GWO算法的求解精度,比较 X → ( t ) \overrightarrow X(t) X(t)和 X → ′ ( t ) \overrightarrow X'(t) X′(t)的适应度值,保留较小适应度值所对应的位置,作为本次更新后的位置 X → ( t + 1 ) \overrightarrow X(t+1) X(t+1)。具体操作如下:
若 f ( X → ′ ( t ) ) < f ( X → ( t ) ) f\left(\overrightarrow X'(t)\right)
混合灰狼优化(HWGWO)算法步骤如下:
步骤1 设置算法参数:种群规模 N N N,最大迭代次数 M a x _ i t e r Max\_iter Max_iter。初始化灰狼种群的位置 X → i ( 0 ) ( i = 1 , 2 , ⋯ , N ) \overrightarrow X_i(0)(i=1,2,\cdots,N) Xi(0)(i=1,2,⋯,N),令 t = 0 t=0 t=0。
步骤2 计算灰狼种群 X → i ( t ) \overrightarrow X_i(t) Xi(t)的适应度值大小,选择适应度最小的三只灰狼 X → α , X → β , X → δ \overrightarrow X_\alpha,\overrightarrow X_\beta,\overrightarrow X_\delta Xα,Xβ,Xδ。
步骤3 随机生成概率因子 p p p,随机数 l l l,设置 b = 1 b=1 b=1,并生成参数 A → \overrightarrow A A和 C → \overrightarrow C C。
步骤4 按照随机概率因子的大小选择不同的位置更新公式得到 X → ′ ( t ) \overrightarrow X'(t) X′(t)。
步骤5 计算 X → ′ ( t ) \overrightarrow X'(t) X′(t)的适应度值并与 X → i ( t ) \overrightarrow X_i(t) Xi(t)的适应度值比较,保留较小适应度值所对应的位置将其记为 X → i ( t + 1 ) \overrightarrow X_i(t+1) Xi(t+1)。判断是否满足最大迭代次数或者是否达到指定精度,若是则输出全局最优解 X → ∗ \overrightarrow X^* X∗,否则令 t = t + 1 t=t+1 t=t+1,并转入步骤2。
将HWGWO与GWO和WOA进行对比,以常用23个测试函数中的F1、F4(单峰函数/30维)、F10、F11(多峰函数/30维)、F19、F20(固定维度多峰函数/3维、6维)为例,实验设置种群规模为50,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:
函数:F1
HWGWO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 1.5796e-69, 最优值: 1.5621e-72, 平均值: 1.9259e-70, 标准差: 3.763e-70, 秩和检验: 1.2118e-12
WOA:最差值: 1.4022e-170, 最优值: 3.9e-183, 平均值: 4.9901e-172, 标准差: 0, 秩和检验: 1.2118e-12
函数:F4
HWGWO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 1.1227e-16, 最优值: 3.2946e-19, 平均值: 1.899e-17, 标准差: 3.0066e-17, 秩和检验: 1.2118e-12
WOA:最差值: 83.8686, 最优值: 6.7192e-06, 平均值: 32.3623, 标准差: 25.9957, 秩和检验: 1.2118e-12
函数:F10
HWGWO:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
GWO:最差值: 1.8652e-14, 最优值: 7.9936e-15, 平均值: 1.3323e-14, 标准差: 2.7598e-15, 秩和检验: 5.6393e-13
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 3.6119e-15, 标准差: 2.412e-15, 秩和检验: 2.5064e-07
函数:F11
HWGWO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 0.015431, 最优值: 0, 平均值: 0.0015168, 标准差: 0.0040977, 秩和检验: 0.041926
WOA:最差值: 0.055985, 最优值: 0, 平均值: 0.0036985, 标准差: 0.014076, 秩和检验: 0.1608
函数:F19
HWGWO:最差值: -3.8348, 最优值: -3.8597, 平均值: -3.853, 标准差: 0.0055526, 秩和检验: 1
GWO:最差值: -3.8549, 最优值: -3.8628, 平均值: -3.8613, 标准差: 0.0030306, 秩和检验: 9.2603e-09
WOA:最差值: -3.8549, 最优值: -3.8628, 平均值: -3.8613, 标准差: 0.0025266, 秩和检验: 2.6695e-09
函数:F20
HWGWO:最差值: -1.6047, 最优值: -3.1326, 平均值: -2.6827, 标准差: 0.42524, 秩和检验: 1
GWO:最差值: -3.0937, 最优值: -3.322, 平均值: -3.2722, 标准差: 0.069839, 秩和检验: 3.3384e-11
WOA:最差值: -3.1398, 最优值: -3.322, 平均值: -3.2657, 标准差: 0.071778, 秩和检验: 3.0199e-11
实验结果表明:HWGWO算法在求解精度、计算量和收敛速度上普遍好于GWO算法。
[1] 梁昔明, 李星, 龙文. 融合鲸鱼算法的混合灰狼优化算法[J]. 数学的实践与认识, 2022, 52(6): 130-138.