Czym jest Algorytm ewolucyjny (evolutionary algorithm, EA)?
Algorytm ewolucyjny to klasa metod obliczeniowych inspirowanych mechanizmami doboru naturalnego i dziedziczenia. Posługuje się populacją potencjalnych rozwiązań, które z pokolenia na pokolenie podlegają działaniom analogicznym do krzyżowania i mutacji, a następnie selekcji według wartości funkcji celu. Metody te tworzą szeroką rodzinę obejmującą m.in. algorytmy genetyczne, programowanie ewolucyjne, strategie ewolucyjne oraz algorytmy kolonii mrówek czy optymalizację rojem cząstek.
Historyczny kontekst i autorzy
Początki formalnych badań nad obliczeniami inspirowanymi ewolucją przypisuje się Johnowi Hollandowi, który w 1975 r. opublikował monografię „Adaptation in Natural and Artificial Systems”. Równolegle rozwijały się szkoły programowania ewolucyjnego w laboratorium Lawrence’a Fogel’a oraz strategii ewolucyjnych w zespole Ingo Rechenberga na Uniwersytecie Technicznym w Berlinie. W latach 90. XX w. termin „evolutionary computation” zaczął łączyć te nurty, a ustanowione w 1997 r. konferencje GECCO scaliły środowisko badawcze.
Jak dokładnie działa Algorytm ewolucyjny (evolutionary algorithm, EA)
W praktyce algorytm rozpoczyna się od losowej lub heurystycznej inicjalizacji populacji rozwiązań. Każdy osobnik jest kodowany w postaci wektora liczb, ciągu znaków lub bardziej złożonej struktury. W kolejnych iteracjach, zwanych pokoleniami, osobniki są krzyżowane, a wybrane pozycje ich „genotypu” ulegają mutacji. Powstałe potomstwo zostaje ocenione przez funkcję przystosowania. Mechanizm selekcji, np. turniejowy lub proporcjonalny, wybiera najlepiej rokujące jednostki do dalszej reprodukcji. Proces powtarza się do osiągnięcia kryterium stopu, którym może być liczba pokoleń, zbieżność populacji lub satysfakcjonujący poziom funkcji celu.
Kontrast z klasycznymi metodami optymalizacji
W odróżnieniu od gradientowych algorytmów optymalizacji, EA nie wymagają analitycznej postaci pochodnych i zachowują odporność na lokalne minima dzięki eksploracji równoległej wielu obszarów przestrzeni rozwiązań. W porównaniu z algorytmami przeszukiwania wyczerpującego oferują lepszą skalowalność, choć kosztem stochastycznej natury i braku gwarancji znalezienia optimum globalnego.
Zastosowania w praktyce
Algorytmy ewolucyjne znajdują zastosowanie w projektowaniu struktur aerodynamicznych, harmonogramowaniu produkcji, doborze hiperparametrów sieci neuronowych czy generowaniu układów elektrycznych. Ilustracją może być automatyczne projektowanie anten kosmicznych w NASA, gdzie EA pomogły uzyskać geometrię trudną do zaprojektowania ręcznie, a jednocześnie spełniającą restrykcyjne wymogi wagowe i propagacyjne.
Zalety i ograniczenia
Główne atuty to uniwersalność, niewymaganie informacji o pochodnych oraz łatwe równoleglenie obliczeń. Po stronie ograniczeń znajdują się wysokie koszty obliczeniowe przy dużych populacjach, trudność doboru parametrów, takich jak prawdopodobieństwa mutacji czy rozmiar populacji, oraz niestabilność wyników przy zbyt małej liczbie iteracji.
Na co uważać?
Projektując system oparty na EA, warto monitorować zbieżność, aby uniknąć przedwczesnego ujednolicenia populacji. Należy też dbać o odpowiednie kodowanie rozwiązań, gdyż błędne odwzorowanie przestrzeni problemu prowadzi do utraty informacji i ogranicza eksplorację. Kluczowa jest ponadto weryfikacja wyników przez testy niezależne od funkcji przystosowania stosowanej w fazie treningu.
Dodatkowe źródła
Obszerne omówienie podstaw i przykładów można znaleźć w haśle Evolutionary algorithm. Kompendium badań naukowych prezentuje przeglądowy artykuł dostępny na serwerze arXiv: A Comprehensive Survey of Evolutionary Machine Learning. Klasyczna monografia Johna Hollanda jest dostępna w wielu bibliotekach akademickich, natomiast studia przypadków, takich jak projektowanie anten, opisano w publikacjach NASA, m.in. Automated Antenna Design Using Genetic Algorithms.


