萤火虫算法(Firefly Algorithm)是一种启发式算法,灵感来自于螢火蟲闪烁的行为。萤火虫的闪光,其主要目的是作为一个信号系统,以吸引其他的萤火虫。时为剑桥大学研究员的杨新社提出了萤火虫算法,其假设为:
- 萤火虫不分性别,这样一个萤火虫将会吸引到所有其他的萤火虫;
- 吸引力与它们的亮度成正比,对于任何两个萤火虫,不那么明亮的萤火虫被吸引,因此移动到更亮的一个,然而,亮度又随着其距离的增加而减少;
- 如果没有比一个给定的萤火虫更亮的萤火虫,它会随机移动。
亮度应与目标函数联系起来。萤火虫算法是以自然为灵感的启发式优化算法。
算法描述
萤火虫算法的伪代码可以概括为:
Begin
1)目标函数 f(\mathbf{x}) \quad \mathbf{x}=(x_1, x_2, ..., x_d)^T
2)生成一个萤火虫的初始人口 \mathbf{x}_i, \quad (i=1,2,...,n)
3)制定光照强度I,因此,它与f(\mathbf{x})
(例如,对于最大化问题I \propto 或I=f(\mathbf{x});
4)定义吸收系数\gamma
while(T I_j > I_i),
移动萤火虫i向j;
end if
吸引力与距离r =\exp[ - \gamma r^2];
评估新的解决方案和更新的光强度;
end for j
end for i
排名萤火虫和找到当前最佳;
end while
处理后的结果和可视化;
end
对于任何一两只萤火虫的主要更新公式\mathbf{x}_i and \mathbf{x}_j 是
:: \mathbf{x}_i^{t+1}=\mathbf{x}_i^t + \beta \exp[-\gamma r_{ij}^2] (\mathbf{x}_j^t - \mathbf{x}_i^t) +\alpha_t \boldsymbol{\epsilon}_t
其中\alpha_t 是步长参数, e \boldsymbol{\epsilon}_t 是一个矢量(服从高斯或其他的分布)。
可以证明在\gamma \rightarrow 0 的情况,FA可以简化为 准粒子群优化(PSO).事实上,,如果内环(j)条被删除,亮度
I_j替换为当前的全球最佳g^*,FA基本上成为标准PSO。
萤火虫算法的变种
离散萤火虫算法(DFA)
离散形式的萤火虫算法(Discrete Firefly Algorithm,DFA)
DFA优于现有算法如蚁群算法。
对于图像分割,基于FA-方法比Otsu的方法更为有效.
同时, 离散萤火虫算法对QAP问题,Durkota已进很好的实现行
针对负荷预测中的特征选择问题,应用FA实现Wrapper特征选择算法.
多目标萤火虫算法
Apostolopoulos and Vlachos对FA进行了一个重要的多目标研究。同时,Yang提出了多目标萤火虫算法(Multiobjective Firefly Algorithm,MOFA),对连续优化问题有很好的效果。
拉格朗日FA
拉格朗日萤火虫算法用来解决电力系统优化单元承诺问题。
混沌FA
混沌萤火虫算法(Chaotic Firefly Algorithm,CFA)也显示了算法的有效性。
混合算法
萤火虫算法与蚁群优化算法相结合的混合算法,能够解决金融投资组合优化
。
基于萤火虫算法的 Memetic 算法
一种基于萤火虫算法(FA)的Memetic算法(FA-MA)被用来优化支持向量机(SVR)预测模型的参数。在该FA-MA中,FA用来搜索全局解空间,而模式搜索(pattern Search) 被用来进行个体学习和局部解空间搜索。
实际应用
萤火虫算法已被应用到几乎所有领域科学和工程,如数字图像压缩和图像处理,特征值优化,特征提取和故障检测,天线设计,工程结构设计,
调度和旅行商问题,语义组成,化学相平衡, 聚类,动态问题,
刚性图像配准问题,参数选择等等。
参考文献
评论 (0)