智能优化算法:鸟群算法-附代码

智能优化算法:鸟群算法-附代码


摘要:鸟群算法(Bird Swarm Algorithm,BSA)是由 Xian-Bing Meng 等人根据自然界鸟群觅食、警觉和迁移等生物行为于 2015 年提出的一种新型生物启发式算法。该算法具有分散搜索,保持种群多样性,避免陷入局部最优的特点。

1.算法原理

鸟群算法模仿的生物行为可简化为如下规则:

(1) 每一只鸟自由选择觅食或保持警觉行为。
(2) 若选择觅食,每一只鸟即时记录并更新其所经过的最佳觅食位置,同时将此信息分享至整个种群,并记录种群最佳觅食位置。
(3) 若保持警觉,每只鸟均试图飞往种群的中心,此行为受种群间的竞争影响,食物储备多的鸟比储备少的有更大的概率飞往中心。
(4) 鸟群会周期性地飞往另一区域。鸟群之间会分享所寻觅的食物信息,这一习性使得种群更有利地生存下去。种群中食物储备最多的称为食物生产者,储备最少的称为乞食者,其它鸟随机作为 2 者之一。当鸟群从一个区域飞往另一区域,各只鸟的身份将发生改变。

(5) 生产者积极寻找食物,乞食者随机跟随一位生产者寻找食物。

规则 (1) 可制定为一个随机决策,当等概率产生的 (0, 1) 之间随机数大于常数 P 时,鸟觅食,否则保持警觉。每一只鸟根据自己和种群的觅食经验寻找食物,规则 (2) 可由下式表示。
x i , j t + 1 = x i , j t + ( p i , j − x i , j t ) ∗ C ∗ r a n d ( 0 , 1 ) + ( g j − x i , j t ) ∗ S ∗ r a n d ( 0 , 1 ) (1) x_{i,j}^{t+1} =x_{i,j}^t +(p_{i,j}-x_{i,j}^t)*C*rand(0,1)+(g_j - x_{i,j}^t)*S*rand(0,1)\tag{1} xi,jt+1=xi,jt+(pi,jxi,jt)Crand(0,1)+(gjxi,jt)Srand(0,1)(1)
式中: x i , j t x_{i,j}^t xi,jt为鸟当前所在位置; p i , j p_{i,j} pi,j为第 i i i 只鸟所经过的最佳位置;为种群最佳位置; C , S C , S C,S 为两个正常数,分别称为认知系数及社会进化系数。

对于规则 (3) ,鸟试图飞往种群的中心位置,这不可避免地会与其它鸟产生竞争,因此,每一只鸟不会直接飞到种群中心。这种行为可由下式表示。
x i , j t + 1 = x i , j t + A 1 ( m e a n j − x i , j t ) ∗ r a n d ( 0 , 1 ) + A 2 ∗ ( p k , j − x i , j t ) ∗ r a n d ( − 1 , 1 ) (2) x_{i,j}^{t+1} =x_{i,j}^t + A_1(mean_j-x_{i,j}^t )*rand(0,1)+A_2*(p_{k,j}-x_{i,j}^t)*rand(-1,1)\tag{2} xi,jt+1=xi,jt+A1(meanjxi,jt)rand(0,1)+A2(pk,jxijt)rand(1,1)(2)

A 1 = a 1 ∗ e x p ( − p F i t i s u m p F i t + ε ∗ N ) (3) A_1=a_1*exp(-\frac{pFit_i}{sumpFit+\varepsilon}*N)\tag{3} A1=a1exp(sumpFit+εpFitiN)(3)

A 2 = a 2 ∗ e x p ( ( p F i t i − p F i t k ∣ p F i t i − p F i t k ∣ + ε ) ∗ p F i t k ∗ N s u m p F i t + ε ) (4) A_2=a_2*exp((\frac{pFit_i-pFit_k}{|pFit_i-pFit_k| + \varepsilon})* \frac{pFit_k*N}{sumpFit+\varepsilon})\tag{4} A2=a2exp((pFitipFitk+εpFitipFitk)sumpFit+εpFitkN)(4)

式中: k k k 是 [1, N ] 之间的随机整数,且 k ≠ i k\neq i k=i N N N 为种群规模; a 1 , a 2 a_1,a_2 a1,a2是 [0,2] 之间的常数; i p F i t ipFit ipFit 为第 i i i 只鸟的适应度值; s u m F i t sumFit sumFit 为整个种群的适应度之和; ε \varepsilon ε用来避免零分割,是计算机里最小的常数; m e a n j mean_j meanj为种群的平均适应度值。

为逃避追捕或寻找食物,鸟群会定期飞往其他区域,设迁移周期为 FQ ,当到达另一区域后,它们会重新觅食。一些作为生产者的鸟开始寻找食物,其他鸟跟随生产者寻觅食物。生产者和乞食者可由规则 (4) 从种群中筛选,生产者和乞食者的行为可由下式描述:
x i , j t + 1 = x i , j t + x i , j t ∗ r a n d n ( 0 , 1 ) (5) x_{i,j}^{t+1} =x_{i,j}^t + x_{i,j}^t*randn(0,1)\tag{5} xi,jt+1=xi,jt+xi,jtrandn(0,1)(5)

x i , j t + 1 = x i , j t + ( x k , j t − x i , j t ) ∗ F L ∗ r a n d ( 0 , 1 ) (6) x_{i,j}^{t+1} =x_{i,j}^t + (x_{k,j}^t - x_{i,j}^t)*FL*rand(0,1)\tag{6} xi,jt+1=xi,jt+(xk,jtxi,jt)FLrand(0,1)(6)

式中: r a n d n ( 0 , 1 ) randn(0,1) randn(0,1) 代表产生服从期望值为 0 ,标准差为 1 的高斯分布的一个随机数; k ∈ [ 1 , N ] k\in[1,N] k[1,N],且 k ≠ i k\neq i k=i F L ( F L ∈ [ 0 , 1 ] ) FL(FL\in[0,1]) FL(FL[0,1]) 为乞食者随同生产者觅食的概率。

算法流程图如下:
在这里插入图片描述

2.算法结果

在这里插入图片描述

3.参考文献

[1] MENG X B, GAO X Z, LU L H. A new bio-inspiredoptimization algorithm: bird swarm algorithm[J]. Journal ofExperimental and Theoretical Artificial Intelligent, 2015.

[2]曾嶒,彭春华,王奎,张艳伟,张明瀚.基于鸟群算法的微电网多目标运行优化[J].电力系统保护与控制,2016,44(13):117-122.

4.Matlab代码

https://mianbaoduo.com/o/bread/aJialZY=

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/108529990