Przejdź do zawartości

Algorytm kukułki

Z Wikipedii, wolnej encyklopedii

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

[edytuj | edytuj kod]

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 .

Oznaczenia

[edytuj | edytuj kod]

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

[edytuj | edytuj kod]

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]

  1. Dokonywane jest podstawienie .
  2. Wybierany jest losowo indeks i wykonywany jest lot Lévy'ego z punktu do nowego punktu w przestrzeni .
  3. Wybierany jest losowo indeks i jeśli dokonywane jest podstawienie .
  4. 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

[edytuj | edytuj kod]
Dystrybucja Lévy'ego

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

Przypisy

[edytuj | edytuj kod]
  1. a b c d e f g Xin-She Yang, Suash Deb. Cuckoo Search via Lévy flights. „2009 World Congress on Nature & Biologically Inspired Computing (NaBIC)”, s. 210-214, 2009. DOI: 10.1109/NABIC.2009.5393690. 
  2. a b c d e Xin-She Yang, Suash Deb. Engineering optimisation by cuckoo search. „International Journal of Mathematical Modelling and Numerical Optimisation”. 1 (4), s. 210-214, 2010. 
  3. Xin-She Yang, Suash Deb. Cuckoo Search for Inverse Problems and Topology Optimization. „Proceedings of International Conference on Advances in Computing”, s. 291-295, 2012. DOI: 10.1007/978-81-322-0740-5_35. 
  4. a b c d e Xin-She Yang (ed.): Artificial Intelligence, Evolutionary Computing and Metaheuristics. In the Footsteps of Alan Turing. Springer-Verlag Berlin Heidelberg, 2013, s. I-XVIII, 1-794. DOI: 10.1007/978-3-642-29694-9. ISBN 978-3-642-29694-9.
  5. Xin-She Yang, Suash Deb. Cuckoo search: recent advances and applications. „Neural Computing and Applications”. 24, s. 169-174, 2014. DOI: 10.1007/s00521-013-1367-1. 
  6. Marek Gutowski. Lévy flights as an underlying mechanism for global optimization algorithms. „arXiv”, 2001. DOI: 10.48550/arXiv.math-ph/0106003.