萤火虫算法

萤火虫算法（Firefly Algorithm）是一种启发式算法，灵感来自于萤火虫闪烁的行为。萤火虫的闪光，其主要目的是作为一个信号系统，以吸引其他的萤火虫。剑桥大学的Xin-She Yang（音译：杨新社）教授提出了萤火虫算法，其假设为：
 萤火虫不分性别，这样一个萤火虫将会吸引到所有其他的萤火虫;
 吸引力与它们的亮度成正比，对于任何两个萤火虫，不那么明亮的萤火虫被吸引，因此移动到更亮的一个，然而，亮度又随着其距离的增加而减少;
 如果没有比一个给定的萤火虫更亮的萤火虫，它会随机移动。
亮度应与目标函数联系起来。萤火虫算法是以自然为灵感的启发式优化算法。

算法描述
萤火虫算法的伪代码可以概括为：
 Begin
 1）目标函数
 2）生成一个萤火虫的初始人口
 3）制定光照强度，因此，它与
    （例如，对于最大化问题或;
 4）定义吸收系数
 while(T < MaxGeneration)
    for i =1:n(所有n萤火虫)
       for j =1:n(n萤火虫)
          if()，
             移动萤火虫i向j;
          end if
          吸引力与距离;
          评估新的解决方案和更新的光强度;
       end for j
    end  for i
    排名萤火虫和找到当前最佳;
 end while
 处理后的结果和可视化;
 end

对于任何一两只萤火虫的主要更新公式 and 是
 
其中是步长参数, e 是一个矢量（服从高斯或其他的分布）。

可以证明在的情况，FA可以简化为 准粒子群优化(PSO).事实上，，如果内环（j）条被删除，亮度
替换为当前的全球最佳，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） 被用来进行个体学习和局部解空间搜索。

实际应用 
萤火虫算法已被应用到几乎所有领域科学和工程，如数字图像压缩和图像处理,特征值优化,特征提取和故障检测,天线设计,工程结构设计, 
调度和旅行商问题,语义组成,化学相平衡， 聚类,动态问题, 
刚性图像配准问题,参数选择，蛋白质折叠问题等等。

参考文献 

數學最佳化
算法
图像处理