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


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


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

    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) Xij(t)=Xij(t1)+(w FoodPosition j(t1)Xij(t1)) rand  \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代码

  • 相关阅读:
    Easyui DataGrid combobox联动下拉框内容
    一文快速上手 Nacos 注册中心+配置中心!
    用友YonSuite驶入快车道 SaaS数智飞轮驱动高效增长
    Go 语言常用数据结构
    wifi码系统贴牌源码定制开发搭建oem
    【微服务】Day11(续 开发新增订单功能、静态资源服务器)
    Docker-------数据卷和数据卷容器
    基于LibreOffice转换文档
    数据结构——排序算法——插入排序
    详细步骤记录:持续集成Jenkins自动化部署一个Maven项目
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126864048