Algorytmy genetyczne - populacja
Ludność to podzbiór rozwiązań obecnej generacji. Można go również zdefiniować jako zestaw chromosomów. Jest kilka rzeczy, o których należy pamiętać, mając do czynienia z populacją AH -
Należy zachować różnorodność populacji, w przeciwnym razie może to doprowadzić do przedwczesnej konwergencji.
Wielkość populacji nie powinna być bardzo duża, ponieważ może to spowodować spowolnienie AH, podczas gdy mniejsza populacja może nie wystarczyć dla dobrej puli godowej. Dlatego optymalna wielkość populacji musi zostać ustalona metodą prób i błędów.
Populacja jest zwykle definiowana jako dwuwymiarowa tablica - size population, size x, chromosome size.
Inicjalizacja populacji
Istnieją dwie podstawowe metody inicjowania populacji w GA. Oni są -
Random Initialization - Zapełnij początkową populację całkowicie losowymi rozwiązaniami.
Heuristic initialization - Zapełnij początkową populację przy użyciu znanej heurystyki problemu.
Zaobserwowano, że cała populacja nie powinna być inicjalizowana przy użyciu heurystyki, ponieważ może to spowodować, że populacja będzie miała podobne rozwiązania i bardzo małą różnorodność. Zaobserwowano eksperymentalnie, że losowe rozwiązania są tymi, które prowadzą populację do optymalności. Dlatego przy inicjalizacji heurystycznej po prostu zasiewamy populację kilkoma dobrymi rozwiązaniami, wypełniając resztę rozwiązaniami losowymi, zamiast wypełniać całą populację rozwiązaniami opartymi na heurystyce.
Zaobserwowano również, że inicjalizacja heurystyczna w niektórych przypadkach wpływa tylko na początkową sprawność populacji, ale ostatecznie to różnorodność rozwiązań prowadzi do optymalności.
Modele populacji
Istnieją dwa szeroko stosowane modele populacji -
Stan stabilny
W stanie ustalonym GA generujemy jedno lub dwa potomstwo w każdej iteracji i zastępują one jedną lub dwie osobniki z populacji. Stan ustalony GA jest również znany jakoIncremental GA.
Pokoleniowe
W modelu pokoleniowym generujemy 'n' potomków, gdzie n jest wielkością populacji, a cała populacja jest zastępowana nową na końcu iteracji.