建立麻雀搜索算法的数学模型,主要规则如下所述:
在模拟实验中,我们需要使用虚拟麻雀进行食物的寻找,由n只麻雀组成的种群可表示为如下形式:
X = [ x 1 1 x 1 2 . . . x 1 d x 2 1 x 2 2 . . . x 2 d . . . . . . . . . . . . x n 1 x n 2 . . . x n d ] (1) X=\left[\begin{matrix} x_1^1&x_1^2&...&x_1^d\\ x_2^1&x_2^2&...&x_2^d\\ ...&...&...&... \\ x_n^1&x_n^2&...&x_n^d\\ \end{matrix}\right]\tag{1} X=⎣⎢⎢⎡x11x21...xn1x12x22...xn2............x1dx2d...xnd⎦⎥⎥⎤(1)
其中, d d d 表示待优化问题变量的维数, n n n 则是麻雀的数量。那么,所有麻雀的适应度值可以表示为如下形式:
F x = [ f ( [ x 1 1 x 1 2 . . . x 1 d ] ) f ( [ x 2 1 x 2 2 . . . x 2 d ] ) . . . f ( [ x n 1 x n 2 . . . x n d ] ) ] (2) F_x =\left[\begin{matrix} f([x_1^1&x_1^2&...&x_1^d])\\ f([x_2^1&x_2^2&...&x_2^d])\\ ... f([x_n^1&x_n^2&...&x_n^d]) \end{matrix}\right]\tag{2} Fx=⎣⎡f([x11f([x21...f([xn1x12x22xn2.........x1d])x2d])xnd])⎦⎤(2)
其中,f 表示适应度值。
在 SSA 中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。根据规则(1)和规则(2),在每次迭代的过程中,发现者的位置更新描述如下:
X i , j t + 1 = { X i , j . e x p ( − i α . i t e r m a x ) , i f R 2 < S T X i , j + Q . L , i f R 2 ≥ S T (3) X_{i,j}^{t+1}=\begin{cases} X_{i,j}.exp(-\frac{i}{\alpha.iter_{max}}),if\, R_2
其中, t t t 代表当前迭代数, j = 1 , 2 , 3 , . . . , d j =1, 2, 3, . . . , d j=1,2,3,...,d。 i t e m m a x item_{max} itemmax
是一个常数,表示最大的迭代次数。 X i j X_{ij} Xij表示第 i i i 个麻雀在第 j j j 维中的位置信息。 α ∈ ( 0 , 1 ] α∈(0, 1] α∈(0,1]是一个随机数。 R 2 ( R 2 ∈ [ 0 , 1 ] ) R_2(R_2∈[0,1]) R2(R2∈[0,1])和 S T ( S T ∈ [ 0.5 , 1 ] ) ST(ST∈[0.5,1]) ST(ST∈[0.5,1])分别表示预警值和安全值。 Q Q Q 是服从正态分布的随机数。 L L L 表示一个 1 × d 1×d 1×d 的矩阵,其中该矩阵内每个元素全部为 1。
当 R 2 < S T R2< ST R2<ST 时,这意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作。如果 R 2 ≥ S T R2≥ ST R2≥ST,这表示种群中的一些麻雀已经发现了捕食者,并向种群中其它麻雀发出了警报,此时所有麻雀都需要迅速飞到其它安全的地方进行觅食。
对于加入者,它们需要执行规则(3)和规则(4)。如前面所描述,在觅食过程中,一些加入者会时刻监视着发现者。一旦它们察觉到发现者已经找到了更好的食物,它们会立即离开现在的位置去争夺食物。如果它们赢了,它们可以立即获得该发现者的食物,否则需要继续执行规则(4)。加入者的位置更新描述如下:
X i , j t + 1 = { Q . e x p ( X w o r s t − X i , j t i 2 ) , i f i > n / 2 X P t + 1 + ∣ X i , j − X P t + 1 ∣ . A + . L , o t h e r w i s e (4) X_{i,j}^{t+1}=\begin{cases} Q.exp(\frac{X_{worst}-X_{i,j}^t}{i^2}),if\, i>n/2\\ X_P^{t+1}+ |X_{i,j} - X_P^{t+1}|.A^{+}.L,otherwise \end{cases}\tag{4} Xi,jt+1={ Q.exp(i2Xworst−Xi,jt),ifi>n/2XPt+1+∣Xi,j−XPt+1∣.A+.L,otherwise(4)
其中, X p X_p Xp是目前发现者所占据的最优位置, X w o r s t X_{worst} Xworst则表示当前全局最差的位置。 A A A表示一个 1 × d 1×d 1×d 的矩阵,其中每个元素随机赋值为 1 或-1,并且 A + = A T ( A A T ) − 1 A^+=A^T(AA^T)^{-1} A+=AT(AAT)−1。当i >n/2 时,这表明,适应度值较低的第 i 个加入者没有获得食物,处于十分饥饿的状态,此时需要飞往其它地方觅食,以获得更多的能量。
在模拟实验中,我们假设这些意识到危险的麻雀占总数量的 10% 到 20%。这些麻雀的初始位置是在种群中随机产生的。根据规则(5),其数学表达式可以表示为如下形式:
X i , j t + 1 = { X b e s t t + β . ∣ X i , j t − X b e s t t ∣ , i f f i > f g X i , j t + K . ( ∣ X i , j t − X w o r s t t ∣ ( f i − f w ) + ε ) , i f f i = f g (5) X_{i,j}^{t+1}=\begin{cases} X_{best}^t + \beta.|X_{i,j}^t - X_{best}^t|,if\, f_i>f_g\\ X_{i,j}^t + K.(\frac{|X_{i,j}^t - X_{worst}^t|}{(f_i -f_w)+\varepsilon}), if\, f_i =f_g \end{cases}\tag{5} Xi,jt+1={ Xbestt+β.∣Xi,jt−Xbestt∣,iffi>fgXi,jt+K.((fi−fw)+ε∣Xi,jt−Xworstt∣),iffi=fg(5)
其中,其中 X b e s t X_{best} Xbest是当前的全局最优位置。 β β β 作为步长控制参数,是服从均值为 0,方差为 1 的正态分布的随机数。 K ∈ [ − 1 , 1 ] K∈[-1,1] K∈[−1,1]是一个随机数,fi则是当前麻雀个体的适应度值。 f g f_g fg和 f w f_w fw分别是当前全局最佳和最差的适应度值。 ε \varepsilon ε 的常数,以避免分母出现零。
为简单起见,当 f i > f g f_i >f_g fi>fg表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。 X b e s t X_{best} Xbest表示这个位置的麻雀是种群中最好的位置也是十分安全的。 f i = f g f_i = f_g fi=fg时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。 K K K 表示麻雀移动的方向同时也是步长控制参数。
算法流程
Step1: 初始化种群,迭代次数,初始化捕食者和加入者比列。
Step2:计算适应度值,并排序。
Step3:利用式(3)更新捕食者位置。
Step4:利用式(4)更新加入者位置。
Step5:利用式(5)更新警戒者位置。
Step6:计算适应度值并更新麻雀位置。
Step7:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-6;
[1] Xue J , Shen B . A novel swarm intelligence optimization approach: sparrow search algorithm[J]. Systems ence & Control Engineering An Open Access Journal, 2020, 8(1):22-34.
麻雀搜索算法
https://mianbaoduo.com/o/bread/aJybk5w=
改进算法:
1.基于反向策略的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqUl54=
2.基于Tent混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5Y=
3.基于Logistic混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5c=
4.基于Circle混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5g=
5.基于Piecewise混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5k=
6.基于Chebyshev混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqVk5o=
7.基于Sine混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWk50=
8.基于Singer混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWk54=
9.基于迭代混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWk58=
10.基于Sinusoidal混沌映射的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqWlJY=
11.基于随机游走改进的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZuXmJc=
12.基于萤火虫改进的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZuZmJk=
13.基于精英反向策略的麻雀搜索算法1
https://mianbaoduo.com/o/bread/mbd-aZycl5Y=
14.基于levy飞行改进的麻雀搜索算法
https://mianbaoduo.com/o/bread/mbd-aZqZlZg=
15.基于自适应t分布的麻雀算法
https://mianbaoduo.com/o/bread/YZWVlp5v
改进麻雀文献复现代码:
1.混沌麻雀。
参考文献:[1]吕鑫,慕晓冬,张钧,王震.混沌麻雀搜索优化算法[J/OL].北京航空航天大学学报:1-10[2020-11-16].https://doi.org/10.13700/j.bh.1001-5965.2020.0298.
https://mianbaoduo.com/o/bread/aZ2alZc=
2.融合柯西变异和反向学习的改进麻雀算法
[1]毛清华,张强.融合柯西变异和反向学习的改进麻雀算法[J/OL].计算机科学与探索:1-12[2020-12-16].http://kns.cnki.net/kcms/detail/11.5602.tp.20201203.1601.006.html.
https://mianbaoduo.com/o/bread/YZWYlZlp
https://mianbaoduo.com/o/bread/mbd-aZuTk50=
改进算法:
基于Sinusoidal混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6am5k=
基于迭代混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6am5Y=
基于Singer混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6amp4=
基于Sine混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6amp0=
基于Piecewise混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6ampo=
基于Logistic混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6ampc=
基于Circle混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6amZ8=
基于Chebyshev混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6amZ4=
基于Tent混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6amZs=
基于反向策略的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6bmp0=
基于精英反向策略的麻雀搜索算法1 python代码 https://mianbaoduo.com/o/bread/aZ6bmp4=
基于精英反向策略的麻雀搜索算法2 python 代码 https://mianbaoduo.com/o/bread/aZ6bm5c=
基于萤火虫改进的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6bm5g=
基于levy飞行改进的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6bm5o=
基于自适应t分布的麻雀搜索算法
https://mianbaoduo.com/o/bread/YZWVm5ls
改进麻雀文献复现代码:
1.混沌麻雀。
参考文献:[1]吕鑫,慕晓冬,张钧,王震.混沌麻雀搜索优化算法[J/OL].北京航空航天大学学报:1-10[2020-11-16].https://doi.org/10.13700/j.bh.1001-5965.2020.0298.
https://mianbaoduo.com/o/bread/aZ6cl5c=