Algorytm kukułki
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]
- W danej chwili czasu kukułka może złożyć jedno jajo w losowo wybranym gnieździe gospodarza.
- W następnej iteracji algorytmu są uwzględnianie gniazda wysokiej jakości.
- Gospodarz gniazda, do którego zostało podrzucone jajo, może zauważyć to obce jajo z prawdopodobieństwem .
Oznaczenia
Funkcja jest funkcją przystosowania. Gniazdo jest punktem w przestrzeni -wymiarowej i jest potencjalnym rozwiązaniem problemu optymalizacyjnego. Indeksy oraz w symbolu oznaczają -te gniazdo w -tej iteracji algorytmu kukułki. Symbol będzie stosowany zamiennie z dla oznaczenia upływu czasu.
Algorytm
Poniżej przedstawiono przykładową wersję podstawowego algorytmu kukułki.
Algorytm rozpoczyna się w chwili od wygenerowania początkowej populacji gniazd gospodarzy rozmiaru :[1][2][4]
gdzie jest -tym gniazdem w tej populacji.
Następnie w pętli wykonywane są poniższe czynności:[1][2][4]
- Dokonywane jest podstawienie .
- Wybierany jest losowo indeks i wykonywany jest lot Lévy'ego z punktu do nowego punktu w przestrzeni .
- Wybierany jest losowo indeks i jeśli dokonywane jest podstawienie .
- Odrzucane jest 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 osiągnie wartość graniczną lub zostanie spełniony inny warunek zakończenia[1][2][4].
Lot Lévy'ego

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