Podręcznik
4. Particle Swarm Optimization
4.5. Implementacje
Python
PySwarms
PySwarms to rozbudowana biblioteka badawcza, skierowana do użytkowników, którzy potrzebują elastyczności i narzędzi wspomagających badania nad PSO:
- Zawiera gotowe klasy optymalizatorów PSO (np. globalne, lokalne), funkcje testowe oraz wizualizację przebiegu optymalizacji.
- Umożliwia łatwe dostosowanie takich parametrów jak wielkość roju, współczynniki przyciągania, czy ograniczenie prędkości.
- Dodatkowo oferuje wsparcie do strojenia hiperparametrów i analizowanie wydajności (linia kosztów, ruchy cząstek itp.) .
To rozwiązanie idealne do badań, eksperymentów dydaktycznych – pozwala szybko wdrożyć algorytm i zobaczyć wyniki działania wizualnie.
Enhanced Particle Swarm Optimization
Enhanced PSO to klasyczna, dobrze udokumentowana implementacja PSO z dodatkowymi wariantami adaptacyjnymi:
- Implementuje m.in. adaptacyjne zmiany wag inercji i współczynników przyciągania oraz kontrolę maksymalnej prędkości cząstek.
- Kod jest przejrzysty, oparty o NumPy, wzbogacony o przykłady działania i wizualizacje.
- Świetny wybór dla tych, którym zależy na zrozumieniu, jak przebiegające w czasie zmiany parametrów wpływają na efektywność PSO .
Dzięki temu łatwo porównać klasyczne PSO z adaptacyjną wersją w tym samym środowisku.
scikit-opt
To rozbudowana biblioteka do optymalizacji heurystycznej, która integruje różne algorytmy, w tym PSO, w stylu zgodnym z konwencją scikit-learn
. Implementacja PSO w scikit-opt
charakteryzuje się prostym interfejsem, możliwością pracy z ograniczeniami oraz dobrą integracją z typowymi zadaniami optymalizacji nieliniowej.
Zaletą tej biblioteki jest także duża elastyczność i przejrzystość kodu, który może być łatwo modyfikowany przez użytkownika. Można szybko eksperymentować z różnymi ustawieniami i zintegrować algorytm z klasycznym pipeline uczenia maszynowego. Idealna opcja dla tych, którzy pracują już z narzędziami scikit-learn
i szukają zgodnego stylu kodowania.
C++
pso-cpp
pso-cpp to biblioteka napisania ze szczególnym naciskiem na wygodę:
- Pojedynczy header, korzysta z bibliotek Eigen3 do operacji na wektorach i macierzach.
- Wystarczy załączyć plik wraz z Eigen – brak skomplikowanych zależności.
- Prosty, czytelny interfejs: wystarczy przekazać funktor celu, skonfigurować parametry i uruchomić optymalizację .
To doskonałe rozwiązanie do szybkiej integracji PSO w aplikacjach C++, zarówno wymagających, jak i edukacyjnych.
ErfanFathi/pso
PSO w wersji ErfanFahti to implementacja w C++ z wizualizacją na żywo z użyciem OpenCV. Oprócz samego algorytmu PSO pozwala zwizualizować ruch cząstek (np. przeszukanie obrazu do znalezienia celu). Umożliwia ustawienie różnych parametrów (c1, c2 etc.), a dzięki interfejsowi OpenCV można łatwo obserwować efekty zmian. W zasadzie to świetne narzędzie dydaktyczne – by „naocznie” zobaczyć działanie PSO w 2D. Trochę gorzej w tym wypadku wygląda aktualność samej biblioteki - projekt nie jest już od jakiegoś czasu aktualizowany. Niemniej to niezłe narzędzie dla osób uczących się metod metaheurystycznych i potrzebujących wizualnego sprzężenia zwrotnego.