Podręcznik
3. Algorytmy genetyczne
3.11. Implementacje
Na koniec mamy dla Was przegląd dostępnych darmowych bibliotek do obliczeń genetycznych w językach Python i C++. To zestawienie może posłużyć jako pomocna mapa drogowa dla każdego, kto chce zastosować algorytmy genetyczne w praktyce – od prostych problemów inżynierskich po zaawansowaną optymalizację wielokryterialną.
Python
Python to jedno z najbardziej popularnych środowisk do eksperymentów z algorytmami genetycznymi – głównie dzięki swojej prostocie, ogromnej liczbie gotowych bibliotek oraz wsparciu społeczności. Oto najbardziej godne uwagi biblioteki:
- DEAP (Distributed Evolutionary Algorithms in Python) Jest to zdecydowanie najbardziej kompletna biblioteka do algorytmów ewolucyjnych w Pythonie. Obsługuje GA, ES, PSO, NSGA-II i wiele innych technik. Umożliwia szybkie prototypowanie dzięki modularnej architekturze i integracji z `numpy`. Strona projektu: https://github.com/DEAP/deap Plusy: wsparcie dla wielokryterialności (np. fronty Pareto), elityzm, analiza wyników, wsparcie dla rozproszenia obliczeń. Minusy: wysoki próg wejścia.
- SKO (Scikit-Optimize) To biblioteka oparta na `scikit-learn`, zaprojektowana do optymalizacji funkcji czarnej skrzynki, w tym również za pomocą metod ewolucyjnych. SKO umożliwia stosowanie algorytmu ewolucyjnego (GA) jako strategii przeszukiwania, alternatywnej wobec metod bayesowskich. Strona projektu: https://scikit-optimize.github.io/ Plusy: łatwa integracja z pipeline’ami `scikit-learn`, możliwość użycia GA do strojenia hiperparametrów modeli ML, prosta składnia. Minusy: ograniczone możliwości dostosowania operatorów genetycznych w porównaniu do bibliotek takich jak DEAP.
- PyGAD Lekka biblioteka GA, idealna do szybkich testów i edukacji. Wspiera różne typy mutacji, selekcji i krzyżowania, również dla danych typu ciągłego i dyskretnego. Strona projektu: https://pygad.readthedocs.io/ Plusy: świetna dokumentacja, prostota integracji z sieciami neuronowymi (np. Keras). Minusy: nie obsługuje bezpośrednio optymalizacji wielokryterialnej.
- Evol Kompaktowa i deklaratywna biblioteka, inspirowana programowaniem funkcyjnym. Strona projektu: https://github.com/godatadriven/evol Plusy: bardzo czytelna składnia, łatwość pisania własnych operatorów. Minusy: mniejsze możliwości przy złożonych problemach.
- Inspyred Dość elastyczna biblioteka, zawierająca także implementacje strategii ewolucyjnych i innych metaheurystyk. Strona projektu: https://github.com/aarongarrett/inspyred Plusy: dobre narzędzia diagnostyczne. Minusy: nie jest już aktywnie rozwijana, co może być problematyczne w dłuższej perspektywie.
C++
C++ to język chętnie wykorzystywany w zastosowaniach przemysłowych, gdzie liczy się wydajność. Znalezienie dobrych, aktywnie rozwijanych bibliotek open-source jest trudniejsze niż w Pythonie, ale oto najciekawsze z nich:
- EO (Evolving Objects) Biblioteka w pełni poświęcona obliczeniom ewolucyjnym – wspiera algorytmy genetyczne, strategie ewolucyjne, roje cząstek, programowanie genetyczne i wiele więcej. Strona projektu: https://github.com/eodev/eo Plusy: bardzo dobra architektura, aktywne wsparcie dla optymalizacji wielokryterialnej (np. NSGA-II). Minusy: wymaga dobrej znajomości C++ i nie jest już bardzo aktywnie rozwijana.
- Paradiseo Właściwie rozszerzenie EO – stanowi framework do optymalizacji metaheurystycznej, zawiera m.in. biblioteki do hybrydowych algorytmów, optymalizacji wielokryterialnej (Paradiseo-MO) oraz rozproszonej. Strona projektu: https://paradiseo.github.io/ Plusy: modularność, wysoka wydajność. Minusy: bardzo techniczne i wymaga głębszego wejścia w kod.
- GALib Jedna z najstarszych bibliotek (MIT), która wciąż jest wykorzystywana w edukacji i niektórych zastosowaniach przemysłowych. Strona projektu: http://lancet.mit.edu/ga/ Plusy: prostota, dobra dokumentacja. Minusy: przestarzała składnia, brak wsparcia dla nowoczesnych rozwiązań typu NSGA-II.