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 $&gamma;$ 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.zae

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.