matlab智能算法之萤火虫算法

智能算法之萤火虫算法

    • 1.起源
    • 2.萤火虫发光求偶
      • 2.1 雌雄萤火虫
      • 2.2 求偶过程
    • 3.原理
      • 3.1 闪光强度
      • 3.2 吸引力
      • 3.3 萤火虫移动
    • 4.具体流程

1.起源

萤火虫群优化算法是2005年由 K r i s h n a n a n d Krishnanand Krishnanand G h o s e Ghose Ghose 在研究改进蚁群算法求连续型最优化问题时提出的,并且成功将其用于机器人群体协作。算法的起源是来自萤火虫在夜晚发出光亮进行求偶,雄性萤火虫发光越亮,越能吸引雌性萤火虫。

2.萤火虫发光求偶

2.1 雌雄萤火虫

一般的雌萤火虫由于翅膀接近于退化,而且因为雌萤火虫要产卵,腹部体积会比雄萤火虫大,所以它们一般都只能趴在一个地方发出求偶的信号,等待别的雄萤火虫来和它交配;而雄虫为了有更大的发光亮度吸引雌萤火虫,且在黑夜中找到雌萤火虫,所以发光器有两排光,复眼也比较发达。如果雌萤火虫的回复得到了雄萤火虫的答复,那它们就会以同样的方式进行联系,直到两者在一起。雄萤火虫越亮,对雌萤火虫的吸引力越强。

2.2 求偶过程

一到繁殖季节的时候,雌雄萤火虫都能通过发光来寻找自己的配偶。在寻找配偶的时候,雌雄双方都会发出一闪一闪的亮光作为信号。具体为:在一定范围内,雄萤火虫在夜色里一边飞行,一边发出有节奏的闪光信号,然后趴在原地的雌萤火虫根据雄萤火虫发光亮度的强弱进行择偶,通常都是选择对发光亮度最强的,也就是看起来最亮的雄萤火虫做出发光回应。

3.原理

根据萤火虫的求偶方式,可以发现求偶的关键有:闪光强度吸引力。而且标准萤火虫优化算法遵循三个理想化规则:
1、萤火虫不分雌雄,假设都为中性;
2、萤火虫的吸引力和自身的闪光强度成正比,所以闪光亮度弱的萤火虫,都会被更亮的萤火虫吸引;
3、萤火虫的闪光强度受到适应度函数景观的影响。

3.1 闪光强度

萤火虫的闪光强度与适应度函数是成正比的;每个萤火虫都可以看成是问题的一个解,则可以得到 I ( r ) ∝ f ( x ) I(r) \propto f(x) I(r)f(x),其中 f ( x ) f(x) f(x) 则为 x x x 的目标函数,也就是这里的适应度, I ( r ) I(r) I(r) 是间隔距离为 r r r 的闪光强度,具体公式如下: I ( r ) = I 0 e − γ r i j 2 I(r)=I_0e^{-\gamma r^2_{ij}} I(r)=I0eγrij2 其中, I 0 I_0 I0 为光源处的亮度, γ \gamma γ 为光强吸收系数, r i j r_{ij} rij 表示萤火虫 i i i 和萤火虫 j j j 之间的欧式距离: r i j = ∑ k = 1 n ( x i k − x j k ) 2 r_{ij}=\sqrt {\sum_{k=1}^n(x_{ik}-x_{jk})^2} rij=k=1n(xikxjk)2 x i k x_{ik} xik 表示萤火虫 i i i 在维度 k k k 上的值。

3.2 吸引力

萤火虫的吸引力和距离、光强有关,所以函数在这里设计如下单调递减函数: β ( r ) = β 0 e − γ r i j m , m ≥ 1 \beta(r)=\beta_0e^{-\gamma r_{ij}^m}, \quad m \geq 1 β(r)=β0eγrijm,m1 其中, β 0 \beta_0 β0 表示两萤火虫距离为 0 0 0 时的吸引力,也就是最大吸引力; m m m 2 2 2,当距离 r r r 变大时,吸引力则变小,反之则变大;对于规模为 Γ \Gamma Γ 的萤火虫群, γ \gamma γ 的初值可以为: γ = 1 Γ m \gamma = \frac{1}{\Gamma^m} γ=Γm1 γ = 0 \gamma=0 γ=0 时, β ( r ) = β 0 \beta(r)=\beta_0 β(r)=β0,也就是此时种群十分密集,吸引力达到最大;当 γ \gamma γ 趋于 ∞ \infty 时, β ( r ) = 0 \beta(r)=0 β(r)=0,此时相当于萤火虫在迷雾发光,其它萤火虫看不见,吸引力几乎为 0 0 0,所以 γ ∈ [ 0.1 , 10 ] \gamma \in[0.1,10] γ[0.1,10]

3.3 萤火虫移动

萤火虫 i i i 被萤火虫 j j j 吸引后,会发生移动,移动公式为: x i ( t + 1 ) = x i ( t ) + β ( r ) ( x j ( t ) − x i ( t ) ) + s ϵ i x_i(t+1)=x_i(t)+\beta(r)(x_j(t)-x_i(t))+s \epsilon_i xi(t+1)=xi(t)+β(r)(xj(t)xi(t))+sϵi 公式分为三部分:萤火虫 i i i 在第 t t t 次的位置项 x i ( t ) x_i(t) xi(t),吸引力项 β ( r ) ( x j ( t ) − x i ( t ) ) \beta(r)(x_j(t)-x_i(t)) β(r)(xj(t)xi(t)),移动步长项 s ϵ i s \epsilon_i sϵi;其中 s s s 为萤火虫的移动步长, ϵ i \epsilon_i ϵi 为服从正态分布的随机数向量,通常取值范围为 [ − 0.5 , 0.5 ] [-0.5,0.5] [0.5,0.5]。在实际中,通常取 β 0 = 1 , s = 0.2 \beta_0=1,s=0.2 β0=1,s=0.2

4.具体流程

( 1 ) (1) 1初始化:初始化萤火虫优化算法参数 γ , s \gamma,s γ,s,生成初代种群,计算种群每个个体的适应度 f ( x ) f(x) f(x)
( 2 ) (2) 2移动:计算每只萤火虫相对其它萤火虫的闪光强度 I ( r ) I(r) I(r),然后亮度小的萤火虫向着亮度大萤火虫的方向移动,得到新的位置 x ′ x' x,移动完后计算新的个体适应度 f ( x ′ ) f(x') f(x)
( 3 ) (3) 3终止:判断是否达到算法的终止条件,若没有达到,则继续进行步骤 ( 2 ) (2) 2,直至终止。

你可能感兴趣的:(图论,matlab,算法,图论)