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.