Content deleted Content added
BOT--Reverting link addition(s) by Yahyaafc to revision 740051441 (https://www.youtube.com/watch?v=O7dHhEhPZMI [\byoutube\.com]) |
m →Algorithm: MOS:INDENT; delete stray letters; decap "particle swarm optimization" |
||
(28 intermediate revisions by 15 users not shown) | |||
Line 1:
In
== Algorithm ==
Line 14 ⟶ 5:
'''Begin'''
1) Objective function: {{nowrap|<math>f(\mathbf{x}), \quad \mathbf{x}=(x_1,x_2,...,x_d) </math>;}}
2) Generate an initial population of fireflies {{nowrap|<math> \mathbf{x}_i \quad (i=1,2,\dots,n)</math>;.}}
3) Formulate light intensity {{mvar|I}} so that it is associated with {{nowrap|<math>f(\mathbf{x})</math>}}
(for example, for maximization problems, {{nowrap|<math>I \propto f(\mathbf{x})</math> or simply <math>I=f(\mathbf{x})</math>;)}}
4) Define absorption coefficient {{mvar|γ}}
'''While''' (t < MaxGeneration)▼
'''for''' i = 1 : n (all n fireflies)▼
'''for''' j = 1 : n (n fireflies)▼
{{nowrap|'''if''' (<math>I_j>I_i </math>),}}▼
move firefly i towards j;▼
Vary attractiveness with distance r via {{nowrap|<math> \exp(-\gamma \; r) </math>;}}▼
Evaluate new solutions and update light intensity;▼
'''end if''' ▼
'''end for''' j▼
'''end for''' i▼
Rank fireflies and find the current best;▼
'''end while'''▼
▲ '''for''' i = 1 : n (all n fireflies)
▲ {{nowrap|'''if''' (<math>I_j>I_i </math>),}}
▲ Vary attractiveness with distance r via {{nowrap|<math> \exp(-\gamma \; r) </math>;}}
▲ move firefly i towards j;
▲ Evaluate new solutions and update light intensity;
▲ '''end if'''
▲ 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 <math>\mathbf{x}_i </math> and <math>\mathbf{x}_j </math> is
where <math>\alpha_t </math> is a parameter controlling the step size, while <math>\boldsymbol{\epsilon}_t </math> is a vector drawn from a Gaussian or other
distribution.
It can be shown that the limiting case <math>\gamma \rightarrow 0 </math> corresponds to the standard [[
== Criticism ==
Nature-inspired
==See also==
Line 52 ⟶ 42:
== References ==
{{Reflist|<ref>Ariyaratne MKA, Pemarathne WPJ (2015) A review of recent advancements of firefly algorithm: a modern nature inspired algorithm. In: Proceedings of the 8th international research conference, 61–66, KDU, Published November 2015, http://ir.kdu.ac.lk/bitstream/handle/345/1038/com-047.pdf?sequence=1&isAllowed=y</ref>}}
==External links==
* [https://www.mathworks.com/matlabcentral/fileexchange/29693-firefly-algorithm] Files of the Matlab programs included in the book: Xin-She Yang, Nature-Inspired Metaheuristic Algorithms, Second Edition, Luniver Press, (2010).
{{Optimization algorithms}}
|