Begin
1) Objective function: ;
2) Generate an initial population of fireflies ;.
3) Formulate light intensity I so that it is associated with
(for example, for maximization problems, or simply ;)
4) Define absorption coefficient γwhile (t < MaxGeneration)
for i = 1 : n (all n fireflies)
for j = 1 : i (n fireflies)
if (),
Vary attractiveness with distance r via ;
move firefly i towards j;
Evaluate new solutions and update light intensity;
end ifend for j
end for i
Rank fireflies and find the current best;
end whileend
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 and is
where is a parameter controlling the step size, while is a vector drawn from a Gaussian or other
distribution.zae
It can be shown that the limiting case corresponds to the standard Particle Swarm Optimization (PSO). In fact, if the inner loop (for j) is removed and the brightness is replaced by the current global best , then FA essentially becomes the standard PSO.