Sunteți pe pagina 1din 12

Optimizarea cu roiuri de

particule
(Particle Swarm Optimization)
Rețele Neuronale & Tehnici de Calcul Evolutiv
Laborator 6
Algoritmul PSO
• La un moment dat de timp t, fiecare particulă este caracterizată de
trei vectori care definesc:
• poziția curentă a particulei în spațiul n – dimensional al problemei
Xi ( t ) =  xi ,1 ( t ) , xi ,2 ( t ) ,..., xi ,k ( t ) ,..., xi ,n ( t ) 

• viteza curentă de deplasare a particulei

Vi (t ) = [vi ,1 (t ), vi ,2 (t ),..., vi ,k (t ),...vi ,n (t )]


• cea mai bună/promițătoare poziție a particulei atinsă până la momentul
curent t
Pb ,i (t ) = [ pbi ,1 (t ), pbi ,2 (t ),..., pbi ,k (t ),... pbi ,n (t )]
Algoritmul PSO

• Observație: se memorează cea mai bună poziție atinsă până la


momentul curent la nivelul roiului:

G b (t ) = [ gb ,1 (t ), gb ,2 (t ),..., gb ,k (t ),...gb ,n (t )]
Algoritmul PSO
P1. Stabilirea parametrilor algoritmului
• dimensiunea roiului de particule –Dr (DimRoi)
• numărul maxim de iterații – Tmax
• coeficienții de încredere – C1 și C2
• coeficientul de limitare a vitezei – α
Algoritmul PSO
P2. Inițializarea roiului de particule
Se inițializează roiul de particule cu valori generate aleator:
• pentru pozițiile particulelor – cuprinse în intervalul [Xmin ; Xmax], folosind relația:

xi ,k ( 0 ) = xmin,k + rand ()  ( xmax,k − xmin,k ) i = 1, Dr , k = 1, n


Poziția
Particula
1 2 k n
1 x1,1 x1,2 x1,k x1,n
2 x2,1 x2,2 x2,k x2,n
i xi,1 xi,2 xi,k xi,n
Dr xDr,1 xDr,2 xDr,k xDr,n
Algoritmul PSO
P2. Inițializarea roiului de particule
Se inițializează roiul de particule cu valori generate aleator:
• pentru vitezele particulelor – cuprinse în intervalul [-Vmax ; Vmax], folosind relația:

vi ,k ( 0 ) = −vmax,k + 2rand ()  vmax,k i = 1, Dr , k = 1, n


Viteza
Particula
1 2 k n
1 V1,1 V1,2 V1,k V1,n
2 V2,1 V2,2 V2,k V2,n
i Vi,1 Vi,2 Vi,k Vi,n
Dr VDr,1 VDr,2 VDr,k VDr,n
Algoritmul PSO
P3. Evaluarea fiecărei particule
Pentru i = 1:Dr
Se evaluează performanța fiecărei particule:
yi ( t ) = f obj ( Xi ( t ) )
Se determină Pb,i (t) și yP (t)

 Xi ( t ) dacă yi ( t )  yP ,i ( t − 1)
PB ,i ( t ) = 
PB ,i ( t − 1) dacă yi ( t )  yP ,i ( t − 1)
 yi ( t ) dacă yi ( t )  yP ,i ( t )
y P ,i ( t ) = 
 yP ,i ( t − 1) dacă yi ( t )  yP ,i ( t )
Algoritmul PSO
P3. Evaluarea fiecărei particule
Se determină Gb (t)
 yi ( t ) dacă yi ( t )  yG ( t − 1)
yG ( t ) = 
 yG ( t − 1) dacă yi ( t )  yG ( t − 1)

 Xi ( t ) dacă yi ( t )  yG ( t − 1)
GB ( t ) = 
GB ( t − 1) dacă yi ( t )  yG ( t − 1)
Algoritmul PSO
P4. Modificarea poziției și vitezei particulelor
DACĂ t < Tmax
ATUNCI
Modifică viteza și poziția fiecărei particule conform relațiilor
Vi (t + 1) = wVi (t ) + C1r1 ( Pbi (t ) − Vi (t )) + C2 r2 (G b (t ) − Vi (t ))
Xi (t + 1) = Xi (t ) + Vi (t + 1)
Stabilește t =t+1
Se revine la pasul 3
ALTFEL
Stop
Algoritmul PSO
Parametrizarea algoritmului roiului de particule
Se recomandă modificarea valorii parametrului w în mod dinamic pe parcursul
procesului de optimizare folosind o relație de forma:
t
w(t ) = wmax − ( wmax − wmin )
Tmax
wmax = 0.9 wmin = 0.4

Acest parametru poate fi interpretat drept inerția vitezei particulei.


Algoritmul PSO
Parametrizarea algoritmului roiului de particule
În relația de inițializare a vitezelor particulelor intervine valoarea vitezei maxime a
acestora, vmax.
vi ,k ( 0 ) = −vmax,k + 2rand ()  vmax,k i = 1, Dr , k = 1, n

Viteza maximă a particulei se calculează cu următoarea relație


X max,k − X min,k
vmax,k =  k = 1, n
2
, unde α este o constată de limitare a vitezei maxime a particulei
(în general, α = 0.5)
Algoritmul PSO
Parametrizarea algoritmului roiului de particule
În relația de actualizare a vitezei particulelor intervin coeficienții C1 și C2.

Vi (t + 1) = wVi (t ) + C1r1 (Pbi (t ) − Vi (t )) + C2 r2 (G b (t ) − Vi (t ))

C1 - ponderea cu care viteza particulei se actualizează pe baza experienței proprii


C2 - ponderea cu care viteza particulei se actualizează pe baza experienței “sociale” a roiului

C1, C2 ∈ [0,2]

r1,r2 - numere generate aleator în intervalul [0,1]

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