文章目录
一、理论基础
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=⎩⎪⎨⎪⎧2zi0≤zi≤212(1−zi)21<zi≤1(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)⋅NT10≤zi≤212(1−zi)+rand(0,1)⋅NT121<zi≤1(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映射的取值则较为均匀,因此算法能够提高初始解的质量,增强算法的全局搜索能力。
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+(dmax−dmin)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}}
fi≥favg时,表明出现“发散”趋势,按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.