【智能算法】麻雀搜索算法(SSA)原理及实现 | 您所在的位置:网站首页 › 智能优化算法包括哪些模块组成 › 【智能算法】麻雀搜索算法(SSA)原理及实现 |
2020年,Xue等人受麻雀觅食行为和逃避觅食者自然行为启发,提出了麻雀搜索算法(Sparrow Search Algorithm, SSA)。 2.算法原理 2.1算法思想自然界中麻雀主要有觅食和反觅食两种行为: 觅食:麻雀中分为探索者和追随者,能够寻找较好食物的麻雀(适应度函数较高)为探索者,其余麻雀为追随者受到探索者方向影响反觅食:麻雀群体中一定比例的麻雀会进行侦察,当发现觅食者来临时会做出相应的行为 2.2算法过程群体位置初始化:
X
=
l
b
+
r
a
n
d
∗
(
u
b
−
l
b
)
X=lb+rand*(ub-lb)
X=lb+rand∗(ub−lb) 其中,
u
b
,
l
b
ub,lb
ub,lb分别代表种群上下位置边界。 探索者位置更新:
x
i
t
+
1
=
{
x
i
t
∗
exp
(
−
i
α
∗
i
t
e
r
max
)
,
R
2
<
S
T
x
i
t
+
Q
,
R
2
≥
S
T
x_{i}^{t+1}=\begin{cases}x_{i}^{t}*\exp{(\frac{-i}{\alpha *iter_{\max}})},R_{2}Q⋅exp(i2xworstt−xit),i>n/2xpt+1+∣xit−xpt+1∣∗A+,otherwise 当
i
>
n
/
2
i>n/2
i>n/2时,适应度较低的麻雀没有获取到食物,因此需要获得更多食物;其他情况说明,麻雀在当前最优位置附近随机寻找一个位置。 侦察预警:
x
i
t
+
1
=
{
x
b
i
t
+
β
∗
(
x
i
t
−
x
b
i
t
)
,
f
i
≠
f
g
x
i
t
+
K
(
x
i
t
−
x
w
i
t
∣
f
i
−
f
w
∣
+
ε
)
,
f
i
=
f
g
x_{i}^{t+1}=\begin{cases}xb_{i}^{t}+\beta *(x_{i}^{t}-xb_{i}^{t}),f_{i}\neq f_{g}\\ x_{i}^{t}+K\Bigg(\frac{x_{i}^t-xw_{i}^t}{\mid f_i-f_w\mid+\varepsilon}\Bigg),f_{i}=f_{g}\end{cases}
xit+1=⎩
⎨
⎧xbit+β∗(xit−xbit),fi=fgxit+K(∣fi−fw∣+εxit−xwit),fi=fg 当
f
i
≠
f
g
f_i \neq f_g
fi=fg,麻雀正处于种群的边缘,容易受到觅食者攻击,此时朝着最优麻雀飞行;当
f
i
=
f
g
f_i=f_g
fi=fg时,此时麻雀处于危险位置,远离最差麻雀位置。 伪代码 优化问题 以CEC2005测试函数为例 clear,clc,close all x = -32:0.1:32; y = x; L = length(x); for i = 1:L for j = 1:L f(i,j) = fun([x(i) y(j)]); end end surfc(x, y, f, 'LineStyle', 'none', 'FaceAlpha',0.5); % 设定麻雀参数 pop = 50; dim = 2; ub = 32; lb = -32; maxIter = 100; fobj = @(x) fun(x); % 求解 [Best_pos, Best_fitness, Iter_curve, History_pos, History_best] = SSA(pop, maxIter, lb, ub, dim,fobj);
[1] Xue J, Shen B. A novel swarm intelligence optimization approach: sparrow search algorithm[J]. Systems science & control engineering, 2020, 8(1): 22-34. |
CopyRight 2018-2019 实验室设备网 版权所有 |