一种全局搜索策略的鲸鱼优化算法-附代码

一种全局搜索策略的鲸鱼优化算法


摘要: 针对标准鲸鱼优化算法全局搜索能力不足、收敛速度慢等问题,提出一种全局搜索策略的鲸鱼优化算法. 在鲸鱼位置更新公式中加入自适应权重,动态调节最优位置的影响力,改善算法收敛速度;使用变螺旋位置更新策略,动态调整螺旋的形状,提升算法全局搜寻能力;引入最优邻域扰动策略,避免算法陷入局部最优解,解决算法早熟现象.

1.鲸鱼优化算法

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

2. 改进鲸鱼优化算法

2.1 自适应权重

受粒子群优化算法的启发, 在鲸鱼的位置更新中加入一 个随迭代次数变化的惯性权重 w w w. 在算法搜索的前期, 削弱最 优鲸鱼位置对当前个体位置调整的影响,提升算法在前期的 全局搜索能力. 随着迭代次数的增加, 逐渐提升最优鲸鱼位置 的影响力, 使得其他鲸鱼能够快速收玫到最优鲸鱼的位置, 提 升整个算法的收敛速度. 根据鲸鱼优化算法中更新次数的变 化,选用迭代次数 t t t 构成的自适应惯性权值如下:
w ( t ) = 0.2 cos ⁡ ( π 2 ⋅ ( 1 − t t max ⁡ ) ) (6) w(t)=0.2 \cos \left(\frac{\pi}{2} \cdot\left(1-\frac{t}{t_{\max }}\right)\right) \tag{6} w(t)=0.2cos(2π(1tmaxt))(6)
这样的惯性权值 w w w 具有一种在 [ 0 , 1 ] [0,1] [0,1] 之间非线性变化的 属性,由于 cos ⁡ \cos cos 函数在 [ 0 , π / 2 ] [0, \pi / 2] [0,π/2] 之间的变化特性, 使得权值在 算法初期较小,但变化速度稍快; 在算法后期其值较大, 但变 化速度会减缓,这样可以充分保证算法收玫性. 改进后的鲸鱼 优化算法位置更新公式为:

X ( t + 1 ) = { w ( t ) X ∗ ( t ) − A ⋅ ∣ C ⋅ X ∗ ( t ) − X ( t ) ∣ , p < 0.5 w ( t ) X ∗ ( t ) + D ⋅ e b l cos ⁡ ( 2 π l ) , p ⩾ 0.5 (7) X(t+1)=\left\{\begin{array}{l} w(t) X^{*}(t)-A \cdot\left|C \cdot X^{*}(t)-X(t)\right|, p<0.5 \\ w(t) X^{*}(t)+D \cdot e^{b l} \cos (2 \pi l), p \geqslant 0.5 \end{array}\right. \tag{7} X(t+1)={ w(t)X(t)ACX(t)X(t),p<0.5w(t)X(t)+Deblcos(2πl),p0.5(7)
X ( t + 1 ) = w ( t ) X rand  ( t ) − A ⋅ ∣ C ⋅ X r a n d ( t ) − X ( t ) ∣ (8) X(t+1)=w(t) X_{\text {rand }}(t)-A \cdot\left|C \cdot X_{r a n d}(t)-X(t)\right| \tag{8} X(t+1)=w(t)Xrand (t)ACXrand(t)X(t)(8)
在引入自适应权重之后的位置更新, 会根据迭代次数的 增加, 动态调节权重大小, 使得最优鲸鱼位置 X ∗ ( t ) X^{*}(t) X(t) 在不同时 刻对鲸鱼个体的指导不同. 随迭代次数的增加, 鲸鱼群的会集 中向最优位置方向靠近, 并且此时权值较大会使鲸鱼位置移 动速度加快,进而加快算法收敛速度.

2.2 变螺旋位置更新

鲸鱼在搜寻猎物的时候,会根据目标位置与自身位置之间的螺旋形状,调整每次位置更新的移动距离,在螺旋搜寻模型式 (3) 中, b b b 是控制螺旋形状的常数, 该参数 一般设置为常数, 每次位置更新按照不同的螺旋弧度进行速 度调节. 但是 b b b 设置为常值会导致鲸鱼在搜寻猎物时的螺旋 移动方式过于单一, 每次都是按照固定的螺旋线靠近目标, 极 易陷入局部最优解的误区, 削弱算法全局搜寻能力.
针对该问题, 为了使鲸鱼能够开发更多样的搜索路径进 行位置更新, 引入变螺旋搜寻的思想, 将参数 b b b 设计为随迭代 次数改变的变量, 动态调整鲸鱼搜寻时的螺旋形状, 增加鲸鱼 对末知区域的探索能力, 进而提升算法全局搜索能力. 结合自 适应权值后, 新的螺旋位置更新公式如下:
{ X ( t + 1 ) = w ( t ) X ∗ ( t ) + b D ⋅ e l cos ⁡ ( 2 π l ) b = e 5 ⋅ cos ⁡ ( π ⋅ ( 1 − t t max ⁡ ) ) (9) \left\{\begin{array}{l} X(t+1)=w(t) X^{*}(t)+b D \cdot e^{l} \cos (2 \pi l) \\ b=e^{5 \cdot \cos \left(\pi \cdot\left(1-\frac{t}{t_{\max }}\right)\right)} \end{array}\right. \tag{9} { X(t+1)=w(t)X(t)+bDelcos(2πl)b=e5cos(π(1tmaxt))(9)
参数 b b b 是根据螺旋线的数学模型进行设计的, 在原有螺 旋线模型的基础上, 通过引入迭代次数, 动态调整螺旋形状. 这样设计的参数 b 会随迭代次数增加, 使螺旋形状从大到小 的变化. 在算法前期鲸鱼以较大的螺旋形状搜寻目标, 鲸鱼尽 可能多的去探索全局最优解, 提升算法的全局最优搜寻能力; 在算法后期鲸鱼以小螺旋形状搜寻目标, 提升算法的寻优精 度.

2.3 最优邻域扰动

鲸鱼在更新位置的时候,一般都是以当前最优位置作为 本次迭代的目标. 在整个迭代环节中, 最优位置只有在出现优 于它的位置时才会更新, 所以总的更新次数不多, 导致算法搜 寻效率不高. 针对此, 引入最优邻域扰动策略, 将最优位置的 附近随机搜索一遍, 找到一个更佳的全局值, 这样不仅可以提 升算法的收敛速度,而且还能避免算法出现早熟.
最优位置产生随机扰动, 增加其对附近空间的搜索, 邻域 扰动公式为:
X ~ ( t ) = { X ∗ ( t ) + 0.5 ⋅ rand ⁡ 1 ⋅ X ∗ ( t ) ,  rand  2 < 0.5 X ∗ ( t ) ,  rand  2 ⩾ 0.5 (10) \tilde{X}(t)=\left\{\begin{array}{l} X^{*}(t)+0.5 \cdot \operatorname{rand} 1 \cdot X^{*}(t), \text { rand } 2<0.5 \\ X^{*}(t), \text { rand } 2 \geqslant 0.5 \end{array}\right.\tag{10} X~(t)={ X(t)+0.5rand1X(t), rand 2<0.5X(t), rand 20.5(10)
式中: rand1 和 rand 2 为 [ 0 , 1 ] [0,1] [0,1] 之间均匀产生的随机数; X ~ ( t ) \tilde{X}(t) X~(t) 为生成的新位置.
对于生成的邻域位置,采用贪婪的策略判断是否保留,公 式如下:
X ∗ ( t ) = { X ~ ( t ) , f ( X ~ ( t ) ) < f ( X ∗ ( t ) ) X ∗ ( t ) , f ( X ∗ ( t ) ) ⩽ f ( X ~ ( t ) ) (11) X^{*}(t)=\left\{\begin{array}{l} \tilde{X}(t), f(\tilde{X}(t))<f\left(X^{*}(t)\right) \\ X^{*}(t), f\left(X^{*}(t)\right) \leqslant f(\tilde{X}(t)) \end{array}\right. \tag{11} X(t)={ X~(t),f(X~(t))<f(X(t))X(t),f(X(t))f(X~(t))(11)
式中: f ( x ) f(x) f(x) x x x 的位置适应值. 如果生成的位置比原位置 好, 则将其与原位置替换, 使其成为全局最优. 反之, 最优位置 保持不变.

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]刘琨,赵露露,王辉.一种基于精英反向和纵横交叉的鲸鱼优化算法[J].小型微型计算机系统,2020,41(10):2092-2097.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/125812812
今日推荐