一种非线性权重的自适应鲸鱼优化算法-附代码

一种非线性权重的自适应鲸鱼优化算法


摘要: 针对鲸鱼优化算法(WOA)收敛速度慢、求解精度低的问题,在优化算法性能的基础上保留鲸鱼优化算法结构简单的特点,提出了基于非线性权重的自适应鲸鱼优化算法(NWAWOA)。 通过非线性权重S1和S2对鲸鱼优化算法三个阶段的位置更新公式采用两种不同的加权策略,在平衡算法全局搜索与局部开发能力的同时,加快收敛速度、提高求解精度。

1.鲸鱼优化算法

基础鲸鱼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107559167

2. 改进鲸鱼优化算法

2.1 自适应权重

鲸鱼优化算法与其他群体智能算法一样,平衡全局搜索和局部开发能力十分重要。 权重对鲸鱼优化算法有重要作用,权重较大时,收敛速度较快,算法搜索的范围较大;权重较小时,搜索更加细致,不易错过最优解。

在鲸鱼优化算法中引人非线性权重 S 1 S_{1} S1 S 2 S_{2} S2, 分别对当前最优位置和包围步长进行自适应 调整,具体计算公式如下:
S 1 = − γ [ cos ⁡ ( π ∙ t T max ⁡ ) − λ ] (10) S_{1}=-\gamma\left[\cos \left(\pi \bullet \frac{t}{T_{\max }}\right)-\lambda\right] \tag{10} S1=γ[cos(πTmaxt)λ](10)

S 2 = γ [ cos ⁡ ( π ∙ t T max ⁡ ) + λ ] (11) S_{2}=\gamma\left[\cos \left(\pi \bullet \frac{t}{T_{\max }}\right)+\lambda\right] \tag{11} S2=γ[cos(πTmaxt)+λ](11)

其中, γ \gamma γ S 1 S_{1} S1 S 2 S_{2} S2 的变化范围取值, 取 γ = 0.5 ; λ \gamma=0.5 ; \lambda γ=0.5;λ S 1 S_{1} S1 S 2 S_{2} S2 的取值步长, 取 λ = 1 \lambda=1 λ=1

文献 中, 将权重 S 1 S_{1} S1 S 2 S_{2} S2 引人到式 (2) 和式(5) 中, 如下所示:
X ⃗ ( t + 1 ) = S 1 ∗ X ⃗ ∗ ( t ) − S 2 ∗ A ⃗ ∙ D ⃗ , ∣ A ∣ < 1 , p < 0.5 (12) \vec{X}(t+1)=S_{1} * \vec{X}^{*}(t)-S_{2} * \vec{A} \bullet \vec{D} , |A|<1, p<0.5 \tag{12} X (t+1)=S1X (t)S2A D ,A<1,p<0.5(12)

X ⃗ ( t + 1 ) = S 1 ∗ X ⃗ rand  ( t ) − S 2 ∗ A ⃗ ∙ D ⃗ , ∣ A ∣ ⩾ 1 , p < 0.5 (13) \vec{X}(t+1)=S_{1} * \vec{X}{ }_{\text {rand }}(t)-S_{2} * \vec{A} \bullet \vec{D} , |A| \geqslant 1, p<0.5 \tag{13} X (t+1)=S1X rand (t)S2A D ,A1,p<0.5(13)

笔者认为将权重 S 1 S_{1} S1 引人到位置上, 不符合智能优化的初衷,改进公式如下:
X ⃗ ( t + 1 ) = X ⃗ ∗ ( t ) − S 2 ∗ A ⃗ ∙ D ⃗ ∣ A ∣ < 1 , p < 0.5 (14) \vec{X}(t+1)=\vec{X}^{*}(t)-S_{2} * \vec{A} \bullet \vec{D} |A|<1, p<0.5 \tag{14} X (t+1)=X (t)S2A D A<1,p<0.5(14)

X ⃗ ( t + 1 ) = X ⃗ rand  ( t ) − S 2 ∗ A ⃗ ⋅ D ⃗ ∣ A ∣ ⩾ 1 , p < 0.5 (15) \vec{X}(t+1)=\vec{X}_{\text {rand }}(t)-S_{2} * \vec{A} \cdot \vec{D} |A| \geqslant 1, p<0.5 \tag{15} X (t+1)=X rand (t)S2A D A1,p<0.5(15)

同时受文献 [ 15 − 16 ] [15-16] [1516] 的启发, 对文献 [ 14 ] [14] [14] 中的螺 旋式位置更新公式即 :
X ⃗ ( t + 1 ) = S 1 ∗ X ⃗ ∗ ( t ) + D ⃗ ∙ e b l ∙ cos ⁡ ( 2 π l ) , p ⩾ 0.5 (16) \begin{gathered} \vec{X}(t+1)=S_{1} * \vec{X}^{*}(t)+\vec{D} \bullet \mathrm{e}^{b l} \bullet \cos (2 \pi l) , p \geqslant 0.5 \end{gathered} \tag{16} X (t+1)=S1X (t)+D eblcos(2πl),p0.5(16)
进行调整, 将权重同时与距离数据 D ⃗ \vec{D} D 相结合, 收敛 速度随迭代次数进行调整, 其改进公式为:
X ⃗ ( t + 1 ) = S 1 ∗ [ X ⃗ ∗ ( t ) + D ⃗ ∙ e b l ∙ cos ⁡ ( 2 π l ) ] , p ⩾ 0.5 (17) \begin{aligned} \vec{X}(t+1)=& S_{1} *\left[\vec{X}^{*}(t)+\right. &\left.\vec{D} \bullet \mathrm{e}^{b l} \bullet \cos (2 \pi l)\right], p \geqslant 0.5 \end{aligned} \tag{17} X (t+1)=S1[X (t)+D eblcos(2πl)],p0.5(17)
S 1 S_{1} S1 随迭代次数增加呈非线性递 增,使种群能充分向最优位置移动;而 S 2 S_{2} S2 随迭代次数增加呈非线性递减,在后期有较小步长而加快收敛速
度。 在平衡全局搜索和局部开发能力的同时,提高求解精度、加快收敛速度。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]赵传武,黄宝柱,阎跃观,代文晨,张建.一种非线性权重的自适应鲸鱼优化算法[J].计算机技术与发展,2020,30(10):7-13.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/125793604