• 混沌反馈自适应鲸鱼优化算法研究-附代码


    混沌反馈自适应鲸鱼优化算法研究


    摘要:鲸鱼优化算法是一种新型优化算法,源自鲸鱼的觅食行为。针对标准鲸鱼优化算法处理复杂函数优化问题出现寻优精度低和易陷入局部极小值的不足,文章提出了一种混沌反馈自适应鲸鱼优化算法(CFAWOA)。在CFAWOA算法中,引入混沌理论生成初始种群增加种群多样性,为算法全局搜索奠定基础;同时,在鲸鱼位置更新后期增加反馈阶段,通过交流学习使最差鲸鱼快速向最优鲸鱼靠拢,提高算法的全局搜索能力;此外,在鲸鱼个体位置更新公式中引入自适应惯性权值,通过平衡算法的开发和探索能力进一步改善算法的优化性能。

    1.鲸鱼优化算法

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

    2. 改进鲸鱼优化算法

    2.1 Sin 混沌初始化种群

    群智能优化算法种群初始化方法会影响算法的收敛 速度和解的精度。WOA算法在缺乏有关先验信息时采用 随机初始种群, 不能保证鲸鱼在整个解空间中均匀分布。 混沌映射是由确定性方程得到的具有随机性的运动状态, 具有随机性性、遍历性的特点 [ 5 ] { }^{[5]} [5] 。文献[6]验证了 Sin ⁡ \operatorname{Sin} Sin 混沌 较Logistic 混沌具有更明显的混沌特性, 因此采用Sin 混沌 进行 WOA算法的种群初始方法。考察式 (7)定义的 Sin 混沌自映射:
    x n + 1 = sin ⁡ ( 2 / x n ) , n = 0 , 1 , … , N − 1 ≤ x n ≤ 1 , x n ≠ 0 (7) x_{n+1}=\sin \left(2 / x_{n}\right), n=0,1, \ldots, N-1 \leq x_{n} \leq 1, \quad x_{n} \neq 0 \tag{7} xn+1=sin(2/xn),n=0,1,,N1xn1,xn=0(7)
    式 (7) 中初始值不能为 0 , 避免在 [ − 1 , 1 ] [-1,1] [1,1] 内产生不动点和 零点。当迭代一定次数时, 系统输出将遍历整个解空间。

    2.2 反馈阶段

    在 WOA算法中, 鲸鱼通过猎物的位置来改变自身的 运动轨迹,运动方式比较单一。然而在实际的觅食过程 中,最优鲸鱼有目的的与最差鲸鱼进行反馈交流,通过反 馈信息交流, 距离食物较远的鲸鱼能快速运动到食物附 件, 这样将能进一步提高算法的收敛速度, 本文在精英 W O A \mathrm{WOA} WOA 算法基础上,引人反馈阶段来提高算法的寻优精度 及稳定性。
    反馈阶段数学模型如下:
    X w o r s t n e w = X worst  − r ⋅ ( X p − X worst  ) (8) X_{ {worstnew }}=X_{\text {worst }}-r \cdot\left(X_{p}-X_{\text {worst }}\right) \tag{8} Xworstnew=Xworst r(XpXworst )(8)

    式中, X w o r s t X_{ {worst }} Xworst 是种群中最差鲸鱼个体位置向量; r r r 是 果 X w o r s t e w X_{{worst_ew }} Xworstew 优于 X w o r s t X_{ {worst }} Xworst, 则接受 X w o r s t n e w 。 X_{ {worstnew 。 }} Xworstnew

    2.3自适应惯性权值

    惯性权值是 WOA算法中的一个重要参数,式 (1)和式
    (5) 中保持较大的惯性权值 1 , 恒定不变的惯性权重将降 低算法的效率, 不利于算法的全局寻优。文献[7]指出较大 的惯性权值有利于全局优化, 较小的惯性权值有利于局部 挖掘。理想的惯性权重策略应呈现这样的特点:在迭代初 期,应具有较大的权重,保证算法具有较强的全局搜索能 力; 在迭代后期,应具有较小的权重, 保证算法具有较强的 局部搜索能力。因此, 合理的惯性权值有利于平衡算法的 全局探索和局部开采能力。
    在式 (1)和式 (5) 中引人如下自适应惯性权值 ω \omega ω :
    ω = 0.2 + 1 0.4 + exp ⁡ ( − f f i t ( x ) / u ) iter  (9) \omega=0.2+\frac{1}{0.4+\exp \left(-f_{f i t}(x) / u\right)^{\text {iter }}}\tag{9} ω=0.2+0.4+exp(ffit(x)/u)iter 1(9)
    式中, f ( x ) f(x) f(x) 是鲸鱼 x x x 的适应度值; u u u 表示在第一次迭 代计算中鲸鱼种群中最佳的适应度值; iter 表示当前的迭 代次数。利用 ω \omega ω 的动态非线性特性控制鲸鱼位置对新鲸 鱼位置的影响度。改进后的更新公式表述如下:
    X ( t + 1 ) = ω ⋅ X p ( t ) − A ⋅ ∣ C X p ( t ) − X ( t ) ∣ X ( t + 1 ) = ω ⋅ X p ( t ) + D ′ ⋅ e b l ⋅ cos ⁡ ( 2 π l )

    X(t+1)=ωXp(t)A|CXp(t)X(t)|X(t+1)=ωXp(t)+Deblcos(2πl)" role="presentation" style="position: relative;">X(t+1)=ωXp(t)A|CXp(t)X(t)|X(t+1)=ωXp(t)+Deblcos(2πl)
    X(t+1)=ωXp(t)ACXp(t)X(t)X(t+1)=ωXp(t)+Deblcos(2πl)
    在迭代初期, 较小的适应度值保证了算法拥有较大的 惯性权重; 相反, 后期较大适应度值保证了算法拥有较小 的惯性权重,利于 WOA算法的全局优化性能。
    在 CFAWOA 中, 采用 Sin ⁡ \operatorname{Sin} Sin 混沌初始化种群以改善种群 的分布情况; 同时, 增加反馈阶段, 通过最差鲸鱼与最优鲸 鱼进行信息交换, 以促进最差鲸鱼快速运动到食物周围; 除此之外, 自适应惯性权值平衡算法的全局探索和局部开 采能力, 进一步改善算法的全局优化能力。CFAWOA算 法流程如下:

    设置最大迭代次数 T max ⁡ T_{\max } Tmax, 种群规模 N N N, 按式 (7)产生 N N N 个初始鲸鱼种群 { X i , i = 1 , 2 , … , N } \left\{X_{i}, i=1,2, \ldots, N\right\} {Xi,i=1,2,,N};
    计算每个鲸鱼个体的适应度值 { f ( X i ) , i = 1 , 2 , … , N } \left\{f\left(X_{i}\right), i=1,2, \ldots, N\right\} {f(Xi),i=1,2,,N}, 记录 当前最优个体及位置;
    while ( t < T max ⁡ ) \left(t(t<Tmax) do

    for i = 1 i=1 i=1 to N N N do

    根据式 ( 9 ) (9) (9) 计算自适应惯性权值 w w w 的值;

    根据式 ( 4 ) (4) (4) 计算控制参数 α \alpha α 的值; 更新其他参数 A 、 C 、 1 、 p A 、 C 、 1 、 p AC1p 的值;

    if ( p < 0.5 ) (p<0.5) (p<0.5) do if ( ∣ A ∣ < 1 ) (|A|<1) (A<1) do

    根据式 ( 10 ) (10) (10) 更新当前鲸鱼个体的位置;

    else if ( ∣ A ∣ ⩽ 1 ) (|A| \leqslant 1) (A1) do

    在群体中选择最差鲸鱼个体 X worst  X_{\text {worst }} Xworst ;

    根据式 ( 8 ) (8) (8) 更新当前鲸鱼个体的位置;

    end if

    else if ( p ⩾ 0.5 ) (p \geqslant 0.5) (p0.5) do

    根据式 ( 11 ) (11) (11) 更新当前鲸鱼个体的位置;

    end if

    end for

    计算群体中个体的适应度值 { f ( X i ) , i = 1 , 2 , … , N } ; \left\{f\left(X_{i}\right), i=1,2, \ldots, N\right\} ; {f(Xi),i=1,2,,N};

    更新当前最优个体及位置;

    t = t + 1 t=t+1 t=t+1;

    end while

    3.实验结果

    请添加图片描述

    4.参考文献

    [1]涂春梅,陈国彬,刘超.混沌反馈自适应鲸鱼优化算法研究[J].统计与决策,2019,35(07):17-20.

    5.Matlab代码

    6.Python代码

  • 相关阅读:
    数据库大咖,带你深入高性能MySQL架构系统,值得一看
    Git 常用命令
    每日一题之请描述Vue组件渲染流程
    悬赏任务兼职众人帮蚂蚁帮扶任务平台
    stm32之PWM呼吸灯
    talemu---蒙特卡洛仿真软件产品介绍
    机器学习 | Python实现KNN(K近邻)算法模型
    flutter 常用组件:文本、图片和按钮
    Redis SCAN命令操作实战(详细)
    2.6 宽带接入技术
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126131265