Anar al contingut

Algoritme firefly

De L'Enciclopèdia, la wikipedia en valencià

El algoritme firefly (FA per les seues sigles en anglés, "firefly algorithm"; algoritme luciérnaga en espanyol) és un algoritme metaheurístico, inspirat en el comportament del centelleo de les luciérnagas. El propòsit primari d'una luciérnaga és generar centelleigs/centellejos de llum per a actuar com a sistema de senyal per a atraure a atres luciérnagas. Xin-She Yang va formular este algoritme en les següents premisses:[1]

  1. Totes les luciérnagas són "unisexuales", de modo que qualsevol luciérnaga individual serà atreta per totes les demés;
  2. L'atracció és proporcional a la seua lluentor, i per a qualsevol parell de luciérnagas, la menys lluenta serà atreta per (i per lo tant es desplaçarà cap a) la més lluenta; aixina i tot, l'intensitat (la lluentor aparent) decreix quan aumenta la distància entre abdós;
  3. Si no hi ha luciérnagas més lluents que una donada, esta es mou aleatoriamente.

La lluentor és associada en els valors d'una funció objectiu.

L'algoritme firefly és un procediment metaheurístico d'optimisació inspirat en la naturalea.

Descripció de l'algoritme

[editar | editar còdic]

El pseudocódigo pot ser resumit com:

Inici
   1) Funció Objectiu: f(𝐱),𝐱=(x1,x2,...,xd);
   2) Generar una població inicial de luciérnagas 𝐱i(i=1,2,,n);.
   3) Formular l'intensitat de la llum I de modo que estiga associada en f(𝐱)
      (eixemple, per a problemes d'maximización, If(𝐱) or simply I=f(𝐱);)
   4) Definir el coeficient d'absorció γ
   While (t < MaxGeneration)
      for i = 1 : n (all n luciérnagas)
         for j = 1 : n (n luciérnagas)
            if (Ij>Ii),
               moure luciérnaga i cap a j;
               Variar atracció en la distancia r via exp(γr);
               Evaluar les noves solucions i actualisar l'intensitat de la llum;
            end if 
         end for j
      end for i
      Ordenar les luciérnagas i buscar la més lluminosa;
   end while

   Post-processe dels resultats i visualisació;

final

La fòrmula d'actualisació principal per a qualsevol parell de dos luciérnagas 𝐱i i 𝐱j és

𝐱it+1=𝐱it+βexp[γrij2](𝐱jt𝐱it)+αt𝝐t

a on αt és un paràmetro que controla la mida del pas, mentres que 𝝐t és un vector extret d'una distribució Gaussiana o una atra distribució.

Pot demostrar-se que el cas limitativo γ0 correspon a l'optimisació per eixam de partícules estàndar (PSO). De fet, si el bucle interior (for j) és eliminat i la lluentor Ij és reemplaçat pel millor actual global g*, llavors FA essencialment es convertix en l'estàndart PSO.

Guies d'implementació

[editar | editar còdic]

γ té que ser relacionat en l'escala de variables de disseny. Idealment, el terme β tindria que ser d'orde un, lo que requerix que γ tindria que ser enllaçat en les escales. Per eixemple, una possible elecció és utilisar

γ=1/L , a on L és l'escala mija del problema. En el cas de que les escales varien significativament, γ pot ser considerat com un vector per a adoptar escales diferents en dimensions diferents. De modo paregut, αt també tindria que ser enllaçada en les escales. Per eixemple, αt0.01Lαt. Es pot senyalar que la descripció anterior no inclou la reducció aleatòria. De fet, en la seua implementació real per diversos investigadors, el moviment de les luciérnagas és gradualment reduït per una espècie de suavizamiento aleatori com α=α0δt a on0<δ<1(e.g.,δ=0.97), encara que este valor pot dependre del número de iteraciones.[2] En algun problema difícil, puga ser útil aumentar αt en algunes etapes, i reduir-ho quan siga necessari. Esta variació no-monòtona de αt capacita a l'algoritme per a eixir de qualsevol òptim local com en el cas improvable de que poguera bloquejar-se si el terme aleatori és reduït massa corrents.

Estudis paramètrics mostren que n (el número de luciérnagas) tindria que ser aproximadament entre 15 i 40 per a la majoria de problemes.[3] Hi ha una versió disponible de l'algoritme programada en python, encara que en funcionalitats llimitades.[4]

Estudis recents mostren que l'algoritme firefly és molt eficaç, i pot superar a atres algorítmics metaheurísticos que inclouen optimisació per eixam de partícules.[5][6] Atres algoritmes metaheurísticos poden tindre dificultat en tractar funcions de prova estocàstica, i sembla que l'algoritme firefly pot tractar la prova estocàstica de forma molt eficientemente.[7] Ademés, també és millor en el tractament de problemes d'optimisació de soroll, en una notable facilitat d'implementació.[8][9]


Chatterjee i atres[10] han demostrat que l'algoritme firefly pot ser superior a l'optimisació per eixam de partícules en les seues aplicacions. Ademés, pot solucionar eficientemente problemes no convexos en condicions de contorn complexes no llineals.[11][12] S'han fet millores posteriors en el rendiment en resultats prometedors.[13][14]

Vore també

[editar | editar còdic]

Referències

[editar | editar còdic]
  1. Yang, X. S. (2008). Nature-Inspired Metaheuristic Algorithms, Frome: Luniver Press. ISBN 1-905986-10-6.
  2. «http://www.mathworks.com/matlabcentral/fileexchange/29693-firefly-algorithm/content/fa_mincon.m». Archivat des d'el original, el 21 de maig de 2013. Consultat el 26 de febrer de 2016.
  3. A simple demo Matlab code is available [1] archivat en Wayback Machine.
  4. «https://code.google.com/p/csc6810project/».
  5. Yang, X. S. (2009). «Firefly algorithms for multimodal optimization», Stochastic Algorithms: Foundations and Applications, SAGA 2009, pp. 169–178.
  6. Lukasik, S. (2009). Firefly algorithm for continuous constrained optimization task, pp. 97–100.
  7. (2010).Int. J. Bio-inspired Computation.2(2)
    78–84.doi:10.1504/ijbic.2010.032124.
  8. (2011).Prof. Int. Multiconference of Engineers and Computer Scientists 2011.2
    1449–1454.
  9. (2011).Prof. Int. Multiconference of Engineers and Computer Scientists 2011.2
    1123–1128.
  10. (2012).Progress in Elelectromagnetic Research B.36
    113–131.doi:10.2528/pierb11083005.
  11. Applied Soft Computing.12(3)
    1180–1186.doi:10.1016/j.asoc.2011.09.017.
  12. (2012).Advances in Intelligent and Soft Computing.151
    673–680.doi:10.1007/978-3-642-28765-7_81.
  13. (2012).Int. J. Artificial Intelligence.8(S12)
    97–117.
  14. (2012).Int. J. Artificial Intelligence.8(S12)
    118–132.


Referències

[editar | editar còdic]