基于随机游走改进的麻雀搜索算法
1.随机游走策略
随机游走的过程在数学上可以表示为:
X
(
t
)
=
[
0
,
c
u
s
s
u
m
(
2
r
(
t
1
)
−
1
)
,
.
.
.
,
c
u
s
s
u
m
(
2
r
(
t
n
)
−
1
)
]
(1)
X(t)=[0,cussum(2r(t_{1})-1),...,cussum(2r(t_{n})-1)]\tag{1}
X(t)=[0,cussum(2r(t1)−1),...,cussum(2r(tn)−1)](1)
式中:
X
(
t
)
X(t)
X(t)为随机游走的步数集;
c
u
m
s
u
m
cumsum
cumsum 为计算累加和;
t
t
t 为随机游走的步数(本文取最大迭代次数);
r
(
t
)
r(t)
r(t)为一个随机函数,定义为
r
(
t
)
=
{
1
,
r
a
n
d
>
0.5
0
,
r
a
n
d
≤
0.5
(2)
r(t)=\begin{cases} 1,rand>0.5\\0,rand\leq0.5\end{cases} \tag{2}
r(t)={1,rand>0.50,rand≤0.5(2)
式中:
r
a
n
d
rand
rand为[0,1]的随机数。
由于可行域存在边界,不能直接用式(1)更新蚂蚁的位置。为确保行走在可行域范围内随机游走,需根据式(3)对其进行归一化
X
i
t
=
(
X
i
t
−
a
i
)
∗
(
d
i
t
−
c
i
t
)
(
b
i
−
a
i
)
+
c
i
t
(3)
X_{i}^{t}=\frac {(X_{i}^{t}-a_{i})*(d_{i}^{t}-c_{i}^{t})}{(b_{i}-a_{i})}+c_{i}t\tag{3}
Xit=(bi−ai)(Xit−ai)∗(dit−cit)+cit(3)
式中:
a
i
a_{i}
ai 为第$ i$ 维变量随机游走的最小值;
b
i
b_{i}
bi为第
i
i
i 维变量随机游走的最大值;
c
t
i
c_{t}^{i}
cti为第
i
i
i维变量再第
t
t
t次迭代的最小值;
d
i
t
d_{i}^{t}
dit为第
i
i
i 维变量在第$ t$ 次迭代最大值。
2.基于随机策略的麻雀搜索算法
基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958
该改进主要是在麻雀搜索后,利用随机游走对最优麻雀进行扰动,提高其搜索性,在开始迭代之初,随机游走边界较大,有利于提高全局搜索性,在迭代多次后,游走边界变小,提高算法的最优位置局部搜索性。
算法流程
Step1: 初始化种群,迭代次数,初始化捕食者和加入者比列。
Step2:计算适应度值,并排序。
Step3:麻雀更新捕食者位置。
Step4:麻雀更新加入者位置。
Step5:麻雀更新警戒者位置。
Step6:计算适应度值并更新麻雀位置。
Step7. 利用随机游走更新最优麻雀
Step8.计算适应度值并更新麻雀位置。
Step9:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-8;