改进搜索机制的单纯形法引导麻雀搜索算法
文章目录
摘要:为了改善基本麻雀搜索算法在处理优化问题时存在的收敛精度不高,速度慢和易陷入局部极小值的问题,本文提出一种改进搜索机制的单纯形法引导麻雀搜索算法。首先,针对发现者搜索过程随机性过高的问题,改进发现者搜索机制,提高算法收敛速度和稳定性;其次,改进麻雀搜索算法侦察机制,提高算法跳出局部极小值能力;最后,对每一次迭代适应度较差的部分个体采用单纯形法的相关操作,提高算法搜索能力。
1.麻雀优化算法
基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958
2. 改进麻雀算法
2.1 改进发现者搜索机制
发现者负责搜索具有丰富食物的区域, 并为其 他个体提供搜索方向, 是整个种群运作的核心, 因 此发现者的搜索能力在一定程度上对整个算法的收 敛起着重要影响。由公式(2)可知, 当搜索范围内没 有出现捕食者时, 发现者的位置更新算子存在一定 的随机性, 这种随机性可能会导致算法稳定性降低, 收玫速度变慢。针对上述问题, 本文改进了
S
S
A
\mathrm{SSA}
SSA 发 现者的搜索机制, 改进的发现者位置更新数学模型 描述如公式(5)所示:
X
i
,
d
t
+
1
=
{
X
i
,
d
t
⋅
(
exp
(
T
max
−
t
T
max
−
1
)
⋅
1
e
−
1
)
k
,
if
R
2
<
S
T
X
i
,
d
t
+
Q
⋅
L
,
if
R
2
≥
S
T
(5)
X_{i, d}^{t+1}=\left\{\begin{array}{c} X_{i, d}^t \cdot\left(\exp \left(\frac{T_{\max }-t}{T_{\max }}-1\right) \cdot \frac{1}{e-1}\right)^k, \text { if } R_2<S T \\ X_{i, d}^t+Q \cdot L, \text { if } R_2 \geq S T \end{array}\right. \tag{5}
Xi,dt+1={Xi,dt⋅(exp(TmaxTmax−t−1)⋅e−11)k, if R2<STXi,dt+Q⋅L, if R2≥ST(5)
式中,
t
t
t 为当前迭代次数,
k
k
k 为调节因子, 通过
k
k
k 值可 以自适应调节发现者位置更新算子下降速率,
k
k
k 值越 大, 算子下降速率越大。
由公式(5)可知, 改进的位置更新公式中引入了 迭代次数
t
t
t, 使发现者位置更新算子随迭代次数增 加呈非线性变化, 增加了算法的多样性; 同时, 结 合调节因子
k
k
k, 可自适应调节位置更新算子的下降 速率, 平衡了算法的搜索能力; 最后, 发现者位置 更新脱离了随机因子
α
\alpha
α 的影响, 算法更加稳定。
2.2 改进侦察机制
在原始 SSA 中, 当侦察者预警到危险(即意识 到有陷入局部极值的风险)时, 对于处于种群中心的 侦察者, SSA 选择让其靠近邻居减少被捕食的风险, 这样会导致算法陷入局部最优值而停止搜索; 对于 处在种群边缘的侦察者, SSA 利用随机步长控制侦 察者向安全区域靠近, 而这种随机步长可能会导致 算法收敛速度变慢。
综上所述, 针对 SSA 侦察机制存在的局限性, 本文通过引入新的侦察因子
Φ
\Phi
Φ 改进 SSA 的侦察机 制, 对于处于种群中心的侦察者, 通过非线性递增 的侦察因子
Φ
1
\Phi_1
Φ1 使其逐步远离当前位置, 防止算法 陷入局部最优值; 对于处在种群边缘的侦察者, 采 用非线性递减的侦察因子
Φ
2
\Phi_2
Φ2 代替随机步长因子, 在保证侦察者安全的同时使其逐步靠近最优位置, 加快算法收敛。
Φ
1
\Phi_1
Φ1 和
Φ
2
\Phi_2
Φ2 的数学模型描述如公式(6) 所示:
{
Φ
1
(
t
)
=
Φ
i
+
(
Φ
f
−
Φ
i
)
⋅
(
1
−
t
T
max
)
n
Φ
2
(
t
)
=
Φ
i
−
(
Φ
f
−
Φ
i
)
⋅
(
1
−
t
T
max
)
n
(6)
\left\{\begin{array}{l} \Phi_1(t)=\Phi_i+\left(\Phi_f-\Phi_i\right) \cdot\left(1-\frac{t}{T_{\max }}\right)^n \\ \Phi_2(t)=\Phi_i-\left(\Phi_f-\Phi_i\right) \cdot\left(1-\frac{t}{T_{\max }}\right)^n \end{array}\right. \tag{6}
⎩
⎨
⎧Φ1(t)=Φi+(Φf−Φi)⋅(1−Tmaxt)nΦ2(t)=Φi−(Φf−Φi)⋅(1−Tmaxt)n(6)
式中,
Φ
i
\Phi_i
Φi 和
Φ
f
\Phi_f
Φf 分别表示
Φ
\Phi
Φ 的初始值和最终值,
T
max
T_{\max }
Tmax 为最大迭代次数,
n
n
n 为非线性调节系数。
2.3 单纯形法策略
单纯形法在多维优化问题中表现出色,具有鲁棒性高、局部优化能力强和参数简单等优点 [16] 。单纯形法通过对适应度较差的个体进行反射、扩张和收缩等操作来改变个体位置,其中反射操作能使个体反方向搜索,增加个体搜索空间;扩张操作使个体远离最优解,防止算法陷入局部极小值点;压缩操作能使个体更加接近最优位置。其具体实现步骤 如下所示:
Step1 初始化种群, 计算个体适应度并排序, 记录全局最优个体 X b X_b Xb 和次优个体 X t X_t Xt 以及它们的适 应度值 f b f_b fb 和 f t , X c f_t, X_c ft,Xc 定义为 X c = ( X b + X t t ) / 2 X_c=\left(X_b+X_t t\right) / 2 Xc=(Xb+Xtt)/2 。
Step2 对 m m m 个位置较差的点 w w w 进行反射操作, X r = X c + α ( X c − X w ) X_r=X_c+\alpha\left(X_c-X_w\right) Xr=Xc+α(Xc−Xw), 其中 α \alpha α 表示反射系数。
Step3 判断, 如果 f r < f b f_r<f_b fr<fb, 则进行扩张操作, X y = X c + β ( X r − X c ) , β X_y=X_c+\beta\left(X_r-X_c\right), \beta Xy=Xc+β(Xr−Xc),β 为扩张系数; 如果 f y < f b f_y<f_b fy<fb, 则 w = X y w=X_y w=Xy, 反之 w = X r w=X_r w=Xr 。
Step4 判断, 如果 f r < f w f_r<f_w fr<fw, 则进行压缩操作, X z = X c − γ ( X r − X c ) , γ X_z=X_c-\gamma\left(X_r-X_c\right), \gamma Xz=Xc−γ(Xr−Xc),γ 为压缩系数; 如果 f z < f w f_z<f_w fz<fw, 则 w = X z w=X_z w=Xz, 反之 w = X r w=X_r w=Xr 。
Step5 判断, 如果
f
w
>
f
r
>
f
t
f_w>f_r>f_t
fw>fr>ft, 则进行收缩操作,
X
s
=
X
c
−
σ
(
X
w
−
X
c
)
,
σ
X_s=X_c-\sigma\left(X_w-X_c\right), \sigma
Xs=Xc−σ(Xw−Xc),σ 为收缩系数, 且
σ
=
γ
\sigma=\gamma
σ=γ; 如果
f
s
<
f
w
f_s<f_w
fs<fw, 则
w
=
X
s
w=X_s
w=Xs, 反之
w
=
X
r
w=X_r
w=Xr 。
为了改善 SSA 求解速度慢、精度不高的问题, 本文在算法每次迭代结束时, 对位置较差的
m
m
m 个麻 雀个体进行单纯形法操作, 增强 SSA 的搜索能力。
SMSSA 实现步骤如下所示:
步骤 1 初始化种群和 SMSSA 参数: 最大迭代 次数
T
max
T_{\text {max }}
Tmax , 种群规模
N
N
N, 搜索上下界
u
b
u b
ub 和
l
b
l b
lb, 维度
d
d
d, 发现者比例
P
P
P 。
步骤 2 计算个体适应度并排序, 记录最优、 次优和最差适应度个体位置:
X
b
、
X
t
X_b 、 X_t
Xb、Xt 和
X
w
X_w
Xw, 及它们 的适应度值
f
b
、
f
t
f_b 、 f_t
fb、ft 和
f
w
f_w
fw 。
步骤 3 根据公式(5)更新发现者位置。
步骤 4 根据公式(3)更新加入者位置。
步骤 5 根据公式(6)更新侦察者位置。
步骤 6 定义
X
c
=
(
X
b
+
X
t
)
/
2
X_c=\left(X_b+X_t\right) / 2
Xc=(Xb+Xt)/2, 对
m
m
m 个位置较差 的个体
w
w
w 进行反射操作,
X
r
=
X
c
+
α
(
X
c
−
X
w
)
X_r=X_c+\alpha\left(X_c-X_w\right)
Xr=Xc+α(Xc−Xw), 反射个 体适应度为
f
r
f_r
fr 。
步骤 7 根据单纯形法判断
f
r
、
f
b
、
f
w
f_r 、 f_b 、 f_w
fr、fb、fw 和
f
t
f_t
ft 之间 大小关系, 然后决定对适应度最差的
m
m
m 个个体行执 行扩张、压缩或伸缩操作。
步骤 8 循环步骤 2-步骤 7, 判断是否满足迭 代条件, 满足则跳出循环。
步骤 9 算法结朿, 返回是优位置及适应度。
3.实验结果
4.参考文献
[1]刘成汉,何庆.改进搜索机制的单纯形法引导麻雀搜索算法[J/OL].计算机工程与科学:1-9[2021-12-24].http://kns.cnki.net/kcms/detail/43.1258.TP.20211223.0930.002.html.