: K' p; I& ^7 M2 }
(1) 0 |: F: u* u+ ], E- \" g k+ \: T* c) H. W' ?5 y& L& E
* L( C3 @) u$ o; x, S$ W& h1 s
其中,d dd 表示待优化问题变量的维数,n nn 则是麻雀的数量。那么,所有麻雀的适应度值可以表示为如下形式:9 s& C! ~, l Z: E! V a f
* f' l; v# b* |8 r5 _9 c
0 t1 B }0 Q9 M3 X
" ^2 y. n; m, h! Z0 n$ W4 A
其中,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 2 K/ s F* s* X) a
max 9 q5 v' o0 Y& X U 9 @! O% b, H+ W+ S. A& e/ a" v, c
5 y! S9 H, ]$ g+ y是一个常数,表示最大的迭代次数。X i j X_{ij}X / ~ z' P: R9 P+ }ij % E2 ?# ?5 s# I: P 8 Y, D0 E- g, K
表示第 i ii 个麻雀在第j jj 维中的位置信息。α ∈ ( 0 , 1 ] α∈(0, 1]α∈(0,1]是一个随机数。R 2 ( R 2 ∈ [ 0 , 1 ] ) R_2(R_2∈[0,1])R ' P0 S: S/ [, x+ H1 } j. Z
2: z: s/ H4 U* a$ o5 h0 T
# f. k4 [. D$ y! C (R 4 M& p7 w+ _( d; Z+ `: B! |" F* T2 - Q1 j9 w% I* Y% E5 o ; p# u3 B6 Y* n; Z
∈[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。! X1 N- w. a5 D; f$ e% s+ U
% Y) j+ G5 N. i- u
; C$ ~ E8 [6 v当 R 2 < S T R2< STR2<ST 时,这意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作。如果 R 2 ≥ S T R2≥ STR2≥ST,这表示种群中的一些麻雀已经发现了捕食者,并向种群中其它麻雀发出了警报,此时所有麻雀都需要迅速飞到其它安全的地方进行觅食。 6 v/ Q- g! K9 J ( f+ }5 u% g! S/ |& q2 _; j # i7 G% P6 k* E- m8 x4 P, ^对于加入者,它们需要执行规则(3)和规则(4)。如前面所描述,在觅食过程中,一些加入者会时刻监视着发现者。一旦它们察觉到发现者已经找到了更好的食物,它们会立即离开现在的位置去争夺食物。如果它们赢了,它们可以立即获得该发现者的食物,否则需要继续执行规则(4)。加入者的位置更新描述如下: " y& Z) K" e! Y o# c2 H
8 `4 O6 _5 C3 x4 i/ b* g (5) 7 |1 G$ ]# e4 d. Q' `' D5 ?+ Q 6 |5 B1 }, C3 X. ~0 P * v' r* i3 H, A* B+ Q6 k# ~其中,其中 X b e s t X_{best}X 0 \0 Y3 J% {$ I0 }best ) ]6 g, z( @# T! l- y - m4 x" V& G4 c9 S# Y9 S5 x 是当前的全局最优位置。β ββ 作为步长控制参数,是服从均值为 0,方差为 1 的正态分布的随机数。K ∈ [ − 1 , 1 ] K∈[-1,1]K∈[−1,1]是一个随机数,fi则是当前麻雀个体的适应度值。f g f_gf " h2 D, w7 |" d- R7 K
g M5 h" R' `3 A1 d2 Y# a
* p. f6 P9 E6 K3 G% v7 k | 和 f w f_wf 5 F3 d/ c, {8 l3 Q+ l/ I- M" rw , i: {1 O1 @5 p 3 X; ^5 {- Z0 I& z
分别是当前全局最佳和最差的适应度值。ε \varepsilonε 的常数,以避免分母出现零。$ y& w0 g7 s% w
0 F7 L' x+ c; g# K& e+ {* |$ ?
0 d q# i, d& \! C0 h为简单起见,当 f i > f g f_i >f_gf . n8 ~0 ?3 V/ x8 z7 n
i + L3 P+ b) i3 C, V ; ]- z2 y" M5 f8 c" f5 C6 W0 ] F
>f ) J4 ~; z1 e& _ |' R. Ig5 P" G4 j" ~7 f3 |0 `" q0 I4 o' J
. Q. r# u' A9 p2 \ R 表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。X b e s t X_{best}X . E* I, c) q. W0 Hbest% p9 m, A% U2 L' }, f3 a; i
8 v1 g! ]* N- N' `# J
表示这个位置的麻雀是种群中最好的位置也是十分安全的。f i = f g f_i = f_gf 3 S+ l6 k4 C( e( O8 }2 p( e6 {
i3 w; a+ z/ R& S% }
$ Y( d* K$ y3 T. j2 |# Y6 c2 { =f 7 h7 p7 J6 Y; D1 G! H1 m% z: Rg, i' t5 z1 u! [4 }) N |. {' P. c5 @; }4 R
$ ~$ v$ J3 q+ w* U0 }
时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。K KK 表示麻雀移动的方向同时也是步长控制参数。 8 z7 d9 V- Z; Z5 y# \) U* b% f/ U/ Z; a0 E" O
6 U" z1 D6 K# w% q ~
算法流程 & m4 E7 y3 n3 J* i6 Y$ c) E y7 }1 I+ O
, X( x; ^/ H( P: F' `! L tStep1: 初始化种群,迭代次数,初始化捕食者和加入者比列。- S6 g! T& ]' R+ w0 f. B6 k; _
# L: V/ O4 z" }9 o* M+ B5 A( e- L% s6 W# Z, a' t! J1 i
Step2:计算适应度值,并排序。9 q' i7 f8 y0 F+ B
; {4 r! d" c+ x9 r! j$ F/ f) J/ R
- u& e4 J( Z6 f/ AStep3:利用式(3)更新捕食者位置。/ v* D8 B- O- e5 c6 a" q
, G" k2 ]% t) B4 v# m& o
; u) I: c `) `; n6 q
Step4:利用式(4)更新加入者位置。 + f7 L3 c' C6 X# {& } w+ r' ] 2 D4 r# ~' i! G; ]0 m p4 J7 p/ D, @) g% ` `# G1 Q9 Z3 H# A
Step5:利用式(5)更新警戒者位置。 * T; K9 ?) `! v& ]2 q5 y, Y ! e% c2 ]4 I: Z& U0 R( U/ r4 C+ j( l2 X5 H
Step6:计算适应度值并更新麻雀位置。4 g( i& P# t2 V. v8 F
9 }$ l# H/ ~. t: i2 u) y
8 l O: W! S" EStep7:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-6; & v1 ^6 @/ O ]8 V# L 4 P" n, E8 }" n0 M, p% J0 r 1 e i+ V) O r& k* m! n$ o# w% r9 c2 W2.算法结果6 r; Q( K4 \9 R( f