基于萤火虫改进的麻雀搜索算法
1.萤火虫扰动策略
在FA 中 , 萤火虫发出光亮的主要目的是作为一个信号系统 , 以吸引其他的萤火虫个体 , 其假设为 : 1) 萤火虫不分性别 , 它将会被吸引到所有其他比它更亮的萤火虫那去 ; 2) 萤火虫的吸引力和亮度成正比 , 对于任何两只萤火虫 , 其中一只会向着比它更亮的另一只移动 , 然而 , 亮度是随着距离的增加而减少的 ;3) 如果没有找到一个比给定的萤火虫更亮 , 它会随机移动 。
-
萤火虫的相对荧光亮度为:
I = I 0 ∗ e − γ r i , j (1) I = I_0*e^{-\gamma r_{i,j}}\tag{1} I=I0∗e−γri,j(1)
其中 , I 0 I_0 I0为萤火虫的最大萤光亮度 , 与目标函数值相关 , 目标函数值越优自身亮度越高 ; γ \gamma γ为光强吸收系数 , 荧光会随着距离的增加和传播媒介的吸收逐渐减弱 ; r i , j r_{i,j} ri,j为萤火虫 i i i 与 j j j 之间的空间距离 。 -
萤火虫的吸引度为
β = β 0 ∗ e − γ r i , j 2 (2) \beta = \beta_0*e^{-\gamma r_{i,j}^2} \tag{2} β=β0∗e−γri,j2(2)
其中 , β 0 \beta_0 β0 为最大吸引度 ; γ \gamma γ为光强吸收系数 ; r i , j r_{i,j} ri,j为萤火虫 i i i 与 j j j 之间的空间距离。 -
萤火虫 i 被吸引向萤火虫 j 移动的位置更新公式如式 (3) 所示 :
x i = x i + β ∗ ( x j − x i ) + α ∗ ( r a n d − 1 / 2 ) (3) x_i = x_i +\beta*(x_j-x_i)+\alpha*(rand - 1/2) \tag{3} xi=xi+β∗(xj−xi)+α∗(rand−1/2)(3)
其中 , x i , x j x_i,x_j xi,xj 为萤火虫 i i i 和 j j j 所处的空间位置 ; α ∈ [ 0 , 1 ] α ∈[0,1] α∈[0,1] 为步长因子 ; r a n d rand rand 为 [0,1] 上服从均匀分布的随机数 。
2.基于萤火虫的麻雀搜索算法
基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958
该改进主要是在麻雀搜索后,利用萤火虫扰动对麻雀进行萤火虫扰动,将所有麻雀与最优麻雀利用萤火虫扰动方式,进行位置更新,提高其搜索性,扰动后的麻雀与扰动前的麻雀进行对比,如果更优则更新麻雀位置。
算法流程
Step1: 初始化种群,迭代次数,初始化捕食者和加入者比列。
Step2:计算适应度值,并排序。
Step3:麻雀更新捕食者位置。
Step4:麻雀更新加入者位置。
Step5:麻雀更新警戒者位置。
Step6:计算适应度值并更新麻雀位置。
Step7. 利用萤火虫扰动更新麻雀位置
Step8.计算适应度值并更新麻雀位置。
Step9:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-8;