Elektrotehniški vestnik 84(5): 214-220, 2017 Izvirni znanstveni članek Primerjava algoritmov za iskanje metriCnih sosedov pri simulacijah skupin Živih bitij Jure Demšar Univerza v Ljubljani, Fakulteta za računalništvo in informatiko, Večna pot 113, 1000 Ljubljana, Slovenija E-pošta: jure.demsar@fri.uni-lj.si Povzetek. Računalniške simulacije skupin zivih bitij se dandanes uporabljajo tako za proučevanje vedenja bitij, kot tudi za generiranje slikovitih animacij za potrebe računalniških iger in filmov. V vseh primerih je dobrodošlo, da se simulacije izvajajo čim hitreje. Ker na vedenje posameznega agenta v simulaciji najbolj vplivajo preostali bliznji agenti (sosednji agenti), je kljucno, da le-te najdemo cim hitreje. Raziskave biologov nakazujejo, da je vedenje opazovanega posameznika v skupini zšivih bitij pri nekaterih vrstah odvisno od njegovih topolosških sosedov (dolocšeno sštevilo najblizšjih sosedov), pri drugih pa od njegovih metricšnih sosedov (vsi sosedi v dolocenem radiju). Relevantna literatura nakazuje, da je za iskanje topoloških sosedov najhitrejši algoritem, ki uporablja k-d drevesa. V tem raziskovalnem delu me je predvsem zanimalo, kaksšna je situacija pri iskanju metricnih sosedov. Ugotovil sem, da ni metode, ki bi bila najboljša v vseh scenarijih, saj je hitrost iskanja metricnih sosedov pri dolocenih metodah odvisna tudi od vedenja simuliranih zivih bitij. Ce se zivali zadrzujejo v manjših skupinah, je najboljša metoda za iskanje metricnih sosedov razdelitev prostora, ce pa se zivali zadrzujejo v vecjih skupinah, je najhitrejša metoda k-d drevo. Ključne besede: umetno zivljenje, simuliranje skupin zivali, metricni sosedi, algoritmi za iskanje sosedov, optimizacija A comparison of algorithms for finding metric neighbours in simulations of living beings Computer simulations of groups of living beings are not useful only for studying the behaviour of beings but also for generating spectacular animations for the purpose of gaming and movie industry. In all cases it is desired for simulations to run as fast as possible. Since the behaviour of a single agent inside the simulations is mostly dependant on other nearby agents (neighbours), it is crucial to have a quick method for finding them. The biology literature suggests that the behaviour of an observed individual depends either on its topological neighbours (k-nearest neighbours) or its metric neighbours (all neighbours inside a certain radius). The relevant literature advocates that the k-d trees are the fastest method when searching for topological neighbours. With the help of this study I was assessing which method would be the best when searching for metric neighbours. I found out that there is no clear winner as the performance of some methods for searching metric neighbours also depends on the behaviour of simulated agents. When agents form smaller groups, the best method is spatial partitioning and when agents coalesce into large groups, it is best to use a k-d tree. Keywords: artificial life, simulating groups of animals, metric neighbours, neighbour search algorithms, optimization 1 Uvod V naravi pogosto opazimo zivali, ki se zadrzujejo v skupinah. Najbolj tipicni primeri so jate ptic in rib, roji zuzelk, crede kopitarjev itd. Proucevanje skupin zivali ze dalj casa ni samo domena biologov, s tem podrocjem se ukvarjajo tudi znanstveniki iz drugih ved - od fizike in medicine do druzbenih ved in racunalništva [1], [2], [3], [4]. Racunalnicarji na tem podrocju sodelujemo vecinoma skozi izdelavo racšunalnisških modelov, ki posnemajo obnašanje skupin zivali v naravi. Tovrstni modeli so se izkazali za uporabno metodo pri proucevanju vedenja skupin zivali [5], [6], [7], [8], [9], [10], [3], [11], pri simuliranju evolucije skupinskega vedenja [12], [2], [13], [14], [15], [16] in pri izdelavi slikovitih animacij za potrebe racunalniških iger in filmov [17], [18], [19], [20]. V vseh primerih je hitrost procesiranja kljucnega pomena - pri znanstvenih raziskavah nam višja hitrost omogoca hitrejše pridobivanje rezultatov, medtem ko je pri igrah in filmih visoka hitrost procesiranja po navadi potrebna za izris simulacij skupin zšivih bitij v realnem casu. Najpogostejši nacin za racunalniško simuliranje skupin zšivali so modeli, zasnovani na ravni posameznika (angl. individual-based models). V tovrstnih modelih je vsaka zival simulirana kot samostojen, avtonomen agent, ki je sposoben zaznavati svet okoli sebe. S pomocjo informacij, pridobljenih skozi zaznavanje sveta, nato ^ * * -■»»v* ^ / > i ¿g" * ¿g \ * \ \ • -i / k---* «i» \ -i * \ * ^ ^* > a b c Slika 1: Vizualizacija treh osnovnih teženj: a) kohezije, b) razmika in c) poravnave. Črni agent je opazovani posameznik, sivi agenti pa so sosedi, ki neposredno vplivajo na njegovo vedenje. Beli agenti so zunaj radija zaznave opazovanega posameznika in posledično nimajo neposrednega vpliva na njegovo vedenje. posamezen agent prilagodi svoje vedenje z namenom, da bi čim bolje zadovoljil svoje teZnje (angl. drives). Ker so tovrstni modeli zgrajeni na najniZji ravni (na ravni posameznega agenta), pri načrtovanju vedenja simuliranih zivih bitij omogočajo veliko fleksibilnost in natančnost [17], [21]. Za visoko natančnostjo pa se skriva tudi največja tezava modelov, zasnovanih na ravni posameznika - visoka računska zahtevnost [17]. Zaradi visoke računske zahtevnosti se pogosto zgodi, da načrtovani računalniški model ni sposoben v realnem času simulirati tako velikih skupin zivali, kot jih lahko najdemo v naravi. Zelo velike skupine zšivali v naravi niso redkost, saj velikanske skupine (tisoč in več posameznikov) najdemo pri ptičah [22], ribah [23] in kopitarjih [24]. V zelji, da bi v realnem času lahko simulirali čim večje skupine zivali, se raziskovalči posluzujejo različnih tehnik za pohitritev izvajanja simulačij. Najpogostejša izmed njih je verjetno vzporedno pročesiranje [25], [26], [27]. Pri najpogostejši načinih vzporednega pročesiranja se za pohitritev uporabljajo grafične kartiče, vendar ta način pohitritve razvijalčem ni vedno na voljo - primer so mobilne aplikačije oziroma igre, kjer večina mobilnih naprav ne podpira vzporednega pročesiranja na grafičšnih kartičah. Poleg vzporednega pročesiranja obstajajo tudi tehnike modeliranja, ki so sičer hitrejše, vendar tudi prečej manj natančšne kot modeli, zasnovani na ravni posameznika. Najpogostejša izmed teh tehnik se imenuje modeliranje na prinčipu tokov (angl. flow-based models) [28], [17], [29], [21], [20]. Ta tehnika se največkrat uporablja, kadar raziskovalče zanimajo predvsem globalni vzorči, ki se pojavijo na ravni skupine in ne lokalne interakčije med posameznimi člani skupine. Gibanje skupin v tovrstnih modelih spominja na tok tekočine, od koder izhaja tudi ime tehnike. Računsko so tovrstni modeli prečej manj zahtevni kot modeli, zasnovani na ravni posameznika, saj je vedenje zasnovano na ravni skupin in ne na ravni posameznih agentov. Poslediča modeliranja na višji ravni pa je prečej nizja natančnost in s tem tudi dvomljiva biološka relevanča vedenja. Modeli, ki zdruzujejo tehnike obeh svetov, se imenujejo hibridni modeli (angl. hybrid models) [17], [30]. Hibridni modeli skušajo zdruziti natančnost modelov zasnovanih na ravni posameznikov, s hitrostjo modelov, zasnovanih na prinčipu tokov. Rezultat so modeli, ki omogočšajo modeliranje razmeroma velikih skupin z dokaj visoko natančnostjo [31], [17], [30]. Tako kot pri modelih na prinčipu tokov je tudi pri hibridnih modelih biolosška relevanča dvomljiva. Ker je v številnih primerih modeliranja visoka bi-olosška relevanča ključšnega pomena, smo velikokrat prisiljeni uporabiti modele, zasnovane na ravni posameznika. Največji računski zalogaj je pri tovrstnih modelih preiskovanje okoliče. Da lahko agent pravočasno reagira na spremembe v okoliči, jo mora ves čas preiskovati. V večšini primerov gre pri preiskovanju okoliče za iskanje bliznjih sosedov, saj le-ti po navadi vplivajo na vedenje opazovanega posameznika. Več avtorjev [25], [27], [32] je s pomočjo uporabe različnih podatkovnih struktur uspesšno pohitrilo postopek iskanja sosedov. Raziskave biologov nakazujejo, da na obnašanje opazovanega posameznika v skupini vpliva bodisi določšeno število najblizjih sosedov (topološki sosedi) [33] bodisi vsi sosedi v določenem radiju (metrični sosedi) [34]. Vermeulen in sod. [32] so pokazali, da pri iskanju topoloških sosedov le-te najhitreje najdemo s pomočjo k-d drevesa [35]. Ker se metode za iskanje metričnih sosedov v določšenih primerih razlikujejo od metod za iskanje topoloških sosedov, v tej raziskavi empirično primerjam tri pogoste tehnike iskanja metričnih sosedov - Tabela 1: Opis in vrednosti uporabljenih parametrov modela. Parameter Opis Vrednost T Stevilo korakov 1200 N Stevilo agentov 100 - 3000 Tr Radij območja gnezdenja 50 m wr Utez gnezdenja 5 Ts Radij razmika 1m ws Utezš razmika 10 Ta Radij poravnave 3m Wa Utezš poravnave 3 Tc Radij zaznavanja/kohezije 5 m, 10 m Wc Utez kohezije 3 vmax Najvisšja hitrost agentov 20 m/s m Masa agentov 1 kg naivno iskanje, k-d drevesa (angl. k-d tree) in razdelitev prostora (angl. spatial partitioning). 2 Metode Za izhodišče pri testiranju hitrosti iskanja metričnih sosedov sem si izbral najbolj znan in razširjen računalniški model za simulacijo letenja ptič v jati BOIDS [19]. To je model, zasnovan na ravni posameznika, pri katerem vsak od simuliranih agentov skuša zadovoljiti tri teznje: razmik (angl. separation), poravnavo (angl. alignment) in kohezijo (angl. cohesion). S pomočjo teznje razmika agenti preprečujejo medsebojne trke in ohranjajo osebni prostor, s pomočšjo poravnave usklajujejo hitrost in smer gibanja s svojimi sosedi, s pomočjo kohezije pa tvorijo skupine. Na sliki 1 je grafični prikaz tezenj. V razvitem računalniškem modelu je vsak agent definiran s svojo pozičijo (pi(t), pomeni pozičijo agenta i v nekem trenutku v času) in vektorjem hitrosti (vi(t)). Si-mulačija deluje tako, da vsak simulirani agent v vsakem časovnem koraku (angl. update step) prilagodi svoje vedenje glede na stanje sveta okoli njega, da bi zadovoljil svoje teznje. Stanje sveta s stališča opazovanega agenta je definirano skozi njegove metrične sosede - agente, ki se nahajajo v radiju zaznave (rc) opazovanega agenta. Vsak agent se skuša gibati tako, da bo stanje sveta okoli njega čim bolje zadovoljevalo njegove teznje. Za zadovoljitev teznje razmika se skuša opazovani agent oddaljiti od vseh sosednjih agentov, ki so mu preblizu (blize od radija razmika, rs): fs,i(t)= £ dij(t) ■ (rS - \oij(t)\2), (1) jeNSti(t) kjer je fSji(t) sila separačije opazovanega agenta i v danem časovnem koraku, Ns