Podręcznik
4. Particle Swarm Optimization
4.3. Schemat dzialania
Algorytm PSO opiera się na populacji cząstek poruszających się w przestrzeni rozwiązań, gdzie każda z nich aktualizuje swoją pozycję na podstawie własnego doświadczenia oraz obserwacji sąsiadów. Poszukiwanie rozwiązania odbywa się iteracyjnie, a cały proces można przedstawić jako cykl aktualizacji prędkości i położenia, z wykorzystaniem informacji lokalnej i społecznej.
Etapy działania algorytmu
-
Inicjalizacja populacji
- Pozycje i prędkości cząstek są losowo inicjalizowane.
- Dla każdej cząstki oblicza się wartość funkcji celu.
- Zapamiętywane są najlepsze pozycje własne (personal best) oraz najlepsze pozycje w sąsiedztwie (np. globalne lub lokalne optimum).
-
Pętla optymalizacyjna (iteracje)
-
Dla każdej cząstki:
- Aktualizowana jest prędkość na podstawie trzech komponentów: inercji, dążenia do własnego najlepszego punktu i dążenia do najlepszego punktu społecznego.
- Obliczana jest nowa pozycja.
- Obliczana jest wartość funkcji celu w nowej pozycji.
- Jeżeli nowa pozycja jest lepsza niż dotychczasowy personal best – zostaje zaktualizowana.
- Jeśli lepsza jest również od najlepszej pozycji w sąsiedztwie – sąsiedztwo jest informowane.
Warunek zakończenia
- Algorytm kończy działanie po osiągnięciu maksymalnej liczby iteracji lub po spełnieniu kryterium dokładności (np. brak poprawy przez N kroków).
-
Pseudokod algorytmu PSO
Wejście:
- funkcja celu f(x),
- liczba cząstek N,
- liczba iteracji T,
- współczynniki: ω, c1, c2
1. Dla każdej cząstki i = 1 do N wykonaj:
- losowo zainicjalizuj pozycję xi
- losowo zainicjalizuj prędkość vi
- ustaw pi ← xi // najlepsza pozycja własna
- oblicz f(pi)
2. Wyznacz g ← najlepsze pi w całej populacji lub w sąsiedztwie
3. Dla t = 1 do T wykonuj:
Dla każdej cząstki i = 1 do N:
- wylosuj r1, r2 ∈ U(0, 1)
- zaktualizuj prędkość:
vi ← ω * vi + c1 * r1 * (pi - xi) + c2 * r2 * (g - xi)
- zaktualizuj pozycję:
xi ← xi + vi
- oblicz f(xi)
- jeśli f(xi) < f(pi) to:
pi ← xi
- jeśli f(xi) < f(g) to:
g ← xi
4. Zwróć: g jako przybliżone optimum
Ograniczenia prędkości i ich wpływ na działanie algorytmu
W praktyce działania algorytmu PSO często wprowadza się ograniczenia na maksymalną dopuszczalną prędkość cząstek (oznaczaną jako v_max
). Prędkość cząstki decyduje o tym, jak duży krok wykonuje ona w przestrzeni poszukiwań – a zbyt duże kroki mogą powodować niekontrolowane skoki i pomijanie wartościowych obszarów.
Wprowadzenie ograniczenia v_max
powoduje, że prędkość cząstki jest każdorazowo przycinana według wzoru:
if |v_i| > v_max then v_i ← sign(v_i) * v_max
Efekty zastosowania ograniczenia:
- Stabilizacja algorytmu – cząstki poruszają się w sposób bardziej kontrolowany i nie „uciekają” z obszaru poszukiwań.
- Większa precyzja – małe kroki pozwalają dokładniej zbadać obszary w pobliżu lokalnych minimów.
-
Zwiększone ryzyko utknięcia – zbyt niskie
v_max
może sprawić, że cząstki ugrzęzną w minimum lokalnym i nie będą w stanie się z niego wydostać.
Dobór v_max
to kompromis między eksploracją (duże kroki, większe v_max
) a eksploatacją (małe kroki, mniejsze v_max
). Zazwyczaj wartości v_max
są skalowane względem rozmiaru przestrzeni poszukiwań, np. jako 10–20% długości danego wymiaru.