Po prostu, niching to klasa metod, które próbują zjednoczyć się w więcej niż jednym rozwiązaniu podczas jednego uruchomienia.
Niching jest ideą segmentacji populacji GA w zestawy rozłączne, przeznaczone do tego, aby mieć co najmniej jednego członka w każdym regionie funkcji fitness, który jest "interesujący"; ogólnie przez to rozumiemy, że obejmujecie więcej niż jedną lokalną optymę.
Wyobraź sobie funkcję podobną do f(x) = sin(x^2)
.
Normalny GA końcu zbiegają się w kierunku jednego globalnego minimum dwa. Który z nich zależy od początkowej populacji i losowego dryfu genetycznego występującego podczas biegu, ale ostatecznie dostaniesz n
kopii jednej osoby w jednej lub w innych dolinach. Na przykład, jeśli spojrzał na taki GA, kiedy została ona niemal zbiegły, można zobaczyć coś takiego
Niching to ogólna klasa technik przeznaczony do końca się z grubsza połowa ludności zbieżne w każdym minimów (lub prawdopodobnie nawet kilku członków w mniej dopasowanym minimum pod numerem x=0
).
Jak już powiedziałem, niching nie jest to algorytm tyle ogólnej klasy algorytmów. Jedną z takich metod jest dzielenie się zdrowiem Goldberga. W tej metodzie definiujemy promień niszowy sigma
. Dowolne dwie osoby bliżej siebie niż ta sigma
są uważane za znajdujące się w tej samej niszy, a zatem muszą dzielić się swoimi wartościami przydatności (myślę, że jest to funkcja, która zmniejsza sprawność każdego członka niszy, im gęstsza jest nisza). Następnie GA działa na wspólnych wartościach kondycji zamiast na surowych.
Pomysł polega na tym, że zniechęcasz do konwergencji do jednego regionu funkcji fitness, udając, że są tam ograniczone zasoby. Im więcej osób próbuje się wprowadzić, tym gorzej. Rezultat jest taki, że gdy GA znajduje się gdzieś w jednym lokalnym optimum, kondycja tego optimum maleje z powodu zwiększonej konkurencji wewnątrz niszy. Ostatecznie inny region krajobrazu fitness staje się bardziej atrakcyjny, a ludzie migrują tam. Chodzi o osiągnięcie stanu ustalonego - stałego punktu w dynamice - w którym zachowana jest odpowiednia reprezentacja każdej niszy.
Udostępnianie jest trudne ze względu na konieczność ręcznego ustawienia promienia niszy, a algorytm jest bardzo czuły na ten wybór. Inną alternatywą jest tłok. W szczególności możesz sprawdzić "Deterministic Crowding", który był popularną metodą przez pewien okres czasu.W metodach opartych na tłoku, zamiast zajmować się wyraźnym promieniem, pracujemy, ograniczając zbiór osób, które nowe potomstwo może zastąpić niektórymi zestawami podobnych rozwiązań, na przykład potomstwo może zostać zastąpione tylko jednym z jego rodziców. Efektem jest próba uniknięcia zastąpienia wyjątkowej osoby taką, która jest bardzo podobna do tuzina innych osób w populacji, a tym samym zachowanie różnorodności w ten sposób.