首页 > 编程知识 正文

萤火虫firefly吉他,萤火虫 firefly apk

时间:2023-05-04 19:10:54 阅读:19593 作者:701

萤火虫算法(Firefly Algorithm )1.概述萤火虫算法(Firefly Algorithm )是一种启发式算法,灵感来自萤火虫的闪烁行为。 萤火虫的闪烁主要目的是起到信号系统的作用以吸引其他萤火虫。

其前提如下。

无论性别如何,这类萤火虫都会被所有其他萤火虫吸引; 吸引力与它们的亮度成比例,对于任何两个萤火虫,不那么明亮的萤火虫都会被吸引,因此会向更明亮的方向移动。 但是,亮度随着其距离的增加而减少。 如果没有比给定的萤火虫更亮的萤火虫,则随机移动。 亮度必须与目标函数联系起来。 萤火虫算法是一种以自然为灵感的启发式优化算法。

2 .算法在d维解空间内各萤火虫的位置如下

x=(x1,x 2,…,x D ) x=) left ) x_{2},x_{2},ldots,x_{D}right ) x=(x1,x 2,…,x D )

萤火虫之间的相对吸引度用以下公式表示。

(r )=0er2 )1) beta (r ) ) beta _ {0} e ^ {-(伽马r^{2} ) (1)(r )=0eR2 (1) ) ) () () () ) ) ) ) ) )

式中的$ beta_{0} $是其初始吸引度,即两只萤火虫之间的距离为0时的吸引度,r是两只萤火虫之间的距离。

在算法运行过程中,每个萤火虫都会向所有比自己亮的萤火虫移动。 其移动距离根据以下公式(2)计算。

Xi’=Xi0eR2 (x

i − X j ) + α rand ⁡ ( ) ( 2 ) X_{i}’=X_{i}+beta_{0} e^{-gamma r^{2}}left(X_{i}-X_{j}right)+alpha operatorname{rand}() (2) Xi​’=Xi​+β0​e−γr2(Xi​−Xj​)+αrand()(2)
其中 X i X_i Xi​表示一个比第i个个体亮度更高的萤火虫的位置,r表示第i个萤火虫与第j个萤火虫之间的距离。rand()为一个随机扰动, α alpha α为扰动的步长因子。一般rand()取值为[-0.5,0.5]范围内的均匀分布或者U(0,1)的标准正态分布a取值为[0,1]之间。

基本流程如下:

(1)初始化,设定萤火虫的种群为N,介质对光的吸收系数为$ gamma=1 $ ,初始步长 a=0.97 ,初始吸引度 β 0 = 1.0 beta_{0}=1.0 β0​=1.0,其中 β max ⁡ = 1.0 , β min ⁡ = 0.2 beta_{max }=1.0, beta_{min }=0.2 βmax​=1.0,βmin​=0.2,其吸引度公式:
β ( r ) = ( β max ⁡ − β min ⁡ ) e − γ r 2 + β min ⁡ ( 3 ) beta(r)=left(beta_{max }-beta_{min }right) e^{-gamma r^{2}}+beta_{min } (3) β(r)=(βmax​−βmin​)e−γr2+βmin​(3)
公式保证任何两个萤火虫之间的最小吸引度为0.2,最大的吸引度为1.0。

(2)根据萤火虫的位置计算出每个萤火虫的适应度值,适应度值越优的萤火虫亮度越高。

(3)每个萤火虫将根据式(2)向所有比自己亮度高的萤火虫飞行其中第t代时萤火虫飞行的步长公式 :
α ( t ) = α t ( 4 ) alpha(t)=alpha^{t} (4) α(t)=αt(4)
式(4)计算出的萤火虫飞行步长将随时间递减。

由于所有个体只会向比自己亮度高的个体飞行,那么群体中亮度最高的个体将不会更新其位置。本文中群体中亮度最大的个体将按照以下公式(5)来更新自己的位置。
X i ′ = X i + α  rand Guass  ( ) ( 5 ) X_{i}^{prime}=X_{i}+alpha text { rand Guass }() (5) Xi′​=Xi​+α rand Guass ()(5)
(4)计算在萤火虫向所有比自己亮度高的其它个体飞行后所到的新位置的适应度值,若该位置优于飞行之前的位置,则该萤火虫将飞行到新的位置,否则萤火虫将停留在原处。

(5)若算法到达最大迭代次数则将搜索到的最优的萤火虫的位置作为解输出,否则将跳到步骤(2)。


转载请注明:Daniel的博客

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。