萤火虫算法

萤火虫算法（Firefly Algorithm）是一种启发式算法，灵感来自于萤火虫闪烁的行为。萤火虫的闪光，其主要目的是作为一个信号系统，以吸引其他的萤火虫。时为剑桥大学研究员的杨新社提出了萤火虫算法，其假设为：

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

亮度应与目标函数联系起来。萤火虫算法是以自然为灵感的启发式优化算法。

## 算法描述

萤火虫算法的伪代码可以概括为：

```
Begin
1）目标函数<math> f(\mathbf{x}) \quad \mathbf{x}=(x_1, x_2, ..., x_d)^T </math>
2）生成一个萤火虫的初始人口<math> \mathbf{x}_i, \quad (i=1,2,...,n) </math>
3）制定光照强度<math>I</math>，因此，它与<math>f(\mathbf{x})</math>
   （例如，对于最大化问题<math>I \propto </math>或<math>I=f(\mathbf{x})</math>;
4）定义吸收系数<math>\gamma </math>
while(T < MaxGeneration)
   for i =1:n(所有n萤火虫)
      for j =1:n(n萤火虫)
         if(<math> I_j > I_i</math>)。
            移动萤火虫i向j;
         end if
         吸引力与距离<math>r =\exp[ - \gamma r^2]</math>;
         评估新的解决方案和更新的光强度;
      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）被用来进行个体学习和局部解空间搜索。

## 实际应用

萤火虫算法已被应用到几乎所有领域科学和工程，如数字图像压缩和图像处理,特征值优化,特征提取和故障检测,天线设计,工程结构设计,

调度和旅行商问题

```
Hands-On Research and Development, (2011).</ref><ref>G. K. Jati and S. Suyanto, Evolutionary discrete firefly algorithm for travelling salesman problem, ICAIS2011, Lecture Notes in Artificial Intelligence (LNAI 6943), pp.393-403 (2011).</ref>,语义组成<ref>C. B. Pop, V. R. Chifu, I. Salomie,R. B. Baico, M. Dinsoreanu, G. Copil, A hybrid firefly-inspired approach for optimal semantic web service composition, in: Proc. of 2nd Workshop on Software Services: Cloud Computing and Applications, June, 2011.</ref>,化学相平衡<ref>S. E. Fateen, A. Bonilla-Petrociolet, G. P. Rangaiah, Evaluation of covariance matrix adaptation evolution strategy, shuffled complex evolution and firefly algorithms for phase stability, phase equilibrium and chemical equilibrium problems, Chemical Engineering Research and Design, May (2012). http://dx.doi.org/10.1016/j.cherd.2012.04.011</ref>， 聚类<ref>J. Senthilnath,  S. N. Omkar and V. Mani, Clustering using firefly algorithm: Performance study, Swarm and Evolutionary Computation, June (2011). 10.1016/j.swevo.2011.06.003</ref>,动态问题<ref>S. M. Farahani, B. Nasiri and M. R. Meybodi, A multiswarm based firefly algorithm in dynamic environments, Third Int. Conference on Signal Processing Systems (ICSPS2011), Aug 27-28, Yantai, China, pp. 68-72 (2011)</ref><ref>A. A. Abshouri, M. R. Meybodi and A. Bakhtiary, New firefly algorithm based on multiswarm and learning automata in dynamic environments, Third Int. Conference on Signal Processing Systems (ICSPS2011), Aug 27-28, Yantai, China, pp. 73-77 (2011).</ref>, 
```

,参数选择，蛋白质折叠问题等等。