• 基于混沌搜索策略的鲸鱼优化算法-附代码


    基于混沌搜索策略的鲸鱼优化算法


    摘要:针对鲸鱼优化算法存在探索和开发能力难以协调、易陷入局部最优的不足,提出一种基于混沌搜索策略的鲸鱼优化算法(CWOA). 首先,采用混沌反向学习策略产生初始种群,为全局搜索多样性奠定基础;其次,设计收敛因子和惯性权重的非线性混沌扰动协同更新策略以平衡全局探索和局部开发能力;最后,将种群进化更新与最优个体的混沌搜索机制相结合,以减小算法陷入局部最优的概率.

    1.鲸鱼优化算法

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

    2. 改进鲸鱼优化算法

    2.1 混沌反向学习初始化策略

    研究表明 [ 13 ] { }^{[13]} [13], 初始种群的好坏影响着算法的求 解精度和收玫速度, 多样性较好的初始种群对提升算 法性能很有帮助. 然而, WOA算法在求解优化问题时 通常采用随机方法产生初始种群, 可能使得初始种群 分布不均, 导致初始种群多样性较差. 此外, 由于对优 化问题的全局最优解没有任何先验知识, 应尽可能使 种群均匀分布在搜索空间. 为了增强种群的多样性 并提高求解效率, 为算法进行全局搜索奠定多样性基 础, CWOA算法采用混沌反向学习初始化策略. 首先 利用混沌变量的随机性、遍历性和规律性特征, 产生 具有较好多样性的混沌初始种群; 其次通过对混沌 初始种群及其反向种群进行排序选择, 将适应度值较 优的解作为初始种群, 提高求解效率.
    假设种群规模为 N N N, 采用具有较好遍历均匀性和 较快迭代速度的 Tent混沌映射在 D D D 维欧氏空间中生 成混沌序列 y = { y d , d = 1 , 2 , ⋯   , D } , y d = { y i d , i = y=\left\{y_{d}, d=1,2, \cdots, D\right\}, y_{d}=\left\{y_{i d}, i=\right. y={yd,d=1,2,,D},yd={yid,i= 1 , 2 , ⋯   , N } 1,2, \cdots, N\} 1,2,,N}, Tent混沌映射函数表达式 [ 14 ] { }^{[14]} [14]
    y i + 1 , d = { 2 y i d , y i d < 0.5 2 ( 1 − y i d ) , y i d ⩾ 0.5. (8) y_{i+1, d}=\left\{

    2yid,yid<0.52(1yid),yid0.5." role="presentation" style="position: relative;">2yid,yid<0.52(1yid),yid0.5.
    \right.\tag{8} yi+1,d={2yid,yid<0.52(1yid),yid0.5.(8)
    将混沌序列映射到解空间中, 得到种群 X = X= X= { X i , i = 1 , 2 , ⋯   , N } , X i = { X i d , d = 1 , 2 , ⋯   , D } \left\{X_{i}, i=1,2, \cdots, N\right\}, X_{i}=\left\{X_{i d}, d=1,2, \cdots, D\right\} {Xi,i=1,2,,N},Xi={Xid,d=1,2,,D}, 种群个体 X i d X_{i d} Xid 表示为
    X i d = X min ⁡ d + y i d ⋅ ( X max ⁡ d − X min ⁡ d ) . (9) X_{i d}=X_{\min d}+y_{i d} \cdot\left(X_{\max d}-X_{\min d}\right) . \tag{9} Xid=Xmind+yid(XmaxdXmind).(9)
    其中: X i d X_{i d} Xid 为第 i i i 个种群个体的第 d d d 维码值, X min ⁡ d X_{\min d} Xmind X max ⁡ d X_{\max d} Xmaxd X i d X_{i d} Xid 的搜索上下界.
    由种群 X X X 计算反向种群 O X = { O X i , i = 1 , 2 \mathrm{OX}=\left\{\mathrm{OX}_{i}, i=1,2\right. OX={OXi,i=1,2, ⋯   , N } , O X i = { O X i d , d = 1 , 2 , ⋯   , D } \cdots, N\}, \mathrm{OX}_{i}=\left\{\mathrm{OX}_{i d}, d=1,2, \cdots, D\right\} ,N},OXi={OXid,d=1,2,,D}, 反向种群 个体 O X i d \mathrm{OX}_{i d} OXid 表示为
    O X i d = X min ⁡ d + X max ⁡ d − X i d . (10) \mathrm{OX}_{i d}=X_{\min d}+X_{\max d}-X_{i d} . \tag{10} OXid=Xmind+XmaxdXid.(10)
    种群 X X X 与反向种群 O X \mathrm{OX} OX 合并, 得到新种群 { X \{X {X UOX}. 计算新种群的目标函数值并排序, 选取其中 适应度值最好的 N N N 个个体作为初始种群.

    2.2 收敛因子和惯性权重混沌扰动协同更新策略

    在WOA算法中,收敛因子a随迭代次数的增加由2线性减小到0,属于线性时变更新策略. 然而,收敛因子a的线性时变更新策略不能完全体现出实际WOA 算法的优化搜索过程. 文献 [11] 提出了一种非线性收敛因子,在搜索前期以较小的值随迭代次数增加而递增,当增大到一个较大值后,再快速递减到一个较小值,最后以较慢的速度再递增,属于非线性时变更新策略. 本文采用具有较好遍历性的逻辑自映射函数产生混沌序列 [ 15 ] { }^{[15]} [15], 进而对收玫因子进行混沌 扰动, 提出一种带混沌扰动的收敛因子非线性时变更 新策略, 收敛因子更新公式为
    a = a initial  ⋅ ∣ y t ∣ − ( a initial  − a final  ) ⋅ tan ⁡ ( 0.875 ⋅ t t max ⁡ ) (11) a=a_{\text {initial }} \cdot\left|y^{t}\right|-\left(a_{\text {initial }}-a_{\text {final }}\right) \cdot \tan \left(0.875 \cdot \frac{t}{t_{\max }}\right) \tag{11} a=ainitial  yt (ainitial afinal )tan(0.875tmaxt)(11)
    其中: a initial  a_{\text {initial }} ainitial  a final  a_{\text {final }} afinal  分别为收敛因子 a a a 的初值和终 值; y t = 1 − 2 ( y t − 1 ) 2 , y t ∈ ( − 1 , 1 ) y^{t}=1-2\left(y^{t-1}\right)^{2}, y^{t} \in(-1,1) yt=12(yt1)2,yt(1,1) 为自逻辑映射函数 产生的混沌序列.
    通过施加带混沌扰动的收敛因子非线性时变更 新策略, 在一定程度上提升了算法性能. 然而, 当涉 及到时变更新策略时, 单独依靠收玫因子并不能在 种群全局探索能力与局部开发能力之间进行有效平 衡. 因此, CWOA算法借鉴PSO算法, 引入惯性权重配 合收敛因子共同调节种群全局探索能力和局部开发 能力, 惯性权重更新策略同样选择带混沌扰动的非线 性时变更新策略. 惯性权重更新公式为
    ω = ω final  ⋅ ∣ y t ∣ + ( ω initial  − ω final  ) ⋅ ( t max ⁡ − t t max ⁡ ) 2 (12) \omega=\omega_{\text {final }} \cdot\left|y^{t}\right|+\left(\omega_{\text {initial }}-\omega_{\text {final }}\right) \cdot\left(\frac{t_{\max }-t}{t_{\max }}\right)^{2} \tag{12} ω=ωfinal  yt +(ωinitial ωfinal )(tmaxtmaxt)2(12)
    其中 ω initial  \omega_{\text {initial }} ωinitial  ω final  \omega_{\text {final }} ωfinal  分别为惯性权重 ω \omega ω 的初值和终值.
    通过收玫因子和惯性权重混沌扰动协同更新, 当 前个体的位置更新和螺旋更新位置公式分别为
    X t + 1 = ω ⋅ X gbest  t − A ⋅ ∣ C ⋅ X gbest  t − X t ∣ (13) X^{t+1}=\omega \cdot X_{\text {gbest }}^{t}-A \cdot\left|C \cdot X_{\text {gbest }}^{t}-X^{t}\right| \tag{13} Xt+1=ωXgbest tA CXgbest tXt (13)

    X t + 1 = ω ⋅ X gbest  t + D ⋅ e b l ⋅ cos ⁡ ( 2 π l ) (14)

    Xt+1=ωXgbest t+Deblcos(2πl)" role="presentation" style="position: relative;">Xt+1=ωXgbest t+Deblcos(2πl)
    \tag{14} Xt+1=ωXgbest t+Deblcos(2πl)(14)

    2.3最优个体混沌搜索策略

    WOA算法迭代后期, 由于群体中所有鲸鱼个体 均向最优个体位置聚集, 从而导致群体内多样性缺 失, 算法过早收敛到一种非全局最优状态, 出现早 熟收玫现象. 为了减少 WOA 算法出现早熟收敛现 象的概率, CWOA算法通过对当前最优鲸鱼个体施 加混沌搜索策略, 以当前搜索到最优个体位置向量 X gbest  t = ( X gbest  1 t , X gbest  2 t , ⋯   , X gbest  D t ) X_{\text {gbest }}^{t}=\left(X_{\text {gbest } 1}^{t}, X_{\text {gbest } 2}^{t}, \cdots, X_{\text {gbest } D}^{t}\right) Xgbest t=(Xgbest 1t,Xgbest 2t,,Xgbest Dt) 为基础, 将 当前最优个体位置向量线性映射到混沌变量的取值 区间,利用混沌变量的随机性、遍历性和规律性等内 在特性进行混沌优化搜索, 最终将获得的混沌优化解 线性转换到优化空间, 此时的混沌优化本质上是一种 深度局部搜索方法. 混沌搜索主要步骤如下.

    Step 1: 按照 y gbest  d = 2 ( X gbest  d − X min ⁡ d ) X max ⁡ d − X min ⁡ d − 1 y_{\text {gbest } d}=\frac{2\left(X_{\text {gbest } d}-X_{\min d}\right)}{X_{\max d}-X_{\min d}}-1 ygbest d=XmaxdXmind2(Xgbest dXmind)1 将当前最优个体位置向量的每一维映射到区间 ( − 1 (-1 (1, 1).

    Step 2: 将混沌变量加载于待搜索的个体变量 y gbest  d y_{\text {gbest } d} ygbest d, 即将 y gbest  d y_{\text {gbest } d} ygbest d 代入逻辑自 映射函数 y gbest  d t c = y_{\text {gbest } d}^{t_{c}}= ygbest dtc= 1 − 2 ( y gbest  d t c − 1 ) 2 1-2\left(y_{\text {gbest } d}^{t_{c}-1}\right)^{2} 12(ygbest dtc1)2 进行迭代, 产生混沌序列 y gbest  d t c ( t c = y_{\text {gbest } d}^{t_{c}}\left(t_{c}=\right. ygbest dtc(tc=

    1 , 2 , ⋯   , t c max ⁡ ) \left.1,2, \cdots, t_{c \max }\right) 1,2,,tcmax). 其中: t c max ⁡ t_{c \max } tcmax 为混沌搜索的最大迭代 次数, y gbest  d t c ∈ ( − 1 , 1 ) y_{\text {gbest } d}^{t_{c}} \in(-1,1) ygbest dtc(1,1).

    Step 3: 利用式 X gbest  d ′ = 1 2 ( X max ⁡ d − X min ⁡ d ) × X_{\text {gbest } d}^{\prime}=\frac{1}{2}\left(X_{\max d}-X_{\min d}\right) \times Xgbest d=21(XmaxdXmind)× y gbest  d + 1 2 ( X max ⁡ d − X min ⁡ d ) y_{\text {gbest } d}+\frac{1}{2}\left(X_{\max d}-X_{\min d}\right) ygbest d+21(XmaxdXmind) y gbest  d y_{\text {gbest } d} ygbest d 载波到原搜索 空间邻域内以产生新最优个体位置向量 X gbest  ′ X_{\text {gbest }}^{\prime} Xgbest .

    Step 4: 对 X gbest  X_{\text {gbest }} Xgbest  X gbest  ′ X_{\text {gbest }}^{\prime} Xgbest  进行适应度函数值评 价,更新当前最优个体位置.

    Step 5: 判断是否达到最大混沌搜索次数, 如果 是, 则终止混沌搜索, 否则转入 Step 2 .

    综上所述, CWOA算法步骤的伪代码表示如下:
    begin
    初始化算法参数, 按照 2.1 2.1 2.1 节所述的混沌反向学 习初始化策略产生初始化鲸鱼种群 { X i , i = 1 , 2 \left\{X_{i}, i=1,2\right. {Xi,i=1,2, ⋯   , N } \cdots, N\} ,N}
    计算群体中每个个体的适应度值 { F ( X i ) , i = 1 \left\{F\left(X_{i}\right), i=1\right. {F(Xi),i=1, 2 , ⋯   , N } 2, \cdots, N\} 2,,N}, 记录当前最优个体位置.
    while ( t < t max ⁡ ) \left(t(t<tmax) do
    for i = 1 i=1 i=1 to N N N do
    根据式 (11) 计算收敛因子 a a a 的值;
    根据式 (12) 计算惯性权重 ω \omega ω 的值.

    if (p < 0.5) do
    if (|A| < 1) do
    按照式(13)更新当前个体位置.
    else if (|A| ⩾ 1) do
    按照式(7)更新当前个体位置.
    end if
    else if (p ⩾ 0.5) do
    按照式(14)更新当前个体位置.
    end if
    end for
    按照2.3节所述策略执行最优个体混沌搜索;
    更新当前最优个体位置.
    t = t + 1.
    end while
    end

    3.实验结果

    请添加图片描述

    4.参考文献

    [1]王坚浩,张亮,史超,车飞,丁刚,武杰.基于混沌搜索策略的鲸鱼优化算法[J].控制与决策,2019,34(09):1893-1900.

    5.Matlab代码

    6.Python代码

  • 相关阅读:
    我眼中的大数据(三)——MapReduce
    搜索算法——回溯总结01
    SpringBoot自定义参数解析器HandlerMethodArgumentResolver(解析ip)
    文件上传接口
    [JAVAee]Spring的基础介绍
    Gin——请求发送和路由总结
    java操作redis
    【软考-中级】系统集成项目管理工程师 【17 信息系统安全管理】
    Map集合(超详解)
    Flink 流程处理和批处理开发
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126150075