Sunteți pe pagina 1din 2

Optimizarea cu roiuri de particule (Particle Swarm Optimization - PSO)

Inspiratie
Impreuna cu Ant Colony Optimization (Optimizarea cu colonii de furnici) formeaza clasa de algoritmi Swarm Intelligence. Swarm Intelligence este o noua paradigma computationala bazata pe studiul comportamentului colectiv in sisteme decentralizate, auto-organizate. Rezolvarea de probleme are loc la un nivel superior unei colectii de agenti idealizati, fara intentia de rezolvare din partea individului. Altfel spus, agentii individuali nu sunt constienti ca rezolva o problema, dar interactiunea colectiva duce la rezolvarea ei. Schimbul de informatii dintre membrii aceleasi specii ofera un avantaj evolutiv: membrii grupului pot profita de pe urma descoperirilor si experientei anterioare a tuturor celoralalti membri. PSO a fost descoperita (Kennedy si Eberhart, 1995) prin simulari ale deplasarii indivizilor intrun stol de pasari sau intr-un banc de pesti. A fost initial conceputa pentru ca o metoda de optimizare a functiilor neliniare continue dar ulterior a fost adaptata pentru a rezolva probleme de permutare, programare cu numere intregi, probleme cu constrangeri, optimizare in medii dinamice sau multi-obiectiv.

Schema generala
Are multe lucruri in comun cu metodele din calculul evolutiv:

mentin o populatie de reprezentari de solutii candidat care evolueaza de-a lungul unor iteratii aplicand o serie de operatori in functie de informatia data de o functie fitness care masoara meritul individual.

Elementele algoritmului
Metoda consta dintr-un grup de particule ce se deplaseaza in spatiul cautarii, traiectoria lor fiind determinata de valoarea celui mai bun fitness gasit. Fiecare particula este reprezentata de un vector x de lungime n indicand pozitia in spatiul n-dimensional si are o viteza vutilizata pentru a actualiza pozitia curenta. Vectorul viteza este calculat tinand cont de urmatoarele reguli:

fiecare particula tinde sa-si pastreze directia curenta (inertie) fiecare particula este atrasa de cea mai buna particula pe care a atins-o pana acum p fiecare particula este atrasa de catre cea mai buna particula din populatie g (sau din vecinatate)

Formulele utilizate pentru a actualiza fiecare individ din populatie la iteratia t+1 sunt: (1) v[t+1] = w1v[t] + w2rand() (p-x) + w3rand() (g-x) (2) x[t+1] = x[t] + v[t+1]

Pseudocod
INITIALIZARE begin

ITERARE

t := 0 genereaza P(t) (pozitiile x si vectorii viteza v) while (not CONDITIE_OPRIRE) do begin t := t + 1 evalueaza P(t) actualizeaza p, g for each particula in P(t) aplica formula (1) aplica formula (2) end

Parametrii
w2 si w3 - factorii de invatare - reprezinta ponderea termenilor acceleratie care atrag fiecare particula catre particulele p si g

w2 - parametru personal- tendinta de a duplica actiuni trecute proprii care s-au dovedit de succes w3 - parametru social - tendinta de a urma succesul celorlalti indivizi w1 atenuatorul vitezei - asigura echilibrul intre explorare/exploatare; este utilizata si ca pondere descrescatoare in timp (ca in Simulted Annealing) viteza maxima permisa - afecteaza indirect abilitatea de explorare, reducand valoarea vitezei sub o limita permisa.