面向全局搜索的自适应领导者樽海鞘群算法-附代码

面向全局搜索的自适应领导者樽海鞘群算法


摘要:为了进一步改善基本樽海鞘群算法容易陷入局部最优,寻优精度有时不高,求解结果不太稳定的不足,提出了一种面向全局搜索的自适应领导者樽海鞘群算法。在领导者位置更新公式中引入上一代樽海鞘群位置,增强了全局搜索的充分性,有效避免算法陷入局部极值。然后在领导者位置更新公式中加入惯性权重,并在全局和局部搜索的选择上引入领导者-跟随者数量自适应调整策略,使算法在迭代前期领导者数目较多且受全局最优解影响较大,能以较大的全局搜索步幅快速收敛到全局最优区域;而在迭代后期领导者步幅较小且跟随者数量较多,可以在最优解附近深度挖掘,提高算法的收敛精度。

1.樽海鞘群算法

基础樽海鞘群算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869

2.改进樽海鞘群算法

2.1 改进领导者位置更新公式

2.1.1 引入上一代樽海鞘领导者位置

在基本楢海鞘群算法中, 樽海鞘领导者从迭代 开始就奔向全局最优值, 导致全局搜索不充分, 容 易陷入局部极值区域,造成算法有时收敛精度较低。 本文在领导者位置更新公式中引入上一代樽海鞘领 导者位置, 使得领导者在位置更新阶段既受上一代 楢海鞘领导者位置的影响, 同时又受上一代全局最 优解的影响, 有效地避免了基本算法易陷入局部极 值的问题, 提高了算法的寻优精度。改进后的樽海 鞘领导者位置更新公式为:
X j i ( t ) = X j i ( t − 1 ) + (  FoodPosition  j ( t − 1 ) − X j i ( t − 1 ) ) ⋅ rand ⁡ (5) X_j^i(t)=X_j^i(t-1)+\left(\text { FoodPosition }_j(t-1)-X_j^i(t-1)\right) \cdot \operatorname{rand} \tag{5} Xji(t)=Xji(t1)+( FoodPosition j(t1)Xji(t1))rand(5)
其中, X j i ( t − 1 ) X_j^i(t-1) Xji(t1) 为上一代中第 i i i 个樽海鞘领导 者在第 j j j 维的位置, FoodPosition ( t − 1 ) (t-1) (t1) 为上一代 中第 j j j 维的全局最优解, 通过引入上一代的位置, 楢 海鞘领导者能够更有效地进行全局搜索, 增强算法 跳出局部极值的能力。

2.1.2 引入惯性权重

本文还在领导者位置更新公式中引入动态惯性权重,随迭代次数自适应递减的惯性权重 w 表示了樽海鞘领导者受全局最优解影响程度的变化。在迭代前期,领导者受全局最优解影响较大,有较大的全局搜索步幅,能够更快速地找到全局最优区域。而在迭代后期,大部分樽海鞘都已达到较优值,领导者受全局最优解影响变小, 领导者可以在最优解附 近深度挖掘, 提高了算法的收敛精度。本文中惯性 权重的计算公式为:
w = e 2 ⋅ ( 1 − t / M a x i t e r ) − e − 2 ⋅ ( 1 − t / M a x i t e r ) e 2 ⋅ ( 1 − t / M a x i t e r ) + e − 2 ⋅ ( 1 − t / M a x i t e r ) (6) w=\frac{e^{2 \cdot(1-t / { Max_iter })}-e^{-2 \cdot(1-t / { Max_iter })}}{e^{2 \cdot(1-t / { Max_iter) }}+e^{-2 \cdot(1-t / { Max_iter })}} \tag{6} w=e2(1t/Maxiter)+e2(1t/Maxiter)e2(1t/Maxiter)e2(1t/Maxiter)(6)
结合公式 (5)、(6), 新的楢海鞘领导者位置更 新公式为:
X j i ( t ) = X j i ( t − 1 ) + ( w ⋅  FoodPosition  j ( t − 1 ) − X j i ( t − 1 ) ) ⋅  rand  (7) \begin{aligned} X_j^i(t)=& X_j^i(t-1)+\left(w \cdot \text { FoodPosition }_j(t-1)-X_j^i(t-1)\right) \cdot \text { rand } \end{aligned} \tag{7} Xji(t)=Xji(t1)+(w FoodPosition j(t1)Xji(t1)) rand (7)
其中,惯性权重 w w w 为基于双曲正切函数的非线 性递减值, 其取值范围为 ( 0 , 1 ) , t (0,1), t (0,1),t 为当前迭代次数, M a x − M a x_{-} Maxiter 为最大迭代次数, X j i ( t − 1 ) X_j^i(t-1) Xji(t1) 为上一代中第 i \mathrm{i} i 个楢海鞘领导者在第 j \mathrm{j} j 维的位置, FoodPosition ( t − (t- (t 1) 为上一代中第 j j j 维的全局最优解。通过引入惯性 权重, 使得改进后的算法能够在全局和局部搜索之 间保持较好平衡, 樽海鞘领导者更好地发挥领导者 作用, 提高算法的寻优精度。

2.2 引入领导者-跟随者自适应调整策略

在基本 SSA 算法中,樽海鞘领导者和跟随者的数目始终是各占种群中个体数的一半,这就使得在迭代前期,执行全局搜索的领导者比例过低,跟随者比例过高,领导者无法有效地进行全局搜索,全局搜索不充分,容易陷入局部最优;而在迭代后期,执行局部搜索的跟随者比例过低,局部搜索不够充分,容易造成寻优精度不高。针对此问题,本文引领导者-跟随者自适应调整策略,樽海鞘领导者的数目随迭代次数的增加自适应减少,跟随者数目自适应增加,在算法前期能够保持很强的全局搜索能力,同时兼顾局部搜索,而在算法运行后期,局部搜索逐渐增强,同时也兼顾全局搜索,从整体上提高了算法的收敛精度。改进后的领导者-跟随者数量计算公式为:

每代中领导者数量等于 r ⋅ N r \cdot N rN
跟随者数量等于 ( 1 − r ) N (1-r) N (1r)N
r = b ⋅ ( tan ⁡ ( − π t 4 ⋅ M a x i t e r + π 4 ) − k ⋅ rand ⁡ ( ) ) (8) r=b \cdot\left(\tan \left(-\frac{\pi t}{4 \cdot { Max_iter }}+\frac{\pi}{4}\right)-k \cdot \operatorname{rand}()\right)\tag{8} r=b(tan(4Maxiterπt+4π)krand())(8)
其中, t t t 是当前迭代次数, Max_iter 是最大迭 代次数。 b b b 为控制领导者-跟随者数量的比例系数, 避 免迭代前期的樽海鞘领导者或迭代后期的樽海鞘跟 随者比例过高, 全局和局部搜索失衡降低寻优性能, 易陷入局部极值的现象, 经大量实验测试, 本文取 值为 0.75 0.75 0.75 。分析式 (8) 可知, r r r 的值随着算法迭代次数的增加呈非线性递减趋势, 于是领导者数量逐 渐减少, 跟随者数量逐渐增加, 在迭代后期, 更多的 樽海鞘跟随者在全局最优值附近深度挖掘。 k k k 为扰 动偏离因子, 结合 rand 函数对递减的 r r r 值进行扰动, 经大量实验反复测试, k k k 等于 0.2 0.2 0.2 时, 寻优效果最佳。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]刘景森,袁蒙蒙,左方.面向全局搜索的自适应领导者樽海鞘群算法[J/OL].控制与决策:1-10[2021-07-30].https://doi.org/10.13195/j.kzyjc.2020.0090.

5.Matlab代码

6.python代码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值