混沌麻雀搜索优化算法

一、理论基础

1、麻雀搜索算法

请参考这里

2、Tent混沌及高斯变异

2.1 Tent混沌

2.1.1 Tent混沌序列

Tent映射表达式为 z i + 1 = { 2 z i      0 ≤ z i ≤ 1 2 2 ( 1 − z i ) 1 2 < z i ≤ 1 (1) z_{i+1}=\begin{dcases}2z_i\quad\quad\quad\,\,\,\, 0\leq z_i\leq\frac12\\2(1-z_i)\quad\frac12<z_i\leq1\end{dcases}\tag{1} zi+1=2zi0zi212(1zi)21<zi1(1)Tent映射通过贝努利移位变换后表示为 z i + 1 = ( 2 z i ) mod   1 (2) z_{i+1}=(2z_i)\text{mod}\,1\tag{2} zi+1=(2zi)mod1(2)分析发现,Tent混沌序列中存在小周期,并且存在不稳定周期点。为避免其落入小周期点或不稳定周期点,同时不破坏混沌变量的特性,引入随机变量 rand ( 0 , 1 ) × 1 N T \text{rand}(0,1)\times\frac1{N_T} rand(0,1)×NT1,改进后的表达式为 z i + 1 = { 2 z i + rand ( 0 , 1 ) ⋅ 1 N T      0 ≤ z i ≤ 1 2 2 ( 1 − z i ) + rand ( 0 , 1 ) ⋅ 1 N T 1 2 < z i ≤ 1 (3) z_{i+1}=\begin{dcases}2z_i+\text{rand}(0,1)\cdot\frac1{N_T}\quad\quad\quad\,\,\,\, 0\leq z_i\leq\frac12\\2(1-z_i)+\text{rand}(0,1)\cdot\frac1{N_T}\quad\frac12<z_i\leq1\end{dcases}\tag{3} zi+1=2zi+rand(0,1)NT10zi212(1zi)+rand(0,1)NT121<zi1(3)贝努利变换后的表达式为 z i + 1 = ( 2 z i ) mod   1 + rand ( 0 , 1 ) ⋅ 1 N T (4) z_{i+1}=(2z_i)\text{mod}\,1+\text{rand}(0,1)\cdot\frac1{N_T}\tag{4} zi+1=(2zi)mod1+rand(0,1)NT1(4)其中, N T N_T NT为混沌序列内的粒子个数; rand ( 0 , 1 ) \text{rand}(0,1) rand(0,1) [ 0 , 1 ] [0,1] [0,1]之间的随机数。
根据Tent映射的特性,在可行域中产生混沌序列的步骤如下:
步骤1 随机产生 ( 0 , 1 ) (0,1) (0,1)内的初值 z 0 z_0 z0,记 i = 0 i=0 i=0
步骤2 利用式(4)进行迭代,产生 Z \boldsymbol Z Z序列, i i i自增1;
步骤3 如果迭代达到最大次数,程序运行停止,保存产生的 Z \boldsymbol Z Z序列。
如图1所示,可以看出,常见的Logistic映射在 [ 0 , 0.05 ] [0,0.05] [0,0.05] [ 0.95 , 1 ] [0.95,1] [0.95,1] 2个范围的取值概率较高,因此算法寻优速度受Logistic遍历不均匀性的影响,寻优效率会降低;相反,改进的Tent映射的取值则较为均匀,因此算法能够提高初始解的质量,增强算法的全局搜索能力。
在这里插入图片描述

(a)Logistic混沌序列分布图

在这里插入图片描述

(b)Logistic混沌序列分布直方图

在这里插入图片描述

(c)改进Tent混沌序列分布图

在这里插入图片描述

(d)改进Tent混沌序列分布直方图
图1 Logistic混沌和改进Tent混沌序列分布
2.1.2 Tent混沌扰动

本文算法引入混沌扰动,避免其陷入局部最优,提高了全局搜索能力和寻优精度。混沌扰动的步骤描述如下:
步骤1 应用式(4)产生混沌变量 Z d \boldsymbol Z_d Zd
步骤2 将混沌变量载波到待求解问题的解空间: X n e w d = d min ⁡ + ( d max ⁡ − d min ⁡ ) Z d (5) \boldsymbol X_{new}^d=d_{\min}+(d_{\max}-d_{\min})\boldsymbol Z_d\tag{5} Xnewd=dmin+(dmaxdmin)Zd(5)其中, d max ⁡ d_{\max} dmax d min ⁡ d_{\min} dmin分别为第 d d d维变量 X n e w d \boldsymbol X_{new}^d Xnewd的最大和最小值;
步骤3 按式(6)对个体进行混沌扰动: X n e w ′ = ( X ′ + X n e w ) / 2 (6) \boldsymbol X_{new}'=(\boldsymbol X'+\boldsymbol X_{new})/2\tag{6} Xnew=(X+Xnew)/2(6)其中, X ′ \boldsymbol X' X为需要进行混沌扰动的个体; X n e w \boldsymbol X_{new} Xnew为产生的混沌扰动量; X n e w ′ \boldsymbol X_{new}' Xnew为混沌扰动后的个体。

2.2 高斯变异

高斯变异来源于高斯分布,具体指在进行变异操作时,用符合均值为 μ \mu μ、方差为 σ 2 \sigma^2 σ2的正态分布的一个随机数来替代原来的参数值。变异公式为 mutation ( x ) = x ( 1 + N ( 0 , 1 ) ) (7) \text{mutation}(x)=x(1+N(0,1))\tag{7} mutation(x)=x(1+N(0,1))(7)其中, x x x为原来的参数值, N ( 0 , 1 ) N(0,1) N(0,1)表示期望为0、标准差为1的正态分布随机数, mutation ( x ) \text{mutation}(x) mutation(x)为高斯变异后的数值。
由正态分布特性可知,高斯变异的重点搜索区域为原个体附近的某个局部区域。高斯分布局部搜索能力强,对具有大量局部极小值的优化问题,有利于算法高效、高精度地找到全局极小值点,同时还提高了本文算法的鲁棒性。

3、改进麻雀搜索算法

CSSOA算法引入Tent混沌搜索和高斯变异,增加了种群多样性,提高了算法的搜索性能和开拓性能,避免陷入局部最优,其具体实现步骤如下:
步骤1 初始化。包括种群规模 N N N,发现者个数 p N u m p_{\rm{Num}} pNum,侦察预警的麻雀个数 s N u m s_{\rm{Num}} sNum,目标函数的维数 D D D,初始值的上下界 lb \text{lb} lb ub \text{ub} ub,最大迭代次数 T T T或者求解精度 ε \varepsilon ε
步骤2 应用2.1.1节中的Tent混沌序列初始化种群,生成 N N N D D D维向量 Z i Z_i Zi,并将其各分量通过式(5)载波到原问题空间变量的取值范围内。
步骤3 计算每只麻雀的适应度 f i f_i fi,选出当前最优适应度 f g f_{\rm{g}} fg和其对应的位置 x b \bf{xb} xb,以及当前最劣适应度 f w f_{\rm{w}} fw和其对应的位置 x w \bf{xw} xw
步骤4 选取适应度优的前 p N u m p_{\rm{Num}} pNum个麻雀作为发现者,剩余的作为加入者,并根据基本麻雀算法的对应公式更新发现者和加入者的位置。
步骤5 从麻雀种群中随机选取 s N u m s_{\rm{Num}} sNum只麻雀进行侦察预警,并根据基本麻雀算法的对应公式更新其位置。
步骤6 一次迭代完成后,重新计算每只麻雀的适应度值 f i f_i fi和麻雀种群的平均适应度值 f a v g f_{\rm{avg}} favg
1)当 f i < f a v g f_i<f_{\rm{avg}} fi<favg时,表明出现“聚集”现象,按式(7)进行高斯变异,如果比变异之前的个体更优,则用变异后的个体替代变异前的个体,否则保持原个体不变。
2)当 f i ≥ f a v g f_i\geq f_{\rm{avg}} fifavg时,表明出现“发散”趋势,按2.1.2节对第 i i i个个体进行Tent混沌扰动,如果扰动后的个体性能更优,则用扰动后的个体替代扰动前的个体,否则保持原个体不变。
步骤7 根据麻雀种群当前的状态,更新整个种群所经历的最优位置 x b \bf{xb} xb和其适应度 f g f_{\rm g} fg以及最差位置 x w \bf{xw} xw和其适应度 f w f_{\rm w} fw
步骤8 判断算法运行是否达到最大迭代次数或者求解精度,若是,循环结束,输出寻优结果;否则返回步骤4。

二、仿真实验与结果分析

将CSSOA与PSO、GWO、WOA和SSA算法进行对比,实验中取种群规模 N = 30 N=30 N=30,最大迭代次数 T = 100 T=100 T=100,目标函数的维数 D D D和初始值的上下界 u b \rm{ub} ub l b \rm{lb} lb按照文献[1]表1中的基准函数具体选定,发现者个数 p N u m p_{\rm{Num}} pNum和侦察预警的麻雀个数 s N u m s_{\rm{Num}} sNum均取种群规模的 20 % 20\% 20%,安全阈值 S T = 0.6 S_T=0.6 ST=0.6。为避免寻优结果的偶然性,以及证明CSSOA的稳定性,选取各基准函数独立运行30次的实验结果作为实验数据。以文献[1]中表1的F4、F5、F7、F8、F10、F11为例,结果显示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

函数:F4
PSO:最差值: 11.5764, 最优值: 6.8762, 平均值: 9.4895, 标准差: 1.2626, 秩和检验: 3.0199e-11
GWO:最差值: 3.0595, 最优值: 0.41086, 平均值: 1.3539, 标准差: 0.65191, 秩和检验: 3.0199e-11
WOA:最差值: 86.5089, 最优值: 13.8877, 平均值: 63.918, 标准差: 19.535, 秩和检验: 3.0199e-11
SSA:最差值: 1.0146e-18, 最优值: 0, 平均值: 5.0046e-20, 标准差: 2.02e-19, 秩和检验: 2.3535e-05
CSSOA:最差值: 5.0018e-52, 最优值: 0, 平均值: 1.6981e-53, 标准差: 9.1273e-53, 秩和检验: 1
函数:F5
PSO:最差值: 23.429, 最优值: 0.23344, 平均值: 2.7862, 标准差: 4.8172, 秩和检验: 3.0199e-11
GWO:最差值: 0.045264, 最优值: 0.0062914, 平均值: 0.018387, 标准差: 0.010365, 秩和检验: 3.0199e-11
WOA:最差值: 0.14599, 最优值: 0.00039392, 平均值: 0.030096, 标准差: 0.031288, 秩和检验: 2.9215e-09
SSA:最差值: 0.0083458, 最优值: 6.8491e-05, 平均值: 0.0025517, 标准差: 0.0020772, 秩和检验: 0.00030059
CSSOA:最差值: 0.0037456, 最优值: 8.2143e-05, 平均值: 0.00098385, 标准差: 0.00092906, 秩和检验: 1
函数:F7
PSO:最差值: 197.896, 最优值: 94.9562, 平均值: 129.5424, 标准差: 21.5, 秩和检验: 1.2118e-12
GWO:最差值: 95.6919, 最优值: 15.0778, 平均值: 35.0699, 标准差: 16.8391, 秩和检验: 1.2118e-12
WOA:最差值: 203.2543, 最优值: 5.6843e-14, 平均值: 8.0508, 标准差: 37.3147, 秩和检验: 1.2009e-12
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
CSSOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F8
PSO:最差值: 8.5533, 最优值: 4.5545, 平均值: 6.2201, 标准差: 1.0968, 秩和检验: 1.2118e-12
GWO:最差值: 0.058817, 最优值: 0.0099613, 平均值: 0.028611, 标准差: 0.010838, 秩和检验: 1.2118e-12
WOA:最差值: 4.0606e-06, 最优值: 1.5562e-09, 平均值: 5.1568e-07, 标准差: 9.2432e-07, 秩和检验: 1.2118e-12
SSA:最差值: 4.4409e-15, 最优值: 8.8818e-16, 平均值: 1.0066e-15, 标准差: 6.4863e-16, 秩和检验: 0.33371
CSSOA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
函数:F10
PSO:最差值: 6.9033, 最优值: 0.998, 平均值: 2.1515, 标准差: 1.7185, 秩和检验: 0.0002996
GWO:最差值: 15.5038, 最优值: 0.998, 平均值: 5.4593, 标准差: 3.8656, 秩和检验: 7.0833e-11
WOA:最差值: 15.5038, 最优值: 0.998, 平均值: 3.6164, 标准差: 3.6157, 秩和检验: 6.471e-10
SSA:最差值: 12.6705, 最优值: 0.998, 平均值: 7.8366, 标准差: 5.3965, 秩和检验: 0.00011932
CSSOA:最差值: 2.9821, 最优值: 0.998, 平均值: 1.0642, 标准差: 0.36223, 秩和检验: 1
函数:F11
PSO:最差值: -2.7015, 最优值: -3.322, 平均值: -3.128, 标准差: 0.17688, 秩和检验: 1.8608e-06
GWO:最差值: -3.0219, 最优值: -3.3219, 平均值: -3.2397, 标准差: 0.091212, 秩和检验: 8.4848e-09
WOA:最差值: -2.8718, 最优值: -3.3045, 平均值: -3.1655, 标准差: 0.10153, 秩和检验: 1.411e-09
SSA:最差值: -3.203, 最优值: -3.322, 平均值: -3.2823, 标准差: 0.057011, 秩和检验: 0.0083146
CSSOA:最差值: -3.2029, 最优值: -3.322, 平均值: -3.3061, 标准差: 0.04113, 秩和检验: 1

结果表明:所提算法能够克服SSA易陷入局部最优的缺点,提高算法的搜索精度、收敛速度和稳定性。

三、参考文献

[1] 吕鑫, 慕晓冬, 张钧, 等. 混沌麻雀搜索优化算法[J]. 北京航空航天大学学报, 2021, 47(8): 1712-1720.

  • 8
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值