螢火蟲算法

螢火蟲算法（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>, 
```

,參數選擇，蛋白質摺疊問題等等。