Sunteți pe pagina 1din 10

Universitatea Valahia din Târgoviște

Facultatea de Inginerie Electrică, Electronică și Tehnologia Informației


Departamentul de Automatică, Informatică și Inginerie Electrică
Domeniul: Inginerie Sistemelor
Specializarea: Automatică Avansată, Productivă și Informatică Industrială

PROIECT
la Tehnici de planificare și ordonanțare a producției

Masterand: David BUICĂ


Coordonator: prof. dr. ing. Luminița DUȚĂ

2020 – 2021
ALGORITMUL LICURICIULUI
(THE FIREFLY ALGORITHM)
Cuprins
1.1. Introducere – Algoritmii genetici.........................................................................................4
1.2. Comportamentul licuricilor..................................................................................................5
1.3. Dezvoltarea Algoritmului licuriciului...................................................................................5
1.3.1. Pseudocod pentru algoritmul licuriciului (FA).............................................................6
1.3.2. Intensitatea luminoasă și atractivitatea..........................................................................6
1.3.2.1. Nivelul de atractivitate al unui licurici...................................................................6
1.3.2.2. Mișcarea către licuricii mai atrăgători...................................................................7
1.4. Implementarea algoritmului în MatLAB – Exemplu............................................................8
1.4.1. Statistici - Utilizarea Firefly Algorithm în diverse domenii industriale........................9
Bibliografie....................................................................................................................................10

Tabel figuri
Figura 1. Graficul funcției cu două maxime globale egale..............................................................8
Figura 2. Poziția inițială a celor 25 de licurici (stânga) și poziția finală a licuricilor (dreapta)......8
Figura 3. Aplicații ale algoritmului licuriciului în problemele de optimizare în funcșie de domenii
industriale........................................................................................................................................9
Figura 4. Comparație intre aplicațiile Simple sau Hibride a algoritmului licuriciului....................9
INTRODUCERE

Optimizarea este un proces de determinare a celei mai bune soluții pentru a face ceva cât
mai funcțional și eficient posibil prin minimizarea sau maximizarea parametrilor implicați în
probleme. Mai multe categorii de probleme de optimizare, cum ar fi discrete, haotice, multi-
obiective și multe altele sunt abordate prin utilizarea algoritmilor genetici.
Algoritmii genetici sunt cei mai populari algoritmi evolutivi în ceea ce privește
diversitatea aplicațiilor lor. Marea majoritate a problemelor de optimizare au fost adaptate pentru
algoritmii genetici. În plus, algoritmii genetici se bazează pe o mulțime inițială de soluții posibile
cunoscută ca „populație” și algoritmii evolutivi moderni se bazează direct pe algoritmi genetici
sau algoritmi care au unele asemănări puternice.

1.1. Introducere – Algoritmii genetici

Algoritmul genetic (GA), dezvoltat de John Holland și colaboratorii săi în anii 1960 și
1970, este un model sau o abstractizare a evoluției biologice bazată pe teoria selecției naturale a
lui Charles Darwin. Olanda a fost prima care a folosit încrucișarea și recombinarea, mutația și
selecția în studiul sistemelor adaptive și artificiale. Acești operatori genetici formează partea
esențială a algoritmului genetic ca strategie de rezolvare a problemelor. De atunci, multe variante
de algoritmi genetici au fost dezvoltate și aplicate la o gamă largă de probleme de optimizare, de
la colorarea graficelor la recunoașterea modelelor, de la sisteme discrete (cum ar fi problema
vânzătorului călător) la sisteme continue (de exemplu, proiectarea eficientă a profilului aerian în
ingineria aerospațială) și de la piața financiară la optimizarea ingineriei multiobective.
Există multe avantaje ale algoritmilor genetici față de algoritmii tradiționali de optimizare
și două dintre cele mai vizibile avantaje sunt: capacitatea de a face față problemelor complexe și
paralelismului. Algoritmii genetici pot face față diferitelor tipuri de optimizare, indiferent dacă
funcția obiectivă (fitness) este staționară sau ne-staționară (se schimbă în timp), liniară sau
neliniară, continuă sau discontinuă sau cu zgomot aleatoriu. Deoarece mai mulți descendenți
dintr-o populație acționează ca agenți independenți, populația (sau orice subgrup) poate explora
spațiul de căutare în mai multe direcții simultan. Această caracteristică îl face ideal pentru a
paralela algoritmii pentru implementare. Parametrii diferiți și chiar diferite grupuri de șiruri
codate pot fi manipulate în același timp.
1.2. Comportamentul licuricilor
Există aproximativ două mii de specii de licurici, iar majoritatea licuricii produc sclipiri
scurte și ritmice. Modelul acestor sclipiri este adesea unic pentru o anumită specie. Lumina
intermitentă este produsă de un proces de bioluminiscență, iar adevăratele funcții ale acestor
sisteme de semnalizare sunt încă în dezbatere. Cu toate acestea, două funcții fundamentale ale
unor astfel de flash-uri sunt atragerea partenerilor de împerechere (comunicare) și atragerea
potențialei prăzi. În plus, sclipirea intermitentă poate servi și ca mecanism de avertizare de
protecție pentru potențialilor prădători.
Sclipirea ritmică, rata de sclipire și cantitatea de timp fac parte din sistemul de semnal
care reunește ambele sexe. Femelele răspund la modelul unic de sclipire al unui mascul în
aceeași specie, în timp ce la unele specii, cum ar fi Photuris, licuricii pot asculta semnalele
bioluminescente și chiar imită modelul intermitent al altor specii pentru a atrage și mânca
licuricii masculi. care poate confunda sclipirile ca un potențial partener potrivit. Unele specii de
licurici tropicali își pot sincroniza chiar sclipirile, formând astfel un comportament biologic auto-
organizat emergent.
Știm că intensitatea luminii la o anumită distanță r de sursa de lumină respectă legea
pătratului invers. Adică intensitatea luminii I scade pe măsură ce distanța r crește în termeni de
I ∝ 1 / r2. Mai mult, aerul absoarbe lumina care devine din ce în ce mai slabă pe măsură ce
distanța crește. Acești doi factori combinați fac ca majoritatea licuricilor să fie vizibil la o
distanță limită, de obicei câteva sute de metri pe timp de noapte, ceea ce este suficient de bun
pentru ca licuricii să comunice.
Lumina intermitentă poate fi formulată în așa fel încât să fie asociată cu funcția obiectivă
care trebuie optimizată, ceea ce face posibilă formularea de noi algoritmi de optimizare. În restul
acestui proiect, se va schița mai întâi formularea de bază a Algoritmului Firefly (FA) și apoi
implementarea acestuia în detaliu.

1.3. Dezvoltarea Algoritmului licuriciului


Putem idealiza unele dintre caracteristicile generale ale licuricilor, astfel încât să
dezvoltăm algoritmi inspirați de aceștia. Pentru simplitate în descrierea algoritmului Licuriciului
(Firefly Algoritm – FA) care a fost dezvoltat de Xin-She Yang la Universitatea Cambridge în
2007, se folosesz următoarele trei reguli idealizate:
• Toți licuricii sunt unisex, astfel încât un licurici va fi atras de alți licurici, indiferent
de sex;
• Atractivitatea este proporțională cu luminozitatea lor, astfel încât pentru oricare doi
licurici, cel care este mai puțin strălucitor se va deplasa spre cel mai luminos.
Atractivitatea este proporțională cu luminozitatea și ambele scad pe măsură ce
distanța crește. Dacă nu există altul mai luminos decât un anumit licurici, acesta se va
mișca la întâmplare (aleatoriu);
• Luminozitatea unui licurici este afectată sau determinată de peisajul funcției
obiective.
Pentru o problemă de maximizare, luminozitatea poate fi pur și simplu proporțională cu
valoarea funcției obiectiv. Alte forme de luminozitate pot fi definite într-un mod similar cu
funcția de fitness în algoritmi genetici.
Pe baza acestor trei reguli, pașii de bază ai algoritmului licurici (FA) pot fi rezumați ca
pseudo-cod prezentat mai jos:
1.3.1. Pseudocod pentru algoritmul licuriciului (FA)
Objective function f(x), x = (x1, ..., xd) T
Generate initial population of fireflies xi (i = 1, 2, ..., n)
Light intensity Ii at xi is determined by f(xi)
Define light absorption coefficient γ
while (t <MaxGeneration)
for i = 1 : n all n fireflies
for j = 1 : n all n fireflies (inner loop)
if (Ii < Ij ), Move firefly i towards j; end if
Vary attractiveness with distance r via exp[−γr]
Evaluate new solutions and update light intensity
end for j
end for i
Rank the fireflies and find the current global best g∗
end while
Postprocess results and visualization

1.3.2. Intensitatea luminoasă și atractivitatea

În algoritmul licuriciului, există două probleme importante: variația intensității luminii și


formularea atractivității. Pentru simplitate, putem presupune întotdeauna că atractivitatea unui
licurici este determinată de luminozitatea sa, care la rândul său este asociată cu funcția obiectivă
codificată.
În cel mai simplu caz pentru probleme maxime de optimizare, luminozitatea I a unui
licurici într-o anumită locație x poate fi aleasă ca I (x) ∝ f (x). Cu toate acestea, atractivitatea β
este relativă, ar trebui văzută în ochii privitorului sau judecată de ceilalți licurici. Astfel, va varia
în funcție de distanța rij dintre licuriciul i și licuriciul j. În plus, intensitatea luminii scade odată
cu distanța față de sursa sa, iar lumina este absorbită și în alte medii, așa că ar trebui să permitem
atractivității să varieze în funcție de gradul de absorbție.
1.3.2.1. Nivelul de atractivitate al unui licurici
Atractivitatea este reprezentată de strălucirea (intensitatea luminoasă), I a licuriciului i
pentru licuriciul j se bazează pe gradul de luminozitate al licuriciului i și distanța rij dintre
licuriciul i și licuriciul j [19] ca în ecuația 1.
(1)
Să presupunem că există n licurici; și xi corespunde soluției pentru un licurici i.
Luminozitatea licuriciului i este asociată cu funcția obiectivă f (xi). Luminozitatea I a unui
licurici este aleasă pentru a dezvălui poziția recentă a valorii sale de fitness sau a funcției
obiective f (x) ca în ecuația 2.
(2)
Licuriciul mai puțin luminos (atractiv) este atras și se va deplasa către cel mai luminos;
iar fiecare licurici are o anumită valoare de atractivitate β. Cu toate acestea, valoarea atractivității
β este relativă pe baza distanței dintre licurici. Funcția de atractivitate a licuricilor este stabilită
de ecuația 3.

(3)
unde β0 este valoarea atractivității licuriciului la r = 0 și γ este coeficientul de absorbție a
luminii mediului.
1.3.2.2. Mișcarea către licuricii mai atrăgători
Mișcarea unui licurici i în poziția xi care se deplasează către un licurici mai luminos j în
poziția xj prin este descrisă de ecuația 4:

(4)
în care al doilea termen reprezintă valoarea atracției. Al treilea termen este randomizarea,
α fiind parametrul de randomizare, iar ei este un vector de numere aleatoare extrase dintr-o
distribuție gaussiană sau distribuție uniformă. De exemplu, cea mai simplă formă este e i poate fi
înlocuită cu rand - ½ unde rand este un generator de numere aleatorii distribuit uniform în [0,
1]. Pentru majoritatea implementării noastre, putem lua β0 = 1 și α ∈ [0, 1].
Merită subliniat faptul că ecuația 4 reprezintă o mișcare aleatorie orientată spre licuricii
mai strălucitori. Dacă β0 = 0, devine o simplă mișcare aleatorie. Mai mult, termenul de
randomizare poate fi extins cu ușurință la alte distribuții, cum ar fi zborurile Levy.
Parametrul γ caracterizează acum variația atractivității, iar valoarea acestuia este crucială
în determinarea vitezei convergenței și a modului în care se comportă algoritmul FA. În teorie, γ
∈ [0, ∞), dar în practică, γ = O (1) este determinat de lungimea caracteristică Γ a sistemului care
urmează să fie optimizat. Astfel, pentru majoritatea aplicațiilor, variază de obicei de la 0,1 la 10.
Algoritmul compară atractivitatea noii poziții a licuriciului cu cea veche. Dacă noua
poziție produce o valoare a atractivității mai mare, licuriciul se va muta în noua poziție; în caz
contrar licuriciul va rămâne în poziția actuală. Criteriul de finalizare a FA se bazează pe un
număr de iterații predefinit sau o valoare de fitness predefinită.
Cel mai luminos licurici se mișcă aleator pe baza ecuației 5.
(5)

1.4. Implementarea algoritmului în MatLAB – Exemplu

Pentru a demonstra cum funcționează algoritmul licuriciului, se va implementa în Matlab.


Pentru a arăta că atât soluția optimă globală, cât și soluția optimă locală pot fi găsite simultan,
folosim următoarea funcție cu patru vârfuri

unde (x, y) ∈ [−5, 5] × [−5, 5]. Această funcție are patru vârfuri. Două vârfuri locale cu f = 1 la
(−4, 4) și (4, 4) și două vârfuri globale cu fmax = 2 la (0, 0) și (0, −4), așa cum se arată în Figura 2.
Putem vedea că toate aceste patru optime pot fi găsite folosind 25 de licurici în aproximativ 20
de generații (vezi Fig. 3). Deci, numărul total de evaluări ale funcției este de aproximativ 500.
Acest lucru este mult mai eficient decât majoritatea algoritmilor metaheuristici existenți.

Figura 1. Graficul funcției cu două maxime globale egale


În implementare, valorile parametrilor sunt α = 0,2, γ = 1 și β0 = 1. Evident, acești
parametri pot fi reglați pentru a rezolva diferite probleme de diferite dimensiuni.

Figura 2. Poziția inițială a celor 25 de licurici (stânga) și poziția finală a licuricilor (dreapta)

1.4.1. Statistici - Utilizarea Firefly Algorithm în diverse domenii industriale


Pe baza cercetărilor anterioare, s-au făcut unele analize și s-au produs grafice pentru a
arăta utilizarea pe scară largă a FA pentru probleme de optimizare.
Figura 3 prezintă distribuția aplicaților Firefly Algorithm în problemele de optimizare în
funcție de domeniul industrial în perioada 2008 – 2013. Există 8 domenii industriale care se
folosesc de problemele de optimizare și au folosit FA în studiul lor de caz. Pe baza figurii, există
două domenii majore, care sunt domeniul Inginerie și Informatică, care au utilizat pe scară largă
FA în determinarea soluțiilor pentru probleme. Numărul de studii de caz în domeniul Inginerie
care a utilizat FA este de 17, în timp ce în domeniul Informatică este de 18 studii de caz.

Figura 3. Aplicații ale algoritmului licuriciului în problemele de optimizare în funcșie de domenii industriale

Așa cum este prezentat în figura 4, aplicațiile FA simple utilizate pentru rezolvarea
problemelor de optimizare sunt duble față de aplicațiile FA hibride. Există doar câțiva cercetători
care au utilizat aplicații FA hibride cu alți algoritmi pentru a rezolva problemele de optimizare.
Algoritmii hibrizi au performanțe mai bune decât cei simplii. Aplicațiile FA hibride par a fi mai
bune decât FA simple, deoarece celelalte tehnici îmbunătățesc FA în ceea ce privește timpul de
procesare și performanța. Uneori, FA simplu are nevoie de mai mult timp pentru a obține valorile
parametrilor optimi. Prin urmare, aplicațiile FA ar trebui să fie hibridizate cu alte tehnici pentru a
reduce timpul de procesare.

Figura 4. Comparație intre aplicațiile Simple sau Hibride a algoritmului licuriciului

Bibliografie
A Review and Comparative Study of Firefly Algorithm and its Modified Versions. Khan, Waqar
A., și alții. 2016. s.l. : Optimization Algorithms - Methods and Applications, 2016.
Firefly Algorithm for Optimization Problem. Johari, Nur Farahlina, și alții. 2013. Switzerland :
Applied Mechanics and Materials, 2013, Vol. 421.
Yang, Xin-She. Nature-Inspired Metaheuristic Algorithms. University of Cambridge, United
Kingdom : Luniver Press.

S-ar putea să vă placă și