PSO Rój cząsteczek - Particle Swarm Optimization Michał Szopiak
Inspiracje biologiczne Algorytm PSO wywodzą się z obserwacji gróp zwierzą tworzony przez członków ptasich stad, czy ławic ryb, który umożliwia im synchroniczny ruch bez kolizji. Zachowania zbiorowe zwierząt są zarządzane przez pewne reguły. Istnieje wiele przykładów z natury potwierdzających pogląd, że dzielenie się informacją między osobnikami w społeczności stanowi wagę ewolucyjną, co stanowiło podstawę powstania PSO.
Co to jest PSO? Algorytm stada cząsteczek naśladuje ludzkie (albo owadzie) zachowania stadne. Podczas zdobywania własnego doświadczenia cząsteczki wzajemnie na siebie oddziałują, a członkowie populacji stopniowo przenoszą się w coraz lepsze obszary przestrzeni rozwiązań.
Cel Celem algorytmu jest znalezienie globalnego maximum lub minimum funkcji celu. PSO jest obliczeniowo niezbyt wymagająca, gdyż jej pamięć i prędkość obliczeń pod względem wymagań są niskie. Ponadto nie wymaga informacji na temat kierunku zmian funkcji celu, lecz jedynie jej wartość.
Rodzaje PSO Obecnie rozwijane są dwa warianty PSO, Globalne sąsiedztwo : każda cząsteczka przemieszcza się według najlepszej pozycji dla całej grup Lokalne sąsiedztwo : każda cząsteczka przemieszcza się w kierunku poprzedniej najlepszej pozycji według najlepszej cząsteczki w jego rozważanym sąsiedztwie,
Globalne sąsiedztwo Zalety Łatwe w implementacji Wymaga niskich kosztów obliczeniowych
Sąsiedztwo Pierścień Sąsiadem są cząsteczki o indeksach <i-l; i+1> modulo liczby cząsteczek
Sąsiedztwo Koło
Sąsiedztwo Von Neumann
Sąsiedztwo przestrzenne Po każdej iteracji szukamy k najbliższych cząstek według ustalonej mterykii
Inne sąsiedztwa Występują również inne sąsiedztwa topologia gwiazdy piramida
Wyznaczenie nowej pozycji cząstki z ppb.w1 na pozycji xj przepiszemy zawartość j-tej pozycji poprzedniego położenia z ppb.w2 na pozycji xj przepiszemy zawartość j-tej pozycji pbest z ppb.w3 na pozycji xj przepiszemy zawartość j-tej pozycji gbest
Wzór na prędkość v=c1*r1v+c2*r2*(pbest x) +c3*r3*(gbest x) Składnik momentu sprawia że cząstka stara się kontynuować ruch w dotychczasowym kierunku Składnik kognitywny sprawia że cząstka star powrócić do swojej najlepszej pozycji Składnik socjalny sprawia że cząstka Jest przyciągana Do najlepszej pozycji Odnalezionej przez rój
Wzór na prędkość v=c1*r1v+c2*r2*(pbest x)+c3*r3*(gbest x) r1,r2,r3- wartości losowe U(0,1) c1,c2,c3 - współczynniki określające wpływ poszczególnych elementów (jak bardzo ufa sobie, swojemu doświadczeniu i doświadczeniu swoich sąsiadów) pbest x - wektor odległości między obecnym położeniem, a najlepszym znalezionym dotychczas położeniem gbest x- wektor odległości między obecnym położeniem, a najlepszym znalezionym dotychczas położeniem przez zbiór sąsiadów v - wektor prędkość cząsteczki x - wektor położenia cząsteczki
Pseudo kod PSO() { swarm.initialize_randomlyparticleslocationandvelocity(); for i:1:max_iterations { swarm.updatebest_location(); for each particle in swarm { particle.update_velocity(); particle.update_location();
Particle { updatevelocity() { Obliczanie Prędkości for (i from 1 to dimensions) { this.v[i] =( c1*random(0,1)*(swarm.best[i] - this.x[i]) + c2*random(0,1)*(this.best[i] - this.x[i]) + c3*random(0,1)*(this.x[i] - swarm.random().x[i]) +a * this.v[i] +y *random(0,1); )
Aktualizacja pozycji cząstki Prticle { updatelocation() { for (i from 1 to dimensions) { this.x[i] = this.x[i] + this.v[i]; if (f(this.best) > f(this.x)) { this.best = this.x;