& K9 A2 z$ L7 f- [( C/ R7 `! Z
2 q9 H7 P9 I3 C9 K
8 i; U' s5 _ h( S# H* X
其中,t tt 代表当前迭代数,j = 1 , 2 , 3 , . . . , d j =1, 2, 3, . . . , dj=1,2,3,...,d。i t e m m a x item_{max}item + g# _" w. H9 T% ^' nmax2 b/ B' z4 |7 B# E {
) ^% p L5 T+ Q ; ?7 c2 T! H$ k是一个常数,表示最大的迭代次数。X i j X_{ij}X " m8 X5 D q# V( Z6 dij, ]' ?1 H( ]& A( c, g8 b
( H7 K9 F+ c1 @: A 表示第 i ii 个麻雀在第j jj 维中的位置信息。α ∈ ( 0 , 1 ] α∈(0, 1]α∈(0,1]是一个随机数。R 2 ( R 2 ∈ [ 0 , 1 ] ) R_2(R_2∈[0,1])R $ P! Z$ f! K8 S, @$ _8 d# H2 ! p: E4 g: G$ ]# ` - j$ Y! B, ^2 [- y* G: @/ @
(R , l& `7 \, g& X: z2 R- S! d5 T2 + d, S% `+ X+ I) B 9 Z. P% s8 l6 U0 k- G2 Y2 \
∈[0,1])和 S T ( S T ∈ [ 0.5 , 1 ] ) ST(ST∈[0.5,1])ST(ST∈[0.5,1])分别表示预警值和安全值。Q QQ 是服从正态分布的随机数。L LL 表示一个 1 × d 1×d1×d 的矩阵,其中该矩阵内每个元素全部为 1。: }2 X2 m; k4 q; q/ p) n
- |. s5 @8 G- x ( _$ r4 ~. P/ t- u6 H4 e2 X, l当 R 2 < S T R2< STR2<ST 时,这意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作。如果 R 2 ≥ S T R2≥ STR2≥ST,这表示种群中的一些麻雀已经发现了捕食者,并向种群中其它麻雀发出了警报,此时所有麻雀都需要迅速飞到其它安全的地方进行觅食。+ ]% `3 q( O! i. E$ {
: m, ~" D0 m. o2 R' a* P ) H# \ e2 H: r2 B i1 d. `: X对于加入者,它们需要执行规则(3)和规则(4)。如前面所描述,在觅食过程中,一些加入者会时刻监视着发现者。一旦它们察觉到发现者已经找到了更好的食物,它们会立即离开现在的位置去争夺食物。如果它们赢了,它们可以立即获得该发现者的食物,否则需要继续执行规则(4)。加入者的位置更新描述如下:! L3 U9 {6 G# E. p: c9 {9 F
! ^: h$ \0 u' [- g4 `* \! V/ x# D5 d Q5 D% k* n7 ^& H
其中,其中 X b e s t X_{best}X : a. }, P* c9 }
best 0 v. r- Q0 Z2 y % [8 T1 t2 ~/ E/ n/ W. ] 是当前的全局最优位置。β ββ 作为步长控制参数,是服从均值为 0,方差为 1 的正态分布的随机数。K ∈ [ − 1 , 1 ] K∈[-1,1]K∈[−1,1]是一个随机数,fi则是当前麻雀个体的适应度值。f g f_gf ! X$ C2 z5 A( a+ w# s. |
g$ y, S! B. Z4 I2 s# a3 Y0 ~
5 d5 g6 z7 r" a7 ^3 v 和 f w f_wf 0 v- d( }! y) a- l( ?+ H7 gw 2 m/ d% |, | R$ V4 X4 M ' N1 @& E! A; h8 C- H4 h; q( K 分别是当前全局最佳和最差的适应度值。ε \varepsilonε 的常数,以避免分母出现零。: L1 J0 w; J" k7 g/ z
$ w) S9 w, x, X# i/ x$ D/ ]9 @0 n" p: v0 [- D! C8 i" t
为简单起见,当 f i > f g f_i >f_gf . ^ y" B0 l" z
i ' D4 v* s- h# s ' v( h4 f% Y$ J! v* C4 h4 w
>f a+ ?$ v# q" Qg 3 L5 d, l, W* p" X( s0 h9 E# i7 u . B& Z: c# O* v$ H, R' S$ z 表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。X b e s t X_{best}X 2 b Z0 o% u1 R2 Tbest2 v8 i+ L" G: Y1 p; ^3 T
+ ~7 @0 @6 D# a% A! ^7 y* Q+ a! r1 { 表示这个位置的麻雀是种群中最好的位置也是十分安全的。f i = f g f_i = f_gf n% S) k+ \& K/ Qi # y J6 {# q6 R1 `5 y" ^. T( \8 z, o / K; b9 G2 L# h& X/ f
=f - `/ b7 U) ~' |3 A% a$ ]9 |) |# xg $ V3 [! K9 ?* T! ? 3 n3 J% A3 X0 o* Y 时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。K KK 表示麻雀移动的方向同时也是步长控制参数。 " b4 y1 |6 f, h; ^; Q0 `4 x1 [ 5 X0 R% j) k5 w. G8 U4 T " q. k) i) g9 c8 o9 {) @8 P( Q, g算法流程2 l" Z( A& b( u6 y5 @
d( T6 y7 x8 G( o9 J% R
: }1 ]# N3 x' o1 T0 R
Step1: 初始化种群,迭代次数,初始化捕食者和加入者比列。 - d: h( F! Q( e$ S1 f$ }& a5 U
4 Z- W; `( K$ Y; P. J& x$ ^
Step2:计算适应度值,并排序。+ ~9 i/ x7 s3 `4 i- A$ r
; p8 T" s+ |7 L# q5 t& q7 g6 k5 R
. I4 |" K0 N. \, WStep3:利用式(3)更新捕食者位置。 ) r- k( e0 ^3 A* k* o/ \ r + O0 n0 \! c4 ?: g1 o s* g& @$ Q* L& `/ V0 I; y( U% U
Step4:利用式(4)更新加入者位置。# t4 s$ s, R1 S* O3 ~" G
1 } Z$ N1 E" f- u" D
: a2 L. Q, i% Y. U; p6 o' H& r7 e _
Step5:利用式(5)更新警戒者位置。5 S% X7 {0 N/ n- }2 \3 e
( ^3 k5 J4 ]/ f* z2 E/ q& x* z / B B( B! B4 xStep6:计算适应度值并更新麻雀位置。- g7 S2 \) ^" E' d3 l' o, Q( v1 t
- z( K7 l2 M x4 }& q" [. o' Y
' I. ]# K2 l$ N1 M
Step7:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-6;" D+ ]3 o4 l) b6 r# c# S
' \/ m$ z3 K8 W' r3 {$ R( O