08-16-2017, 10:50 PM
firefly algorithm for image segmentation matlab code
The firefly algorithm (FA) is 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. Xin-She Yang formulated this firefly algorithm by assuming:[1]
All fireflies are unisexual, so that any individual firefly will be attracted to all other fireflies;
Attractiveness is proportional to their brightness, and for any two fireflies, the less bright one will be attracted by (and thus move towards) the brighter one; however, the intensity (apparent brightness) decrease as their mutual 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.
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 : n (n fireflies)
if (I_j>I_i ),
move firefly i towards j;
Vary attractiveness with distance r via \exp(-\gamma \; r) ;
Evaluate new solutions and update light intensity;
end if
end for j
end for i
Rank fireflies and find the current best;
end while
Post-processing the results and visualization;
end