http://www.simulace.info/index.php?title=LouzePrvoku(NetLogo)&feed=atom&action=historyLouzePrvoku(NetLogo) - Revision history2024-03-29T02:30:56ZRevision history for this page on the wikiMediaWiki 1.31.1http://www.simulace.info/index.php?title=LouzePrvoku(NetLogo)&diff=13723&oldid=prevFrantišekN: Created page with " = Zadání = '''Název simulace:''' Louže prvoků '''Předmět:''' 4IT495 Simulace systémů (LS 2016/2017) '''Autor:''' Bc. František Nushart, xnusf00 '''Typ modelu:'''..."2017-06-11T21:56:27Z<p>Created page with " = Zadání = '''Název simulace:''' Louže prvoků '''Předmět:''' 4IT495 Simulace systémů (LS 2016/2017) '''Autor:''' Bc. František Nushart, xnusf00 '''Typ modelu:'''..."</p>
<p><b>New page</b></p><div><br />
= Zadání =<br />
'''Název simulace:''' Louže prvoků<br />
<br />
'''Předmět:''' 4IT495 Simulace systémů (LS 2016/2017)<br />
<br />
'''Autor:''' Bc. František Nushart, xnusf00<br />
<br />
'''Typ modelu:''' Multiagentní<br />
<br />
'''Modelovací nástroj:''' Netlogo 6.0<br />
<br />
<br />
[[File:louzeprvoku.png|center]]<br />
<br />
<br />
= Definice problému =<br />
Předmětem je simulace prostředí tvořeného navzájem si soupeřícími prvoky. Na zacyklené plátno je při inicializaci simulace rozmístěno dané množství prvoků s rozdílnými počátečními vlohami ve vlastnostech jako je rychlost, velikost (ta určuje i sílu), senzorický dosah. Prvoci jsou v neustálém náhodném pohybu, který korigují v reakci na své sousedy v senzorickém dosahu. Při střetu dvou prvoků silnější vstřebá slabšího. Pozřený prvok zaniká a vítězi jsou upraveny vlastnosti (nabude na velikosti a je pomalejší). Prvoci, kteří po určitý čas nemají potravu také zanikají (u větších a silnějších je tento čas kratší). Zaměřuji se na výsledky prvoků vzhledem k nastavení počátečních vloh a v rámci zjednodušení neuvažuji další prvky prostředí a systém rozmnožování.<br />
<br />
Cílem simulace je analyzovat, jaké počáteční vlohy jsou pro prvoky nejvýhodnější a prozkoumat dynamiku systému a vývoje vlastností v závislosti na nastavení vstupních parametrů.<br />
<br />
= Metoda =<br />
Simulace je realizována v prostředí Netlogo z důvodu kladeného důrazu na agentní přístup.<br />
Vzhledem k charakteru zkoumaného problému je poměrně obtížné dostatečně se přiblížit metrikám reálného prostředí. Pro zajištění odpovídajícího kontaktu s realitou jsem kromě přípravného, vstupního výzkumu konzultoval nastavení, interakce zkoumaných prvoků a podobu modelu se středoškolským učitelem specializujícím se na obor biologie. <br />
<br />
= Model=<br />
V tomto oddílu jsou popsány jednotlivé části modelu, jeho inicializace a počáteční nastavení s diskusí.<br />
<br />
<br />
== Agenty ==<br />
V modelu jsou tři typy agentů představující: <br />
<br />
*trepku (Paramecium) [[File:trepka.png]]<br />
*vpíjenku (Didinium)[[File:vpijenka.png]]<br />
*amébu (Amoeba)[[File:ameba.png]]<br />
<br />
<br />
Každý z těchto tří druhů má následující proměnné, které určují počáteční vlastnosti, druhové populace.<br />
<br />
*perception - Vyjadřuje senzorický dosah pro detekci kořisti a lovce. Obor hodnot: < 1.0 ; 5.0 ><br />
*magnitude - Vyjadřuje velikost a současně sílu jedince. Obor hodnot: < 1.0 ; 5.0 ><br />
*speed - Vyjadřuje rychlost jedince. Obor hodnot: < 1.0 ; 5.0 ><br />
*energy - Vyjadřuje zásobu surovin potřebných pro život < 0 ; 200 ><br />
<br />
<br />
== Incializace ==<br />
<br />
Základní nastavení simulace před jejím spuštěním:<br />
<br />
Je zadáno množství prvoků pro každý druh (Paramecium, Didinium, Amoeba). Obor hodnot: < 0 ; 50 ><br />
<br />
Pro každý druh jsou dále zadány výchozí hodnoty:<br />
<br />
*senzorický dosah (perception)<br />
*velikost (magnitude)<br />
*rychlost (speed)<br />
*energie (energy)<br />
<br />
<br />
Doporučené výchozí nastavení těchto parametrů by mělo pro vhodnou reprezentaci reálných poměrů mezi třemi zkoumanými druhy prvoků respektovat, že:<br />
<br />
*Trepka a vpíjenka jsou rychlejší, než amoeba.<br />
*Trepka a vpíjenka mají lepší senzorický dosah, než amoeba.<br />
*Amoeba je větší, než trepka a vpíjenka.<br />
<br />
Vygenerovaní jedinci mají zadané parametry individuálně upraveny pomocí normálního rozdělení se směrodatnou odchylkou 0.3 pro reprezentaci vnitrodruhové diverzity.<br />
<br />
Jedinci jsou následně náhodně rozmístěni na zacyklené plátno představující naší zkoumanou louži.<br />
<br />
<br />
== Spuštění==<br />
<br />
Spuštěním odstartuje simulaci systému, která probíhá po jednotlivých krocích, kde agenty vždy v každém kroku vyhodnotí své okolí v senzorickém dosahu a na základě výsledku upraví směr pohybu, nebo zvolí náhodný a udělají přískoky v závislosti na jejich rychlosti. Dále během kroku simulace agenty vyhodnocují interakce s ostatními agenty a organickými zbytky nacházejícími se na jejich poli. S pohybem je spojen úbytek energie, který se rovněž v každém kroku upravuje a následně probíhá kontrola, zda je agent naživu. V neposlední řadě se v každém kroku náhodně objevují živiny z prostředí představující rostoucí řasy.<br />
<br />
==Použité procedury==<br />
<br />
'''decrease-energy''' (všechny druhy)<br />
<br />
Úbytek energie v každém kroku v závislosti na velikosti agenta. <br />
<br />
<br />
'''drop'''<br />
<br />
Na náhodně zvoleném poli přibydou živiny a pole se zbarví do zelena.<br />
<br />
<br />
'''collect''' (všechny druhy)<br />
<br />
Pokud pole, na kterém se agent nachází, nemá nulovou hodnotu živin, agent vstřebá nalezené živiny a převede je na svojí energii. Barevné označení přítomnosti živin je odstraněno přebarvením pole na černo. U agenta současně dojde k poklesu rychlosti a jeho velikost je upravena v závislosti na množství vstřebaných živin.<br />
<br />
<br />
'''feed''' (améby a vpíjenky)<br />
<br />
Pokud se agent nachází na poli, kde je současně nějaká trepka, jednu z přítomných trepek si vybere a usmrtí ji za uvolnění živin odpovídajícím její velikosti. To doprovází zbarvení pole na bílo (predátor však živiny pomocí collect vstřebá a pole přebarví zpět na černo).<br />
Na plátnos se dále pro přehlednost zobrazí “hrobeček” značící velikost usmrceného agenta.<br />
<br />
<br />
'''be-eaten''' (améby a vpíjenky)<br />
<br />
Pokud se v dané vzdálenosti útočného dosahu (zvoleno jako 1) nachází další ameba, nebo vpíjenka, jejíž velikost je větší, než velikost agenta, agent uvolní živiny dle své velikosti, přebarví pole na zeleno a zemře. Na plátno se opět pro přehlednost zobrazí “hrobeček” značící velikost usmrceného agenta.<br />
<br />
<br />
'''check-dead''' (všechny druhy)<br />
<br />
Slouží k vyhodnocení, zda má agent nenulovou energii a může tak zůstat naživu. V případě energie menší, nebo rovné nule agent umírá, přebarví pole na červeno, uvolní živiny v množství odpovídajícímu jeho velikosti a zobrazí “hrobeček”.<br />
<br />
<br />
===wander procedury===<br />
<br />
Následující procedury wander určují, jakým způsobem se každý druh pohybuje a jakým způsobem reaguje na dané senzorické vjemy. V úvodu je naznačena detekce překážek, které jsem se simulaci v rámci přehlednosti později rozhodl nevěnovat.<br />
<br />
<br />
'''pmc-wander''' (trepky)<br />
<br />
Trepky v první řadě vyhodnotí, zda v jejich senzorickém dosahu je nějaká vpíjenka, nebo améba a pokud ano, tak prchá. Otočí se o 180° od té nejblyžší a za odečtení energie udělá přískok. Akce je pro přehlednost doprovázena přechodným zbarvením do modra.<br />
Pokud nehrozí nebezpečí, trepka vyhodnocuje, zda v jejím senzorickém dosahu jsou nějaké volné živiny. Prioritizuje je podle zbarvení pole v pořadí červená > bílá > zelená.<br />
Pokud senzory jedince nezachytily ani jednu z podmínek výše, prvok setrvává v náhodném vrtivém pohybu (náhodně upraví aktuální nasměrování a za úbytku energie udělá přískok).<br />
<br />
'''dids-wander''' (vpíjenky)<br />
<br />
Vpíjenky jsou na rozdíl od trepek agesivnější, pokud se v jejich senzorickém dosahu nachází další vpíjenky a žádná z nich není větší, vpíjenka se nasměruje na tu nejblyžší a provede přískok za úbytku energie. Pokud nejsou v dosahu vpíjenky, vpíjenka zkontroluje zda není v dosahu nějaká trepka, pokud ano, opět se na ní nasměruje a udělá za úbytku energie přískok. Když není příležitost k lovu, vpíjenka kontroluje okolí v senzorickém dosahu pro améby, které pro ní představují nebezpečí a bez uvážení velikosti před nimi prchá. Pokud je v senzorickém dosahu améba, vpíjenka se nasměruje o 180° od té nejblyžší a za ztráty energie udělá přískok. Pro přehlednost mění vpíjenky zbarvení při všech výše uvedených případech na okamžik na fialovo.<br />
Pokud ani jedna z výše uvedených situací v daném kroku systému nenastává, vpíjenka setrvává v náhodném vrtivém pohybu (náhodně upraví aktuální nasměrování a za úbytku energie udělá přískok).<br />
<br />
Priorita vpíjenky je tedy: lov konkurenční menší vpíjenky > lov trepky > úprk před amébou > náhodný pohyb.<br />
<br />
'''amo-wander''' (améby)<br />
<br />
Améba kontroluje senzorický dosah pro přítomnost kterýchkoliv prvoků a následně kontroluje, zda je v senzorickém dosahu větší améba, či vpíjenka. Pokud v dosahu větší konkurent není, améba se zaměří na nejblyžšího prvoka a udělá za ztráty energie přískok. Pokud v senzorickém dosahu ostatní prvoci nejsou, améby vyhledávají organické zbytky obdobně, jako trepky. Pokud ani jedna z výše uvedených situací v daném kroku systému nenastává, améba setrvává v náhodném vrtivém pohybu (náhodně upraví aktuální nasměrování a za úbytku energie udělá přískok).<br />
<br />
===setup procedury===<br />
<br />
<br />
'''setup-pmcs''' (trepky)<br />
<br />
Procedura vygeneruje požadované množství trepek a přidělí každé hodnotu senzorického dosahu, velikost, rychlost energii odpovídající normálnímu rozdělení z uživatelem zadaných hodnot s odchylkou 0.3. Dále procedura faktickou velikost agentů podle magnitude, nastaví jejich tvar a barvu a náhodně je rozmístí na plátno.<br />
<br />
'''setup-dids''' (vpíjenky) a '''setup-amos''' (améby) fungují obdobně.<br />
<br />
==Uživatelské Rozhraní a ovládání==<br />
<br />
[[File:louzescreen.png|thumb|center]]<br />
<br />
Parametry vlastností množství, senzorický dosah, velikost, rychlost a energie se volí pro každou skupinu prvoků před inicializací pomocí tlačítka "Setup".<br />
<br />
Samotná simulace se pak spustí tlačítkem "Go" a automaticky se zastaví potom, co zemřou všechny agenty.<br />
<br />
Rychlost doporučuji pro optimální pozorování dění v louži nastavit na 1/3 - 1/2 normální rychlosti.<br />
<br />
Pro sledování důležitých parametrů v průběhu simulace je v okně programu graf vykreslující průběhy populací jednotlivých druhů prvoků a dále graf vykreslující průběhy celkových objemů populací, jako sumy velikostí agentů. Tyto celkové velikosti jsem si zvolil, jako hlavní ukazatele úspěšnosti pro posouzení stanovených cílů.<br />
<br />
=Hodnocení=<br />
<br />
Z opakovaných simulací pro zvolené výchozí parametry (viz. obrázek) a pro následně upravovaná výchozí nastavení, jsou patrné trendy prudšího úbytku jedinců u populací améby a vpíjenky ze začátku simulace. Populace trepek klesá nejpomaleji, ale kvůli omezením rychlosti plynoucím z velikosti, krátce za polovinou simulace, okolo 450. kroku prudce klesá a zpravidla zaniká. Populace améby a vpíjenky přežívá ke konci o několika superjedincích, kteří rovněž zaniknou kvůli nedostatku potravy. Co se týče klíčových parametrů, nejzázásadnější roli hraje podle podle provedených simulací percepce, na jejíž úpravy (zejména u trepky) mají největší citlivost výsledky běhů simulace. Přírůstky výchozí síly se naopak neukázaly jako moc výhodné. Klíčový význam pro simulaci mají počáteční nastavení přírůstku řas a úbytku energie. <br />
<br />
[[File:setuplouze.png|thumb|center]]<br />
<br />
= Závěr a diskuze možných pokračování=<br />
<br />
Prospěšným a nejvíce se nabízejícím rozšířením modelu by bylo přidání rozmnožování prvoků s vysokými hodnotami velikosti (magnitude) ve formě dělení. Potomek by se při dosažení stanovené hodnoty vydělil z mateřského agenta a přejal by část jeho magnitude a ostatní vlastnosti. Po takové úpravě by bylo možno hledat optimální nastavení modelu a zkoumat možnosti dosažení různých rovnovážných stavů cyklického průběhu. Tím by se zajistilo i žádoucí omezení parametru velikosti, které by bylo další vhodnou upravou, pro model s delším stabilním průběhem. <br />
Použitý systém přískoků do jisté míry dobře napodobuje pohyb skutečných prvoků a poskytuje přínosné zjednodušení, ale při potřebě modelovat větší rozdíly v parametrech rychlosti by bylo vhodnější jej upravit. Velikost prvoků je v rámci simulace graficky znázorněna, ale narostlí prvoci, stále zabírají místo jednoho políčka. Toto schematické znázornění by bylo možno upravit a nechat větší prvoky zabírat více políček prostoru na plátnu louže.<br />
<br />
Dalším rozšířením by mohlo být přenesení do třetího rozměru, které by, pokud by se podařilo zachovat přehlednost poskytnulo věrnější demonstraci skutečnosti.<br />
<br />
= Simulace ke stažení=<br />
<br />
[[File:xnusf00louze.nlogo]]</div>FrantišekN