智能计算:萤火虫算法[附matlab代码]

萤火虫算法(Firefly Algorithm)是一种启发式算法,灵感来自于萤火虫闪烁的行为。萤火虫的闪光,其主要目的是作为一个信号系统,以吸引其他的萤火虫。剑桥大学的Xin-She Yang教授提出了萤火虫算法,其假设为: 

萤火虫不分性别,这样一个萤火虫将会吸引到所有其他的萤火虫;吸引力与它们的亮度成正比,对于任何两个萤火虫,不那么明亮的萤火虫被吸引,因此移动到更亮的一个,然而,亮度又随着其距离的增加而减少;如果没有比一个给定的萤火虫更亮的萤火虫,它会随机移动。

亮度应与目标函数联系起来。萤火虫算法是以自然为灵感的启发式优化算法。萤火虫算法已被应用到几乎所有领域科学和工程,如数字图像压缩和图像处理,特征值优化,特征提取和故障检测,天线设计,工程结构设计, 调度和旅行商问题,语义组成,化学相平衡, 聚类,动态问题, 刚性图像配准问题,参数选择,蛋白质折叠问题等等。

算法流程
萤火虫优化算法流程如下:
a) 初始化算法基本参数。设置萤火虫数目 m, 最大吸引度β0 , 光强吸收系数 γ, 步长因子 α, 最大迭代次数 maxT 或搜索精度 ε。
b) 随机初始化萤火虫的位置, 计算萤火虫的目标函数值作为各自最大萤光亮度 I0。
c) 由式( 1) ( 2) 计算群体中萤火虫的相对亮度 I 和吸引度β, 根据相对亮度决定萤火虫的移动方向。
d) 根据式( 3) 更新萤火虫的空间位置, 对处在最佳位置的萤火虫进行随机扰动。
e) 根据更新后萤火虫的位置, 重新计算萤火虫的亮度。
f) 当满足搜索精度或达到最大搜索次数则转 g) ; 否则, 搜索次数增加 1, 转 c) , 进行下一次搜索。
g) 输出全局极值点和最优个体值。算法的时间复杂度为 O( m2 ) , m 是萤火虫数目。

获取完整资料和代码请阅读全文

未经允许不得转载!智能计算:萤火虫算法[附matlab代码]