Firefly algorithm
The firefly algorithm (FA) was a metaheuristic algorithm, inspired by the flashing behaviour of fireflies. The primary purpose for a firefly's flash is to act as a signal system to attract other fireflies. Yang[1] formulated this firefly algorithm by assuming:
- All fireflies are unisex, so that one firefly will be attract to all other fireflies;
- Attractiveness is proportional to their brightness, and for any two fireflies, the less brighter one will attract (and thus move) to the brighter one; however, the brightness can decrease as their distance increases;
- If there are no fireflies brighter than a given firefly, it will move randomly.
The brightness should be associated with the objective function.
Firefly algorithm is a nature-inspired metaheuristic optimization algorithm.
Algorithm description
The pseudo code can be summarized as:
Begin
1) Objective function: ; 2) Generate an initial population of fireflies ;. 3) Formulate light intensity 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:n (n fireflies) if (), move firefly i towards j; end if Vary attractiveness with distance r via ; Evaluate new solutions and update light intensity; end for j end for i Rank fireflies and find the current best; end while Post-processing the results and visualization;
end
It can be shown that the limiting case corresponds to the standard Particle Swarm Optimization (PSO). In fact, if the inner loop j is removed and the brightness is replaced by the current global best , then FA essentially becomes the standard PSO.
A simple demo Matlab code is available matlab code'
Recent studies shows that the firefly algorithm is very efficient[2], and could outperform other metaheuristic algorithms including particle swarm optimization.[3]
References
- ^ X. S. Yang, Nature-Inspired Metaheuristic Algorithms, Luniver Press, (2008)
- ^ X. S. Yang, Firefly algorithms for multimodal optimization, in: Stochastic Algorithms: Foundations and Applications, SAGA 2009, Lecture Notes in Computer Sciences, Vol. 5792, pp. 169-178 (2009).
- ^ S. Lukasik and S. Zak, Firefly algorithm for continuous constrained optimization task, ICCCI 2009, Lecture Notes in Artificial Intelligence (Eds. N. T. Ngugen, R. Kowalczyk, S. M. Chen), Vol. 5796, 97-100 (2009).