螺旋探索与自适应混合变异的麻雀搜索
文章目录
摘要:针对麻雀搜索算法(SSA)收敛速度慢,易陷入局部最优的问题,提出一种螺旋探索与自适应混合变异的麻雀搜索算法(SHSSA)。首先,采用一种无限次折叠的ICMIC混沌初始化种群,增加种群多样性和遍历性,为全局寻优奠定基础;其次,融入一种螺旋探索策略,增强发现者探索未知区域的能力,提高算法的全局搜索性能;然后,提出一种基于精英差分和随机反向的混合变异策略,加快算法收敛速度,改善算法跳出局部最优的能力。
1.麻雀优化算法
基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958
2. 改进麻雀算法
2.1 ICMIC 混沌初始化种群
在群智能优化算法中, 初始种群的分布状态, 对于算法的收玫速度和寻优精度至关重要。在处理末知分布问题时, 初始种群应 尽可能均匀分布在搜索空间中, 保持较高的多样性。在 SSA 中, 采用随机变量生成初始种群, 这种方法遍历性较低, 个体分布不均 匀, 一定程度上影响了算法的寻优性能。
混沌变量具有遍历性和规律性, 常被应用于优化问题中。Logistic 映射和 Tent 映射是最常用的混沌模型, 但是两者在迭代区域内 的折叠次数有限, 且存在有理数不动点。文献[13]提出的 ICMIC 映射是一种映射折叠次数无线的混沌模型, 相较于 Logistic 映射和 Tent 映射, 该映射具有遍历均匀和收敛较快等优点。因此本文采用 ICMIC 映射初始化 SSA 种群, ICMIC 映射的数学表达式如下:
{
z
n
+
1
=
sin
(
α
π
z
n
)
,
α
∈
(
0
,
+
∞
)
−
1
≤
z
n
≤
1
,
z
n
≠
0
(5)
\left\{\begin{array}{c} z_{n+1}=\sin \left(\frac{\alpha \pi}{z_n}\right), \alpha \in(0,+\infty) \\ -1 \leq z_n \leq 1, z_n \neq 0 \end{array}\right. \tag{5}
{zn+1=sin(znαπ),α∈(0,+∞)−1≤zn≤1,zn=0(5)
将 ICMIC 混沌映射到搜索空间中, 得到种群初始位置:
x
i
=
x
l
b
+
(
x
u
b
−
x
l
b
)
⋅
1
+
z
i
2
(6)
x_i=x_{l b}+\left(x_{u b}-x_{l b}\right) \cdot \frac{1+z_i}{2} \tag{6}
xi=xlb+(xub−xlb)⋅21+zi(6)
其中
x
l
b
、
x
u
b
x_{l b} 、 x_{u b}
xlb、xub 分别为每个个体在各维度的上下界,
z
i
z_i
zi 为式(5)产生的混沌序列。
2.2 螺旋探索策略
在 SSA 中, 发现者作为优势群体, 在解空间区域内进行大范围搜索受食; 跟随者受发现者引领, 在发现者周围进行详细搜索。 可见, 发现者的全局勘探能力更强, 跟随者则更擅长局部开发。实际上, 由公式(2)可知, 当
R
2
<
S
T
R_2<S T
R2<ST 时, 发现者的每一维都会以指数 形式减小, 导致搜索范围不够, 容易陷入局部最优, 造成收玫精度降低。
飞蛾是一种类似于蝴蝶的昆虫, 在夜间飞行时采用横向定位机制来导航。在这种机制中, 飞蛾通过保持相对于月 亮的固定角度飞行。由于月亮离飞蛾很远, 飞蛾利用这种近似的平行光可以保持直线飞行。但实际中存在很多人造光源, 这种光源 距离飞蛾非常近, 当飞蛾与人造光源保持固定角度飞行时, 就会导致横向定位机制失效, 产生围绕光源螺旋式的飞行路径。受飞蛾 螺旋飞行的启发, 本文在发现者位置更新方式中加入一种螺旋探索因子, 使得发现者拥有多种搜索路径来更好的调整自身位置, 从 而提高算法的全局搜索性能。具备螺旋探索的发现者位置更新公式如下:
x
i
d
t
+
1
=
{
z
⋅
x
i
d
t
⋅
exp
(
−
i
/
α
T
)
,
R
2
<
S
T
x
i
d
t
+
Q
⋅
L
⋅
z
,
R
2
≥
S
T
z
=
exp
(
b
×
p
)
⋅
cos
(
2
π
p
)
(7)
x_{i d}^{t+1}=\left\{\begin{array}{c} z \cdot x_{i d}^t \cdot \exp (-i / \alpha T), R_2<S T \\ x_{i d}^t+Q \cdot L \cdot z, R_2 \geq S T \\ z=\exp (b \times p) \cdot \cos (2 \pi p) \end{array}\right. \tag{7}
xidt+1=⎩
⎨
⎧z⋅xidt⋅exp(−i/αT),R2<STxidt+Q⋅L⋅z,R2≥STz=exp(b×p)⋅cos(2πp)(7)
式中:
z
z
z 为螺旋探索因子,
b
b
b 为螺旋形状常数,
p
p
p 表示路径系数, 为
[
−
1
,
1
]
[-1,1]
[−1,1] 中的随机数。融入螺旋探索后,发现者将以螺旋形式在搜索空间中搜索,扩展了发现者探索未知区域的能力,使算法跳出局部最优的可能性增加,有效提高算法的全局搜索性能。
2.3 基于精英差分和随机反向的自适应混合变异
基本 SSA 算法最优个体的更新依赖于每次迭代种群的更新, 即每次迭代后, 由当前适应度最好的个体替代最优个体, 算 法没有主动对最优个体进行扰动。若最优个体陷入局部极值空间, 则会导致算法难以跳出局部最优, 出现早熟收敛现象。为 了加快算法收玫速度、改善算法跳出局部最优的能力, 本文提出一种自适应混合变异策略, 在每次迭代后对最优麻雀进行扰 动。
(1) 精英差分变异
差分进化是利用当前种群的距离和方向信息指引搜索的一种进化算法
[
14
,
15
]
[14,15]
[14,15] 。该算法在变异阶段, 通过随机选择的两个个体的差向量加权后与第三个个体相加来产生新个体, 即:
x
i
′
=
x
i
+
F
(
x
rand
1
−
x
rand
2
)
(8)
x_i^{\prime}=x_i+F\left(x_{\text {rand } 1}-x_{\text {rand } 2}\right) \tag{8}
xi′=xi+F(xrand 1−xrand 2)(8)
式中,
F
∈
[
0
,
2
]
F \in[0,2]
F∈[0,2] 为缩放因子。文献[16]指出, 缩放因子
F
F
F 太大时, 算法近似随机搜索, 寻优精度降低; 当
F
F
F 太小时, 种群多 样性下降很快, 算法容易陷入局部最优。
通过上述分析可知, 差分进化受参数
F
F
F 的影响较大, 且随机选择差分个体具有盲目性。考虑到精英个体包含更多有益 信息, 为了加强精英个体间的信息交流, 本文提出一种精英差分变异策略, 公式如下:
x
best
′
=
r
1
(
x
2
−
x
best
)
+
r
2
(
x
3
−
x
best
)
(9)
x_{\text {best }}{ }^{\prime}=r_1\left(x_2-x_{\text {best }}\right)+r_2\left(x_3-x_{\text {best }}\right)\tag{9}
xbest ′=r1(x2−xbest )+r2(x3−xbest )(9)
式中,
r
1
、
r
2
r_1 、 r_2
r1、r2 为
(
0
,
1
)
(0,1)
(0,1) 的随机数。
x
best
x_{\text {best }}
xbest 为最优解,
x
2
x_2
x2 为次优解,
x
3
x_3
x3 为第三优解。
式(9)中舍弃了缩放因子, 不需要考虑参数选择对算法性能的影响; 精英解的引入, 使得算法的进化方向更明确, 不再 具有盲目性。在算法迭代后, 通过式(9)产生新解, 能够提升算法在当前最优解附近发现全局最优解的可能性。
(2) 随机反向学习
反向学习是 Tizhoosh
[
17
]
{ }^{[17]}
[17] 提出的一种优化策略, 该策略通过计算当前解在搜索空间中的反向解来扩大搜索范围。一般反向 学习的数学表达式如下:
x
j
′
=
x
l
b
+
x
u
b
−
x
j
(10)
x_j^{\prime}=x_{l b}+x_{u b}-x_j\tag{10}
xj′=xlb+xub−xj(10)
文献[18]表明一般反向学习在算法迭代前期作用显著, 而在算法迭代后期作用不明显。因为在迭代后期, 大部分个体集 中在小范围区域, 反向解所在区域也集中于此, 所以通过一般反向学习的方式很难跳出当前极值区域。针对该问题, 本文提 出一种新的随机反向学习策略, 通过在一般反向学习中引入随机因子, 进一步扩展反向解位置, 增强算法跳出局部极值的能 力。随机反向学习的公式如下:
x
j
′
=
k
1
x
l
b
+
k
2
(
x
u
b
−
x
j
)
(11)
x_j^{\prime}=k_1 x_{l b}+k_2\left(x_{u b}-x_j\right) \tag{11}
xj′=k1xlb+k2(xub−xj)(11)
式中,
k
1
k_1
k1 和
k
2
k_2
k2 为随机因子, 均为
0
∼
1
0 \sim 1
0∼1 之间的随机数。
(3) 自适应混合变异
SSA 算法求得全局最优解的关键是算法能否有效跳出局部最优。若只是加入单一的变异策略, 则在加快收玫速度的同 时也会导致算法陷入局部最优。因此, 本文将精英差分变异和随机反向学习融入到 SSA 中, 利用判定系数
r
r
r 对最优麻雀位 置进行混合变异扰动。如公式(12)所示, 当
r
<
0.5
r<0.5
r<0.5 时, 采用精英差分策略进行小范围扰动; 当
r
⩾
0.5
r \geqslant 0.5
r⩾0.5 时, 采用随机反向策略 进行大范围扰动。两种策略相辅相成, 促使算法跳出局部极值空间, 在求解不同优化问题时的适应性更强。
x
best
′
=
{
r
1
(
x
2
−
x
best
)
+
r
2
(
x
3
−
x
best
)
,
r
<
0.5
k
1
x
l
b
+
k
2
(
x
u
b
−
x
best
)
,
r
≥
0.5
(12)
x_{\text {best }}{ }^{\prime}=\left\{\begin{array}{c} r_1\left(x_2-x_{\text {best }}\right)+r_2\left(x_3-x_{\text {best }}\right), r<0.5 \\ k_1 x_{l b}+k_2\left(x_{u b}-x_{\text {best }}\right), r \geq 0.5 \end{array}\right. \tag{12}
xbest ′={r1(x2−xbest )+r2(x3−xbest ),r<0.5k1xlb+k2(xub−xbest ),r≥0.5(12)
其中
r
r
r 为 0 到 1 的随机数。
由于变异后的麻雀位置不一定由于原始位置, 因此, 采用贪婪策略, 选择是否将原始解用变异解替代, 即只有当变异解 的适应度值优于原始解时才进行替换, 公式如下:
x
′
=
{
x
best
′
,
f
(
x
best
′
)
<
f
(
x
best
)
x
best
,
f
(
x
best
′
)
≥
f
(
x
best
)
(13)
x^{\prime}=\left\{\begin{array}{l} x_{\text {best }}^{\prime}, f\left({x_{\text {best }}}^{\prime}\right)<f\left(x_{\text {best }}\right) \\ x_{\text {best }}, f\left(x_{\text {best }}^{\prime}\right) \geq f\left(x_{\text {best }}\right) \end{array}\right. \tag{13}
x′={xbest ′,f(xbest ′)<f(xbest )xbest ,f(xbest ′)≥f(xbest )(13)
其中
x
′
x^{\prime}
x′ 为贪婪选择后最优麻雀的位置。
SHSSA 算法:
输入: 搜索空间和目标函数
输出: 最优解
01)参数初始化 (种群规模
N
N
N, 发现者
P
D
P D
PD 及侦察者
S
D
S D
SD 比例, 侦察预警值
S
T
S T
ST, 最大迭代次数
T
T
T 等)
02) 根据式(6)生成初始种群
- 计算初始适应度值, 并排序, 找出当前最优和最劣适应度的麻雀位置
- for i = 1 : T i=1: T i=1:T
- for j = 1 : P D ∗ N j=1: P D^* N j=1:PD∗N
-
p
=
−
1
+
2
∗
\quad p=-1+2 *
p=−1+2∗ rand
07)根据式(7)计算发现者位置 - end for
- for
j
=
P
D
∗
N
:
N
j=P D^* N: N
j=PD∗N:N
10)根据式(3)计算跟随者位置 - end for
12)在种群中随机选取 S D ∗ N S D^* N SD∗N 只麻雀作为侦察者 - for
j
=
1
:
S
D
∗
N
j=1: S D^* N
j=1:SD∗N
14)根据式(4)计算侦察者位置 - end for
- 计算每只个体适应度值并排序, 找到当前最优个体和最劣个体
17)根据式(12)计算当前最优个体的变异位置
18)根据式(13)选择是否替换最优麻雀位置 - end for
3.实验结果
4.参考文献
[1]陈功,曾国辉,黄勃,刘瑾.螺旋探索与自适应混合变异的麻雀搜索算法[J/OL].小型微型计算机系统:1-12[2021-12-24].http://kns.cnki.net/kcms/detail/21.1106.tp.20211214.1828.006.html.