# Firefly algorithm

In mathematical optimization, the firefly algorithm is a metaheuristic proposed by Xin-She Yang and inspired by the flashing behavior of fireflies.

## Algorithm

In pseudocode the algorithm can be stated as:

Begin
1) Objective function: $f(\mathbf {x} ),\quad \mathbf {x} =(x_{1},x_{2},...,x_{d})$ ;
2) Generate an initial population of fireflies $\mathbf {x} _{i}\quad (i=1,2,\dots ,n)$ ;.
3) Formulate light intensity I so that it is associated with $f(\mathbf {x} )$ (for example, for maximization problems, $I\propto f(\mathbf {x} )$ or simply $I=f(\mathbf {x} )$ ;)
4) Define absorption coefficient γ

while (t < MaxGeneration)
for i = 1 : n (all n fireflies)
for j = 1 : i (n fireflies)
if ($I_{j}>I_{i}$ ),
Vary attractiveness with distance r via $\exp(-\gamma \;r)$ ;
move firefly i towards j;
Evaluate new solutions and update light intensity;
end if
end for j
end for i
Rank fireflies and find the current best;
end while
end


Note that the number of objective function evaluations per loop is one evaluation per firefly, even though the above pseudocode suggests it is n×n. (Based on Yang's MATLAB code.) Thus the total number of objective function evaluations is (number of generations) × (number of fireflies).

The main update formula for any pair of two fireflies $\mathbf {x} _{i}$ and $\mathbf {x} _{j}$ is

$\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}$ where $\alpha _{t}$ is a parameter controlling the step size, while ${\boldsymbol {\epsilon }}_{t}$ is a vector drawn from a Gaussian or other distribution.

It can be shown that the limiting case $\gamma \rightarrow 0$ corresponds to the standard Particle Swarm Optimization (PSO). In fact, if the inner loop (for j) is removed and the brightness $I_{j}$ is replaced by the current global best $g^{*}$ , then FA essentially becomes the standard PSO.

## Criticism

Nature-inspired metaheuristics in general have attracted criticism in the research community for hiding their lack of novelty behind metaphors. The firefly algorithm has been criticized as differing from the well-established particle swarm optimization only in a negligible way.