基于萤火虫改进的麻雀搜索算法-附代码

基于萤火虫改进的麻雀搜索算法

文章目录

  • 基于萤火虫改进的麻雀搜索算法
    • 1.萤火虫扰动策略
    • 2.基于萤火虫的麻雀搜索算法
    • 3.算法结果:
    • 4.Matlab
    • 5.Python

1.萤火虫扰动策略

在FA 中 , 萤火虫发出光亮的主要目的是作为一个信号系统 , 以吸引其他的萤火虫个体 , 其假设为 : 1) 萤火虫不分性别 , 它将会被吸引到所有其他比它更亮的萤火虫那去 ; 2) 萤火虫的吸引力和亮度成正比 , 对于任何两只萤火虫 , 其中一只会向着比它更亮的另一只移动 , 然而 , 亮度是随着距离的增加而减少的 ;3) 如果没有找到一个比给定的萤火虫更亮 , 它会随机移动 。

  1. 萤火虫的相对荧光亮度为:
    I = I 0 ∗ e − γ r i , j (1) I = I_0*e^{-\gamma r_{i,j}}\tag{1} I=I0eγri,j(1)
    其中 , I 0 I_0 I0为萤火虫的最大萤光亮度 , 与目标函数值相关 , 目标函数值越优自身亮度越高 ; γ \gamma γ为光强吸收系数 , 荧光会随着距离的增加和传播媒介的吸收逐渐减弱 ; r i , j r_{i,j} ri,j为萤火虫 i i i j j j 之间的空间距离 。

  2. 萤火虫的吸引度为
    β = β 0 ∗ e − γ r i , j 2 (2) \beta = \beta_0*e^{-\gamma r_{i,j}^2} \tag{2} β=β0eγri,j2(2)
    其中 , β 0 \beta_0 β0 为最大吸引度 ; γ \gamma γ为光强吸收系数 ; r i , j r_{i,j} ri,j为萤火虫 i i i j j j 之间的空间距离。

  3. 萤火虫 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+β(xjxi)+α(rand1/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;

3.算法结果:

基于萤火虫改进的麻雀搜索算法-附代码_第1张图片

4.Matlab

5.Python

你可能感兴趣的:(智能优化算法改进,算法,matlab,开发语言)