• 多策略融合的改进麻雀搜索算法-附代码


    多策略融合的改进麻雀搜索算法


    摘要:对麻雀搜索算法易陷入局部最优、收敛速度慢等不足,提出一种多策略融合的改进麻雀搜索算法.采用精英混沌反向学习策略生成初始种群,增强初始个体的质量和种群多样性,实现对更多优质搜索区域的勘探以提升算法的局部极值逃逸能力和收敛性能;结合鸡群算法的随机跟随策略优化麻雀搜索算法中跟随者的位置更新过程,平衡算法的局部开发性能和全局搜索能力;采用柯西-高斯变异策略提升算法的种群多样性保持能力和抗停滞能力。

    1.麻雀搜索算法

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

    2.改进麻雀算法

    2.1 初始种群多样化

    选用均匀性更好的立方混沌映射初始化麻雀种 群, 混沌算子 [ 13 ] [13] [13] 具有随机性和规律性的优点, 能够在 一定范围内对所有的状态不重复遍历, 公式如下:
    − 1 < y i < 1 , y i ≠ 0 , i = 0 , 1 , ⋯ N x i = X l b + ( X u b − X l b ) × ( y i + 1 ) 2

    1<yi<1,yi0,i=0,1,Nxi=Xlb+(XubXlb)×(yi+1)2" role="presentation">1<yi<1,yi0,i=0,1,Nxi=Xlb+(XubXlb)×(yi+1)2
    1<yi<1,yi=0,i=0,1,Nxi=Xlb+2(XubXlb)×(yi+1)
    式 (4) 中, x i x_i xi 为映射后麻雀个体; X l b X_{l b} Xlb X u b X_{u b} Xub 分别 对应解空间中的下界和上界. 混沌立方映射初始化 麻雀种群的具体过程为: 随机在 [ − 1 , 1 ] [-1,1] [1,1] 内生成一个 d \mathrm{d} d 维向量作为初始个体, 然后代入式 (2) 对其每一维进 行迭代生成 N − 1 \mathrm{N}-1 N1 个新个体, 最后代入式 (4) 将立方映 射产生的变量值映射到麻雀个体上.

    通过透镜成像反向学习方法 [ 14 ] { }^{[14]} [14] 计算透镜成像 反向解来扩大可选解的范围, 增加选取更优解的概 率, 从而实现对初始种群个体质量的提升. 设 x j x_j xj x j ∗ x_j^* xj 分别表示当前麻雀个体及其透镜成像反向后个 体,
    x j ∗ = a j + b j 2 + a j + b j 2 k − x j k x_j^*=\frac{a_j+b_j}{2}+\frac{a_j+b_j}{2 k}-\frac{x_j}{k} xj=2aj+bj+2kaj+bjkxj
    式 (5) 中, a j a_j aj b j b_j bj 分别表示当前种群第 j \mathrm{j} j 维中的 最小值和最大值, k \mathrm{k} k 为透镜的缩放系数.
    精英混沌反向学习策略初始化麻雀种群的具 体过程为: 随机初始化个体数为 N \mathrm{N} N 的初始麻雀种群 X = [ x i 1 , ⋯   , x i d ] , i = 1 ⋯ N , x i d X=\left[x_{i 1}, \cdots, x_{i d}\right], i=1 \cdots N, x_{i d} X=[xi1,,xid],i=1N,xid 表示第 i \mathrm{i} i 只麻雀在 第 d \mathrm{d} d 维的位置; 将种群 X \mathrm{X} X 代入式 (4) 生成混沌种群 Y \mathrm{Y} Y, 同时将种群 X \mathrm{X} X 代入式 (5) 生成透镜成像反向种群 Z;将种群 Y \mathrm{Y} Y 和种群 Z \mathrm{Z} Z 内麻雀个体根据适应度值进行排 序, 选择前 N \mathrm{N} N 个较优个体构成精英混沌反向种群 P \mathrm{P} P; 种群 P \mathrm{P} P 与原麻雀种群 X \mathrm{X} X 根据个体适应度值排序选取 前 N \mathrm{N} N 个个体组成新的初始麻雀种群.
    X ′ = [ x i 1 ′ , ⋯   , x i d ′ ] X^{\prime}=\left[x_{i 1}^{\prime}, \cdots, x_{i d}^{\prime}\right] X=[xi1,,xid]

    2.2 跟随者位置更新的改进

    标准 SSA 算法中的跟随者在向最优位置移动 时, 容易出现种群在短时间内迅速集聚的情况, 虽然 能够达到快速收玫的效果, 但种群的多样性骤降, 致 使算法陷入局部最优的概率大大增加. 鸡群优化算 法 [ 15 ] { }^{[15]} [15] 是一种具有优秀全局寻优能力的随机优化算 法, 其中的随机跟随策略是母鸡以一定概率向公鸡 靠笼, 既保证了收玫性, 又没有降低种群多样性, 能 够很好地兼顾局部开发和全局搜索. 母鸡的位置更 新公式如下:
    X i , j t + 1 = X i , j t + S 1 rand ⁡ ( 0 , 1 ) ( X r , j t − X i , j t ) + S 2  rand  ( 0 , 1 ) ( X r , j t − X i , j t ) S 1 = exp ⁡ ( ( f i − f r ) / ( ∣ ( f i ) ∣ + ε ) ) S 2 = exp ⁡ ( f s − f i )

    Xi,jt+1=Xi,jt+S1rand(0,1)(Xr,jtXi,jt)+S2 rand (0,1)(Xr,jtXi,jt)S1=exp((fifr)/(|(fi)|+ε))S2=exp(fsfi)" role="presentation">Xi,jt+1=Xi,jt+S1rand(0,1)(Xr,jtXi,jt)+S2 rand (0,1)(Xr,jtXi,jt)S1=exp((fifr)/(|(fi)|+ε))S2=exp(fsfi)
    Xi,jt+1=Xi,jt+S1rand(0,1)(Xr,jtXi,jt)+S2 rand (0,1)(Xr,jtXi,jt)S1=exp((fifr)/((fi)+ε))S2=exp(fsfi)
    式 (8) 中, r r r 表示母鸡配偶中任意第 r r r 只公鸡; 式 (9) 中 s \mathrm{s} s 表示鸡群内任意第 s \mathrm{s} s 只公鸡或母鸡, r ≠ s \mathrm{r} \neq \mathrm{s} r=s.
    将随机跟随策略引入麻雀搜索算法中的跟随者 位置更新过程, 充分利用上一代个体的位置信息和 概率性变化. 改进后跟随者位置更新公式如下: x i , d t + 1 = { Q ⋅ exp ⁡ ( X worst  t − x i , d t i 2 ) ,  if  i > n / 2 X i , d t + S 3 rand ⁡ ( 0 , 1 ) ( x k , j t − x i , d t ) ,  if  i ≤ n / 2 x_{i, d}^{t+1}=\left\{
    Qexp(Xworst txi,dti2), if i>n/2Xi,dt+S3rand(0,1)(xk,jtxi,dt), if in/2" role="presentation">Qexp(Xworst txi,dti2), if i>n/2Xi,dt+S3rand(0,1)(xk,jtxi,dt), if in/2
    \right.
    xi,dt+1= Qexp(i2Xworst txi,dt), if i>n/2Xi,dt+S3rand(0,1)(xk,jtxi,dt), if in/2
    式 (10) 中, S 3 = exp ⁡ ( f s − f i ) , f i S_3=\exp \left(f_s-f_i\right), f_i S3=exp(fsfi),fi 表示第 i \mathrm{i} i 只麻雀 的适应度值 k ∈ [ 1 , N ] \mathrm{k} \in[1, N] k[1,N], 且 k ≠ i \mathrm{k} \neq \mathrm{i} k=i.

    2.3 引入柯西高斯变异策略

    在基本 SSA 算法迭代的后期, 麻雀个体的快速 同化, 导致容易出现局部最优停滞的情况. 为了解决 这一问题, 采用柯西 -高斯变异策略[16], 选择当前适 应度最好的个体进行变异, 然后比较其变异前后的 位置, 选择较优的位置代入下一次迭代. 具体公式如 下:
    U best  t = X best  t [ 1 + λ 1  cauchy  ( 0 , σ 2 ) + λ 2  Gauss  ( 0 , σ 2 ) ] σ = { 1 , f ( X best  ) < f ( X i ) exp ⁡ ( f ( X best  ) − f ( X i ) ∣ f ( X best  ) ∣ ) ,  otherwise 

    Ubest t=Xbest t[1+λ1 cauchy (0,σ2)+λ2 Gauss (0,σ2)]σ={1,f(Xbest )<f(Xi)exp(f(Xbest )f(Xi)|f(Xbest )|), otherwise " role="presentation">Ubest t=Xbest t[1+λ1 cauchy (0,σ2)+λ2 Gauss (0,σ2)]σ={1,f(Xbest )<f(Xi)exp(f(Xbest )f(Xi)|f(Xbest )|), otherwise 
    Ubest t=Xbest t[1+λ1 cauchy (0,σ2)+λ2 Gauss (0,σ2)]σ={1,f(Xbest )<f(Xi)exp(f(Xbest )f(Xbest )f(Xi)), otherwise 
    式 (11) 中, U best  t U_{\text {best }}^t Ubest t 表示最优个体变异后的位置; σ 2 \sigma^2 σ2表示柯西 - 高斯变异策略的标准差; cauchy ⁡ ( 0 , σ 2 ) \operatorname{cauchy}\left(0, \sigma^2\right) cauchy(0,σ2) 是 满足柯西分布的随机变量;Gauss ( 0 , σ 2 ) \left(0, \sigma^2\right) (0,σ2) 是满足高斯 分布的随机变量; λ 1 = 1 − t 2 / T max ⁡ 2 \lambda_1=1-t^2 / T_{\max }^2 λ1=1t2/Tmax2 λ 2 = t 2 / T max ⁡ 2 \lambda_2=t^2 / T_{\max }^2 λ2=t2/Tmax2 是随 迭代次数自适应调整的动态参数. 在寻优过程中, λ 1 \lambda_1 λ1 逐渐减小, λ 2 \lambda_2 λ2 逐渐增大, 使算法可以跳出当前停滞, 并协调其局部开发和全局探索的能力.

    3.实验结果

    请添加图片描述

    4.参考文献

    [1]付华,刘昊.多策略融合的改进麻雀搜索算法及其应用[J/OL].控制与决策:1-10[2021-09-09].https://doi.org/10.13195/j.kzyjc.2021.0582.

    5.Matlab代码

    6.python代码

  • 相关阅读:
    为什么打开idea时,没有启动页面,如何解决?
    【转信创】银河麒麟:系统安全机制
    TypeScript 第一章:入门教程
    使用React Context和Hooks在React Native中共享蓝牙数据
    Go-Python-Java-C-LeetCode高分解法-第十周合集
    C++循环队列(模板类)
    产品思维训练 | 试着将知乎分别介绍给你的爸爸、妈妈并下载使用
    MyBatis与Spring的集成
    Java之Gradle【IDEA版】入门到精通(上)(一篇文章精通系列)【安装+基本使用+项目创建+项目部署+文件操作+依赖管理+插件使用】
    查看单元测试用例覆盖率新姿势:IDEA 集成 JaCoCo
  • 原文地址:https://blog.csdn.net/u011835903/article/details/127044086