• 基于非线性收敛因子和局部扰动的鲸鱼算法-附代码


    基于非线性收敛因子和局部扰动的鲸鱼算法


    摘要:为提高鲸鱼算法的收敛速度和寻优精度,提出一种基于非线性收敛因子和局部扰动的鲸鱼优化算法。引入非线性收敛因子,提高鲸鱼种群的多样性,扩大鲸鱼搜索食物的范围;在鲸鱼包围捕食阶段,采用一种局部扰动策略,使算法在跳出局部极值时的能力增强,提高算法的寻优精度。

    1.鲸鱼优化算法

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

    2. 改进鲸鱼优化算法

    2.1 非线性收敛因子

    从基本鲸鱼算法中的式 (5)可以看出,收敛因子a 从2 线性递减到 0 , 在整个算法中递减速度相同, 这样大大降 低了鲸鱼种群的多样性和灵活性, 使算法前期搜索和后期 寻优失去平衡。为了解决该问题, 引入了非线性收玫因子。 其具体表达式如下
    a = 1 − ( t T max ⁡ ) λ ⋅ ( e + μ ) + θ ⋅ κ a=1-\left(\frac{t}{T_{\max }}\right)^{\lambda} \cdot(e+\mu)+\theta \cdot \kappa a=1(Tmaxt)λ(e+μ)+θκ
    式中: λ 、 μ 、 κ \lambda 、 \mu 、 \kappa λμκ 为常量系数。 θ \theta θ 是区间 [ 0 , 1 ] [0,1] [0,1] 之间的随机 数, t t t 是当前迭代次数, T max ⁡ T_{\max } Tmax 是最大迭代次数, a a a 是自然常 数。收玫因子 a a a 随进化迭代次数的增加而非线性递减, 在 初期 a a a 的衰减程度较低, 鲸鱼能够以较大步幅移动, 更好 地寻找全局最优解。到了后期, a a a 的衰减程度提高, 鲸鱼 移动步幅减小, 可以更加精确地寻找最优解。从而更有效 地平衡了全局搜索时的开发能力与局部搜索时的挖掘能力。

    2.2 局部扰动

    从基本鲸鱼算法的包围猎物阶段中可以看出, 鲸鱼个 体以当前最优个体作为参照物进行移动, 这样的移动方式 极易使算法陷入局部最优解。为了进一步提高算法全局收 敛精度, 避免算法陷入局部极值。在包围猎物阶段鲸鱼个 体进行位置更新后, 增加了随机扰动机制。其具体扰动方 式如下
    ξ = ξ max ⁡ − ( ξ max ⁡ − ξ min ⁡ ) ⋅ sin ⁡ ( π 2 ⋅ t T max ⁡ ) x l = ξ ⋅ x f

    ξ=ξmax(ξmaxξmin)sin(π2tTmax)xl=ξxf" role="presentation" style="position: relative;">ξ=ξmax(ξmaxξmin)sin(π2tTmax)xl=ξxf
    ξ=ξmax(ξmaxξmin)sin(2πTmaxt)xl=ξxf
    式中: x f x_{f} xf 是末扰动前的鲸鱼个体, x l x_{l} xl 是扰动后的鲸鱼个体。 t t t 是当前迭代次数, T max ⁡ T_{\max } Tmax 是最大迭代次数。 ξ \xi ξ 是非线性扰动系 数, ξ max  \xi_{\text {max }} ξmax  ξ min  \xi_{\text {min }} ξmin  分别为 ξ \xi ξ 的最大值和最小值。式 (10) 为凹函 数, 前期的扰动力度较大, 可使算法快速跳出局部最优值, 则后期的扰动力度相对较小, 可以更好平衡算法前后期的 搜索能力。

    算法伪代码:

    (1) 初始化参数, 初始化鲸鱼个体数 n n n, 最大迭代次 数 T max ⁡ T_{\max } Tmax 以及空间维数 d d d
    (2) 随机产生每只鲸鱼的位置 x i x_{i} xi, 根据适应度函数 f ( x ) f(x) f(x), 求出每只鲸鱼的适应度函数值, 并且找出当前最 优值 f min ⁡ f_{\min } fmin 和当前最优鲸鱼位置 x ∗ x_{*} x
    (3) while ( t < T max ⁡ ) \left(t(t<Tmax)
    (4) for i = 1 : n i=1: n i=1:n
    (5) \quad if p < 0.5 p<0.5 p<0.5
    (6) if abs ⁡ ( A ) > = 1 \operatorname{abs}(\mathrm{A})>=1 abs(A)>=1
    (7) 执行式 (7)
    (8) elseifabs ( ( ( A ) < 1 )<1 )<1
    (9)执行式(1)、式(2)、式(10)、式 (11)
    (10) end
    (11) elseif p > = 0.5 p>=0.5 p>=0.5
    (12) 执行式 (7)

    (13) end
    (14) end
    (15) t = t + 1 \quad t=t+1 t=t+1
    (16) end

    3.实验结果

    请添加图片描述

    4.参考文献

    [1]于俊洋,高宁杰,李涵.基于非线性收敛因子和局部扰动的鲸鱼算法[J].计算机工程与设计,2019,40(10):2861-2866.

    5.Matlab代码

    6.Python代码

  • 相关阅读:
    python代码中激活Anaconda虚拟环境并执行
    SQL教程之 开始学习用于数据分析的的五个SQL 命令 (教程含源码)
    bat脚本守护进程
    Miniconda、Vscode下载和conda源、pip源设置
    [附源码]java毕业设计鑫地酒店酒水库存管理系统论文
    C4D 2024插件Arnold mac(C4D S2024阿诺德渲染器) 中文版介绍
    设计模式总结(三)
    程序员的精力管理
    C语言 while循环1
    三、类和对象
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126110933