受萤火虫发光强度的启发,2008年,英国剑桥大学学者Xin-She Yang提出萤火虫算法(Firefly Algorithm, FA)。自然界中,萤火虫可以发出短促、有节奏的闪光。通常这种闪光仅在一定范围内可见。萤火虫通过闪光可以吸引异性和猎取食物。为了使算法更加简单,该算法只考虑了萤火虫强度的变化和吸引力这两个因素。
依照萤火虫发光的特性,给出以下理想化规则:
(1) 萤火虫不分雌雄,每个萤火虫都会被比它发光更亮的萤火虫吸引;
(2) 吸引力与发光强度成正比;
(3) 萤火虫的亮度由目标函数值决定。
为了表示萤火虫\(i\)的亮度随距离\(r\)的变化,定义如下绝对亮度:
萤火虫\(i\)绝对亮度为距离\(r=0\)时的亮度,记为\(I_i\).
注意:为了降低算法的复杂度,假定萤火虫\(i\)的绝对亮度\(I_i\)与\(x_i\)的目标函数值相等。
为了表示萤火虫\(i\)对萤火虫\(j\)的吸引大小,定义如下相对亮度:
萤火虫\(i\)在萤火虫\(j\)位置的光强度,记为\(I_{ij}\)
其中,\(\gamma\)为光吸收系数,\(r_{ij}\)为萤火虫\(i\)到萤火虫\(j\)的距离.
假设萤火虫\(i\)对萤火虫\(j\)的吸引力和萤火虫\(i\)对萤火虫\(j\)的相对亮度成比例,所以萤火虫\(i\)对萤火虫\(j\)的吸引力可表示为:
\[\beta_{ij}(r_{ij}) = \beta_0e^{-\gamma{r_{ij}^2}} \]其中,\(\beta_0\)为最大吸引力,当距离\(r=0\)时,吸引力最大。通常\(\beta_0=1\),\(\gamma\in{[0.01,100]}\).
萤火虫\(i\)吸引着萤火虫\(j\),因此萤火虫\(j\)的位置更新公式:
\[x_j(t+1) = x_j(t) + \beta_{ij}(r_{ij})(x_i(t) - x_j(t)) + \alpha\varepsilon_j \]其中,\(t\)为算法的迭代次数;\(x_i\)、\(x_j\)分别为萤火虫\(i\)和萤火虫\(j\)所处的空间位置;\(\alpha\in{[0,1]}\), \(\varepsilon\)是高斯分布得到的随机向量。