Algorytm kukułki

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Algorytm kukułki (ang. cuckoo search, dosł. kukułcze poszukiwania) — metaheurystyczny, inspirowany naturą algorytm optymalizacyjny zaproponowany w 2009, którego twórcami są Xin-She Yang oraz Suash Deb[1][2][3][4][5]. Został zainspirowany zachowaniami niektórych gatunków kukułek, które składają swoje jaja w gniazdach innych ptaków (por. powiedzenie "kukułcze jajo")[1]. W algorytmie wykorzystane są loty Lévy'ego (ang. Lévy flights)[1][6]. Przykładowa implementacja algorytmu kukułki znajduje się w artykule jego twórców[2].

Reguły

Reguły algorytmu kukułki:[1]

  1. W danej chwili czasu kukułka może złożyć jedno jajo w losowo wybranym gnieździe gospodarza.
  2. W następnej iteracji algorytmu są uwzględnianie gniazda wysokiej jakości.
  3. Gospodarz gniazda, do którego zostało podrzucone jajo, może zauważyć to obce jajo z prawdopodobieństwem p[0,1].

Oznaczenia

Funkcja f:c jest funkcją przystosowania. Gniazdo gi,jc jest punktem w przestrzeni c-wymiarowej i jest potencjalnym rozwiązaniem problemu optymalizacyjnego. Indeksy i oraz j w symbolu gi,j oznaczają i-te gniazdo w j-tej iteracji algorytmu kukułki. Symbol t będzie stosowany zamiennie z j dla oznaczenia upływu czasu.

Algorytm

Poniżej przedstawiono przykładową wersję podstawowego algorytmu kukułki.

Algorytm rozpoczyna się w chwili t=0 od wygenerowania początkowej populacji gniazd gospodarzy rozmiaru μ:[1][2][4]

(gi,0)i=0μ1

gdzie gi,0 jest i-tym gniazdem w tej populacji.

Następnie w pętli wykonywane są poniższe czynności:[1][2][4]

  1. Dokonywane jest podstawienie t:=t+1.
  2. Wybierany jest losowo indeks i i wykonywany jest lot Lévy'ego z punktu gi,t do nowego punktu w przestrzeni gc.
  3. Wybierany jest losowo indeks j i jeśli f(g)>f(gj,t) dokonywane jest podstawienie gj,t:=g.
  4. Odrzucane jest pμ gniazd o najniższej wartości funkcji przystosowania i zastępowane są one nowo wygenerowanymi w sposób losowy z użyciem lotów Lévy'ego.

Pętla kończy się, gdy zmienna t osiągnie wartość graniczną lub zostanie spełniony inny warunek zakończenia[1][2][4].

Lot Lévy'ego

Dystrybucja Lévy'ego

Lot Lévy'ego jest błądzeniem losowym, którego krok jest losowany z dystrybucji Lévy'ego[4].

Przypisy