76 | Pomurska obzorja 1/ 2014/ 2 Tehnika Iztok Fister 1,* , Janez Brest 1 , Iztok Fister Jr. 1 , Karin Ljubič 2 Algoritmi po vzorih iz narave 1. Uvod Reševanje optimizacijskih problemov je težka in zelo zapletena naloga, saj je večina teh problemov NP-težkih (Garey & Johnson, 1979), kar pomeni, da se časovna zahtevnost reševanja povečuje eksponentno z večanjem naloge. To za uporabnika pomeni, da lahko pričakuje rezultate optimizacije šele po dolgotrajnem računanju, v najslabšem primeru pa to dejansko pomeni, da rešitve nikoli ne najdemo. Ker je izčrpno iskanje (pregled vseh možnih rešitev v prostoru preiskovanja) časovno preveč zahtevno, poskušamo najti optimalne rešitve v realnem času s pomočjo aproksimativnih metod »generiraj in preveri« (angl. generate and test). V zgodovini je bilo razvitih že veliko uspešnih mehanizmov za reševanje teh problemov, od različnih matematičnih modelov, linearnega programiranja, ipd… V sodobnem času, ko postajajo računalniki vse zmogljivejši, raziskovalci pri razvoju novih vrst algoritmov iščejo rešitve iz vzorov iz narave. Pri tem poskušajo na računalniku posnemati različne procese v naravi in te uporabiti za reševanje težkih problemov v realnem svetu. Najstarejši predstavniki te vrste so evolucijski algoritmi (Eiben & Smith, 2003). Ti algoritmi posnemajo biološko teorijo boja za obstanek , ki jo je razvil Charles Darwin (1859). V devetdesetih letih prejšnjega stoletja se je tem pridružila družina algoritmov, ki temeljijo na kolektivnem obnašanju v samo- organiziranih in decentraliziranih družinah žuželk oz. živali, kot npr. mravelj, termitov, čebel, jat ptičev, ipd… Vzore za reševanje težkih problemov iščemo tudi v drugih naravoslovnih znanostih, kot npr. kemiji in fiziki, v nekaterih družboslovnih znanostih in celo v glasbi. Nekateri od teh algoritmov so se v tem času že uveljavili, saj smo jih uspešno uporabili pri reševanju težkih problemov v realnem svetu (npr. optimizacija z delci rojev, algoritmi na osnovi obnašanja kresnic, netopirjev, kukavic, ipd…), drugi se šele uveljavljajo, nekateri pa ostajajo bolj ali manj na nivoju ideje. Za uveljavitev novega algoritma niso pomembni samo dobri rezultati, ki jih ta dosega pri reševanju določenega problema, ampak je potrebno zanje, prek konferenc oz. objav v znanstvenih revijah, zbuditi pozornost mednarodne strokovne javnosti. V tem članku smo zbrali prek 40 vrst algoritmov iz različnih področij uporabe, ki delujejo po vzorih iz narave. Te algoritme poskušamo klasificirati v različne kategorije glede na njihov izvor in ugotoviti, na katerih področjih so se še posebej uveljavili. Članek temelji na izhodiščih, ki so jih postavili Fister Jr. in drugi (2013). Struktura članka v nadaljevanju je naslednja: v poglavju 2 predstavimo vzore, ki navdihujejo znanstvenike pri razvoju novih vrst algoritmov. Pri tem se še posebej osredotočamo na algoritme po vzorih iz narave. Poglavje 3 se ukvarja s klasifikacijo algoritmov po vzorih iz narave. Članek zaključimo s povzetkom opravljenega dela in začrtamo smernice za nadaljnji razvoj. 2. Vzori za razvoj novih vrst algoritmov Narava je vedno navdihovala računalniške strokovnjake pri razvoju novih algoritmov, zato ni čudno, da največ vzorov za razvoj novih vrst algoritmov prihaja ravno iz biologije. Najpomembnejši algoritmi te vrste so evolucijski algoritmi (Eiben in Smith 2003), katerih vzor je Darwinov boj za obstanek (1859), kjer imajo v tekmi za preživetje več možnosti najuspešnejši posamezniki, ki se znajo prilagoditi spremembam v okolju. POVZETEK Narava je bila vedno vzor znanstvenikom pri reševanju najtežjih problemov v računalništvu, matematiki, medicini in industriji. Vzori iz narave ponujajo nove smernice za razvoj računalniških algoritmov. Ti algoritmi lahko temeljijo na obnašanju inteligence rojev, oz. drugih bioloških sistemov ali na simulaciji fizikalnih ali kemijskih procesov. V tem članku predstavljamo značilnosti vsakega od treh omenjenih vzorov, ki so vplivali na nastanek novih računalniških algoritmov, omenimo njihove avtorje in članke, v katerih so predstavili svoja dela. S tem pregledom želimo pomagati razvijalcem programske opreme pri lažji izbiri orodij za reševanje njihovih problemov iz prakse. Ključne besede: algoritem, inteligenca rojev, biološki sistemi, kresnice, netopirji. 1 Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko, Smetanova 17, 2000 Maribor 2 Univerza v Mariboru, Medicinska fakulteta, Taborska 8, 2000 Maribor E-naslovi: iztok.fister@uni-mb.si; janez.brest@uni-mb.si; iztok.fister2@uni-mb.si; karin.ljubicc@gmail.com Iztok FISTER et al.: ALGORITMI PO VZORIH IZ NARAVE Pomurska obzorja 1/ 2014/ 2 | 77 Tudi inteligenca rojev je nastala po vzorih iz biologije (Blum in Merkle 2008). V tem primeru predstavljajo njihov vzor na videz enostavna bitja sposobna izvajanja prirojenih akcij, ki pa so skupaj kot celota sposobni izvajanja kompleksnih stvaritev (npr. gradnja egipčanskih piramid). Termiti, na primer, so relativno enostavna bitja, ki pa so v interakciji sposobna zgraditi veličastna domovanja (termitnjake). Mravlje in čebele živijo skupaj zaradi iskanja hrane. Pri tem se mravlje sporazumevajo med seboj posredno s pomočjo kemične snovi feromona, katere količina določa najkrajšo pot do hrane, medtem ko se čebele sporazumevajo neposredno prek plesa z mahanjem (angl. waggle dance), s katerim izvidnik (angl. scout) vabi ostale čebele delavke na področja bogata s hrano, t.j. nektarjem. Na razvoj novih vrst algoritmov so vplivali tudi vzori iz drugih naravoslovnih znanosti, kot npr. kemije in fizike. Kemija je še posebej vplivala na razvoj t.i. optimizacije na osnovi kemijskih reakcij (angl. Chemical Reaction Optimization, krajše CRO), ki izkorišča interakcijo molekul v teh reakcijah za doseganje najnižjega energetskega stanja (Lam & Li, 2012). S področja fizike je na razvoj novih vrst algoritmov vplival pojav simuliranega ohlajanja (angl. Simmulated Annealing, krajše SA), pri katerem tekočino počasi ohlajamo, dokler se snov, v stanju z minimalno energijo, ne strdi (npr. voda postane led) (Kirkpatrick, Gellat, & Veechi, 1983). Tudi področje družboslovnih znanosti je dalo svoj pečat pri razvoju novih vrst algoritmov. V tem primeru postane glavni vzor človek z različnimi vidiki socialnega vedenja, kot npr. procesi zbiranja in soočanja idej (angl. brain-storming), različni čustveni in socialni procesi v družbi in celo procesi v anarhični družbi. V glasbi, na primer, je dirigentov cilj poiskati v orkestru z izvajalci na različnih instrumentih najboljšo harmonijo. Ta proces je postal vzor za razvoj algoritma iskanja harmonij (angl. Harmony Search, HA) (Geem, 20120). 3. Klasifikacija algoritmov po vzorih iz narave Algoritme po vzorih iz narave lahko razdelimo v štiri večje skupine, t.j. algoritme, ki temeljijo na (slika 1): - obnašanju inteligence rojev, - naravni evoluciji, - fizikalnih in kemijskih sistemih in - drugih vzorih iz narave in družbe. V nadaljevanju se osredotočamo na prve tri vrste algoritmov, ki temeljijo na vzorih iz narave. 3.1. Algoritmi na osnovi inteligence rojev Algoritme na osnovi inteligence rojev odlikujejo naslednje lastnosti: - nadzor je porazdeljen med posameznike (decentralizacija), - komunikacija poteka lokalno (kolektivno obnašanje), - vedenje posameznika je podrejeno vedenju sistema (samo- organizacija), - celoten odziv sistema je zelo robusten in prilagodljiv na spremembe v okolju (robustnost in fleksibilnost). Inteligenca rojev se nanaša na raziskovalno področje, ki se ukvarja s kolektivnim obnašanjem v samo-organiziranih in decentraliziranih sistemih. Ta izraz naj bi prvi uporabil Beni (1989) pri razvoju celičnih robotov, ki sestojijo iz enostavnih agentov in se sporazumevajo s pomočjo interakcije z agenti v okolici. Danes uporabljamo metode inteligence rojev v optimizaciji, nadzoru robotov, in usmerjanju v novih generacijah mobilnih omrežij, ki zahtevajo robustnost in fleksibilnost. Najpomembnejše vrste algoritmov po vzorih iz obnašanja inteligentnih rojev so (slika 2): - umetni imunski sistemi (angl. Artificial Immune Systems, krajše AIS) (Dasgupta 1999), - optimizacija z roji delcev (angl. Particle Swarm Optimization, krajše PSO) (Kennedy in Eberhart 1999), - algoritmi na osnovi cvetnega opraševanja (angl. Flower Pollination, krajše FPA) (Yang, 2012), - algoritmi na osnovi obnašanja netopirjev (angl. Bat Algorithm, krajše BA) (Yang, 2010), - kukavičje iskanje (angl. Cuckoo Search, krajše CS) (Yang in Deb, 2009), - algoritmi na osnovi obnašanja kresnic (angl. Firefly Algorithm, krajše FA) (Yang, 2008), - optimizacija s kolonijami umetnih čebel (angl. Artificial Bee Colony, krajše ABC) (Karaboga & Bastruk, 2007), - optimizacija s kolonijami mravelj (angl. Ant Colony Optimization, krajše ACO) (Dorigo & Di Caro, 1999). Slika 1. Vzori za razvoj novih vrst algoritmov prihajajo danes iz narave in družbe. Najpomembnejši vpliv na razvoj novih vrst algoritmov je imela biologija, ki je vplivala na nastanek algoritmov na osnovi obnašanja inteligence rojev in obnašanja bioloških sistemov. Na razvoj novih vrst algoritmov pa vplivajo tudi: kemija, fizika in ostali (družbeni) vzori. Iztok FISTER et al.: ALGORITMI PO VZORIH IZ NARAVE 78 | Pomurska obzorja 1/ 2014/ 2 Slika 2. Algoritmi na osnovi inteligence rojev spadajo v disciplino umetne inteligence in iščejo vzore za delovanje v kolektivnem obnašanju kolonij mravelj in termitov, rojev čebel in črvov, jatah ptičev in rib. Na sliki so predstavljeni naslednji vzori za nastanek najpogostejših algoritmov, ki si sledijo v smeri urinega kazalca: naravni imunski sistemi, jate ptičev, cvetno opraševanje, obnašanje netopirjev (eholokacija), kukavic (podtakniti svoje jajce v tuje gnezdo), kresnic (svetilnost), kolonij čebel (nabiranje nektarja), in mravelj (feromon). Algoritmi na osnovi inteligence rojev so populacijski, kar pomeni, da namesto ene rešitve vzdržujejo populacijo rešitev, s katerimi simulirajo kolektivno obnašanje delcev (angl. swarm) v roju. Čeprav so vsi algoritmov te vrste zelo podobni med seboj pa se razlikujejo v načinu preiskovanja prostora rešitev, t.j. kako se iz obstoječe pozicije v tem prostoru premakniti na novo, po možnosti boljšo pozicijo. Novo pozicijo v prostoru izračunavamo na podlagi matematičnih enačb, ki opisujejo pojav, značilen za kolektivno obnašanje vzora, ki ga simuliramo (npr. jate ptičev, kresnic, ipd.). Običajno se vse rešitve premikajo v smeri trenutne najboljše in pri tem odkrivajo nove najboljše rešitve. Problem se pojavi, ko najboljše rešitve ni mogoče več izboljšati. V tem primeru se pojavi stagnacija, ki jo običajno poskušamo reševati z dodatnimi prijemi, kot npr. lokalnim iskanjem, ipd… Pri tem je potrebno poudariti, da smo tukaj zajeli kvečjemu 10% različnih vrst algoritmov s področja inteligence rojev. Vendar se razvoj novih vrst s tega področja še zdaleč ni končal. Dan za dnem se pojavljajo nove vrste algoritmov temelječe na inteligenci rojev (npr. družine volkov, psov, mačk, japonskih žab, ipd…) tako, da se lahko z upravičenostjo sprašujemo, koliko novega prinašajo in ali niso vse te nove vrste algoritmov samo podmnožica že odkritih. Pravo resnico o tem bo prinesel čas. 3.2. Algoritmi na osnovah Darwinove evolucije Algoritmi temelječi na osnovah Darwinove evolucijske teorije simulirajo delovanje naravne selekcije, ki jo je postavil Darwin (1859). Na podlagi te teorije je nastalo področje evolucijskega računanja (angl. Evolutionary Computation, krajše EC) (Eiben & Smith, 2003). Evolucijsko računanje je sodoben pojem, ki zajema vse algoritme nastale na Darwinovem principu naravne selekcije. Po tem principu imajo za preživetje v naravi največ možnosti najuspešnejši posamezniki, ki prenašajo svoje dobre lastnosti na svoje potomce v procesu reprodukcije (križanje in mutacija). Vse algoritme, ki so nastali na področju evolucijskega računanja, imenujemo tudi evolucijske (angl. Evolutionary Algorithms, krajše EA) in jih delimo v naslednje vrste (slika 3): - genetski algoritmi (angl. Genetic Algorithms, krajše GA) (Goldberg, 1996), - genetsko programiranje (angl. Genetic Programming, krajše GP) (Koza, 1994), - evolucijske strategije (angl. Evolution Strategies, krajše ES) (Bäck, 1996), - evolucijsko programiranje (angl. Evolutionary Programming, krajše EP) (Fogel, Owens, & Walsh, 1966), - diferencialna evolucija (angl. Differential Evolution, krajše DE) (Storn & Price, 1997) (Brest, Greiner, Bošković, Mernik, & Žumer, 2006). Čeprav se vse omenjene vrste algoritmov razvijajo neodvisno druga od druge, pa jih povezujejo podobne lastnosti pri reševanju problemov. Tudi evolucijski algoritmi so v splošnem populacijski. Vsaka rešitev oz. posameznik v populaciji sestoji iz elementov, ki jih v evolucijski terminologiji imenujemo tudi gene. V vsakem evolucijskem ciklu so posamezniki v populaciji podvrženi procesu reprodukcije, t.j. delovanju operatorjev križanja in mutacije. Križanje običajno iz dveh posameznikov generira dva potomca, medtem ko mutacija spreminja naključno izbran element posameznika. Vsakega potomca po reprodukciji ovrednotimo. Pri tem uporabimo funkcijo uspešnosti povezano s problemom, ki ga rešujemo. V naslednjo generacijo evolucijskega procesa s selekcijo preživelih izberemo najboljše posameznike glede na vrednost funkcije uspešnosti. Evolucijski algoritmi se med seboj razlikujejo glede na predstavitev posameznikov (rešitev). Genetski algoritmi, na primer, delujejo s populacijo posameznikov predstavljenih kot Slika 3. Tudi evolucijski algoritmi spadajo v področje umetne inteligence. Vsak evolucijski algoritem je sestavljen iz: inicializacije, selekcije staršev, reprodukcije, ocenitvene funkcije, selekcije preživelih in pogoja ustavljanja. Iztok FISTER et al.: ALGORITMI PO VZORIH IZ NARAVE Pomurska obzorja 1/ 2014/ 2 | 79 dvojiška števila, evolucijske strategije kot realna števila, genetsko programiranje z drevesi implementiranimi v Lispu, in evolucijsko programiranje s končnimi avtomati. Te algoritme danes uspešno uporabljamo na različnih področjih optimizacije, modeliranja in simulacije. 3.3. Algoritmi temelječi na fizikalnih in kemijskih procesih Nekateri današnji algoritmi svojih vzorov ne iščejo v bioloških sistemih, ampak iščejo svoj navdih v fiziki in kemiji. Pri delovanju simulirajo običajno določene fizikalne oz. kemijske zakone, ki vključujejo npr. električni naboj, gravitacijo, rečne sisteme, ipd. Čeprav večina teh vzorov še vedno prihaja iz narave pa jih zaradi svojih posebnosti klasificiramo posebej. Podobno kot algoritmi na osnovi inteligence rojev tudi ti algoritmi iščejo nove rešitve v prostoru preiskovanja po določenih fizikalnih in kemijskih enačbah. Najpomembnejše algoritme te vrste prikazuje slika 4. Celoten spisek algoritmov je zbran v članku Fister Jr., & drugi (2013). Prav tako ti algoritmi niso nujno populacijski. Simulirano ohlajanje (Kirkpatrick, Gellat, & Veechi, 1983), na primer, išče eno samo optimalno rešitev, medtem ko so algoritmi na osnovi inteligentnega odlaganja materiala rek (angl. Intelligent Water Drops, krajše IWD) (Shah-Hosseini, 2007), črnih lukenj (angl. Black Holes, krajše BH) (Hatamlou, 2012), galaktičnega iskanja (angl. Galaxy-based Search Algorithm, krajše GbSA) (Shah- Hoseini, 2013), kemijskih reakcij (Lam & Li, 2012) in dogajanja v obremenjenih sistemih (angl. Charged System Search, krajše CSS) (Kaveh & Talatahari, 2010) populacijski. Med to vrsto algoritmov lahko najdemo tudi večagentne sisteme, kot npr. gravitacijski algoritem (angl. Gravitational Search Algorithm, krajše GSA) (Rashedi, Nezamabadi-pour, & Saryazdi, 2009). 4. Povzetek Cilj tega podpoglavja je narediti kratek povzetek klasifikacije algoritmov po vzoru iz narave, omeniti njihove avtorje in dati reference na njihova dela. S tem želimo pomagati raziskovalcem oz. razvijalcem programske opreme, po eni strani, pri iskanju orodij za reševanje njihovih problemov in jih, po drugi strani, spodbuditi za uporabo algoritmov po vzoru iz narave. Vzore iz narave, pripadajoče algoritme, njihove oznake in avtorje prikazuje tabela 1. Slika 4. Osnova algoritma SA predstavlja enačba ohlajanja, ki spreminja verjetnost premikanja iz ene točke v prostoru preiskovanja v drugo. Algoritem IWD izkorišča odlaganje materiala v rekah, ki vpliva na optimalni tok reke brez nepotrebnih okljuk (meandrov). BH temelji na pojavu črnih lukenj, ki absorbirajo najslabše posameznike v populaciji. GbSA deluje na osnovi pojava spiralnih rok pri nekaterih galaksijah, pri čemer išče njihove mejne vrednosti. GSA temelji na Newtonovem zakonu o gravitaciji. CRO pri optimizaciji simulira delovanje prvih dveh zakonov termodinamike, ki spremljata kemijske reakcije, medtem ko CSS izkorišča Coulombov zakon elektrostatike in Newtonove zakone mehanike. Iztok FISTER et al.: ALGORITMI PO VZORIH IZ NARAVE 80 | Pomurska obzorja 1/ 2014/ 2 Tabela 1. Algoritmi iz narave. Vzor iz narave Algoritem Oznaka Avtor Imunski sistemi Umetni imunski sistemi AIS Dasgupta (1999) Roji delcev Optimizacija z roji delcev PSO Kennedy in Eberhart (1999) Cvetno opraševanje Alg. na osnovi cvetnega opraševanja FPA Yang (2012) Eholokacija netopirjev Alg. na osnovi obnašanja netopirjev BA Yang (2010) Podtikanje jajc Kukavičje iskanje CS Yang in Deb (2009) Svetilnost Alg. na osnovi obnašanja kresnic FA Yang, 2008 Iskanje hrane Optimizacija z kolonijami umetnih čebel ABC Karaboga & Bastruk (2007) Darwinova evolucija Genetski algoritmi GA Goldberg (1996) Darwinova evolucija Genetsko programiranje GP Koza (1994) Darwinova evolucija Evolucijske strategije ES Bäck (1996) Darwinova evolucija Evolucijsko programiranje EP Fogel, Owens, & Walsh (1966) Darwinova evolucija Diferencialna evolucija DE Storn & Price (1997) Simulirano ohlajanje Alg. na osnovi simuliranega ohlajanja SA Kirkpatrick, Gellat, & Veechi (1983) Odlaganje prsti rek Inteligentno odlaganje materiala rek IWD Shah-Hosseini (2007) Črne luknje Alg. na osnovi črnih lukenj BH Hatamlou (2012) Galaksije Galaktično iskanje GbSA Shah-Hoseini (2013) Kemijske reakcije Optimizacija s kemijskimi reakcijami CRO Lam & Li (2012) Newtonov gravitacijski zakon Gravitacijski iskalni algoritem GSA Rashedi, Nezamabadi-pour, & Saryazdi (2009) Ime algoritmi po vzoru iz narave ni nastalo naključno. V Sloveniji smo že leta 2004 ustanovili skupino z imenom Algoritmi po vzoru iz narave (AVN), ki organizira delavnice s področja evolucijskega računanja in drugih računalniških metod po vzorih iz narave. Na delavnicah se srečujejo podiplomski študenti in mentorji iz raziskovalnih ustanov, univerz in podjetij. Delavnice potekajo izmenično na Institutu Jožef Stefan v Ljubljani in Fakulteti za elektrotehniko, računalništvo in informatiko v Mariboru. K udeležbi so vabljeni vsi, ki se ukvarjajo s temi metodami in njihovo uporabo in želijo aktivno sodelovati s svojimi prispevki ter pridobivati in deliti izkušnje na tem področju. 5. Zaključek V tem članku predstavljamo novo klasifikacijo algoritmov po vzoru iz narave, da bi pomagali tistim, ki s temi metodami želijo reševati vsakodnevne probleme v praksi. To je področje umetne inteligence, ki je dandanes izredno dinamično. Skoraj vsak dan se namreč pojavljajo nove vrste algoritmov, zato njihova klasifikacija še ni določena. Po eni strani jih računalniški strokovnjaki uvrščajo med evolucijske algoritme, po drugi strani med mehko računanje (angl. soft computing). Sami zastopamo stališče, da gre v tem primeru za algoritme, ki jih lahko uvrščamo v t.i. računsko inteligenco (angl. Computational Intelligence), katera išče vzore za svoje delovanje v naravi, kot npr. v Darwinovem zakonu boja za obstanek, obnašanju različnih vrst žuželk, živali in rastlin, ter v fizikalnih in kemijskih zakonih. V ta pregled nismo zajeli algoritmov, ki simulirajo delovanje človeka in njegovih procesov pri interakciji z drugimi ljudmi. V nadaljevanju dela se želimo posvetiti tudi temu področju. Viri 1. Bäck, T. (1996). Evolutionary Algorithms in Theory and Practice - Evolution Strategies, Evolutionary Programming, Genetic Algorithms. Oxford University Press. 2. Beni, G., & Wang, J. (1989). Swarm Intelligence in Cellular Robotic Systems. Proceedings of NATO Advanced Workshop on Robots and Biological Systems, 26-30. Tuscany, Italy. 3. Blum, C., & Merkle, D. (2008). Swarm Intelligence. Berlin: Springer-Verlag. 4. Brest, J., Greiner, S., Bošković, B., Mernik, M., & Žumer, V. (2006). Self-adapting Control Parameters in Differential Evolution: A comparative Study on Numerical Benchmark Problems. IEEE Transaction on Evolutionary Computation , 10(6), 646-657. 5. Darwin, C. (1859). On the Origin of Species. London: Harvard University Press (1964). Iztok FISTER et al.: ALGORITMI PO VZORIH IZ NARAVE Pomurska obzorja 1/ 2014/ 2 | 81 6. Das, S., & Suganthan, P. (2011). Differential Evolution: A Survey of the State-of-the-art. IEEE Transaction on Evolutionary Computation , 15(1), 4-31. 7. Dasgupta, D. (1999). Information Processing in the Immune System. V D. Corne, M. Dorigo, & F. Glover, New Ideas in Optimization, 161-167. New York, USA: McGrawHill. 8. Dorigo, M., & Di Caro, G. (1999). The Ant Colony Optimization Meta-heuristic. V D. Corne, M. Dorigo, & F. Glover, New Ideas in Optimization, 11-32. London, UK: McGraw Hill. 9. Eiben, A., & Smith, J. (2003). Introduction to Evolutionary Computing. Berlin: Springer-Verlag. 10. Fister, I. Jr., Fister, I., Brest, J., & Fister, D. (2013). A Brief Review of Nature-inspired Algorithms for Optimization. Electrotechnical Review , 80(3), 161-168. 11. Fister, I., Fister, I. Jr., Brest, J., & Žumer, V. (2012). Memetic Artificial Bee Colony Algorithm for Large-scale Global Optimization. IEEE Congress on Evolutionary Computation, 1-8. 12. Fogel, L., Owens, A., & Walsh, M. (1966). Artificial Intelligence through Simulated Evolution. New York, US: John Willey. 13. Garey, M., & Johnson, D. (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. New York, NY, USA: W.H. Freeman & Co. 14. Geem, Z. W. (2012). Recent Advances in Harmony Search Algorithm. Berlin: Springer-Verlag. 15. Goldberg, D. (1996). Genetic Algorithms in Search, Optimization, and Machine Learning. MA: Addison- Wesley. 16. Holland, J. (1992). Adaptation in Natural and Artificial Intelligence: An Introductory Analysis with Applications to Biology, Control and Artificial Intelligence. Cambridge, MA, USA: MIT Press. 17. Karaboga, D., & Bastruk, B. (2007). A Powerful and Efficient Algorithm for Numerical Function Optimization: Artificial Bee Colony (ABC) Algorithm. Journal of Global Optimization , 39(3), 459-471. 18. Kennedy, J., & Eberhart, R. (1999). The Particle Swarm Optimization; Social Adaptation in Information Processing. V D. Corne, M. Dorigo, & F. Glover, New Ideas in Optimization, 379-387. London, UK: McGraw Hill. 19. Kirkpatrick, S., Gellat, C. J., & Veechi, M. (1983). Optimization by Simulated Annealing. Science , 220(4578), 671-680. 20. Korošec, P., Šilc, J., & Filipič, B. (2012). The Differential Ant-stigmegy algorithm. Information Sciences , 82-97. 21. Koza, J. (1994). Genetic Programming 2 - Automatic Discovery of Reusable Programs. Cambridge, USA: MIT Press. 22. Lam, A. Y., & Li, V. O. (2012). Chemical Reaction Optimization: A Tutorial. Memetic Computing , 3-17. 23. Storn, R., & Price, K. (1997). Differential Evolution: A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces. Journal of Global Optimization , 11(4), 341-359. 24. Yang, X.-S. (2010). A New Metaheuristic Bat-inspired Algorithm. V C. Cruz, J. Gonzales, G. Krasnogor, & D. Pelta, Nature Inspired Cooperative Strategies for Optimization (NISCO 2010), 65-74. Springer-Verlag: Berlin. 25. Yang, X.-S. (2008). Firefly Algorithm. V X.-S. Yang, Nature-Inspired Metaheuristic Algorithms, 79-90. London, UK: Luniver Press. 26. Yang, X.-S. (2012). Flower Pollination Algorithm for Global Optimization. V J. Durand-Lose, & N. Jonoska, Unconventional Computation and Natural Computation, 240-249. Berlin: Springer-Verlag. 27. Yang, X.-S., & Deb, S. (2009). Cuckoo Search via Levy Flights. World Congress & Biologically Inspired Computing (NaBIC 2009), 210-214. IEEE Publication.