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
[edytuj | edytuj kod]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
[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]
- 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
[edytuj | edytuj kod]Lot Lévy'ego jest błądzeniem losowym, którego krok jest losowany z dystrybucji Lévy'ego[4].
Przypisy
[edytuj | edytuj kod]- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ Marek Gutowski. Lévy flights as an underlying mechanism for global optimization algorithms. „arXiv”, 2001. DOI: 10.48550/arXiv.math-ph/0106003.