LouzePrvoku(NetLogo)

From Simulace.info
Revision as of 22:56, 11 June 2017 by FrantišekN (talk | contribs) (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:'''...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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: Multiagentní

Modelovací nástroj: Netlogo 6.0


Louzeprvoku.png


Definice problému

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í.

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ů.

Metoda

Simulace je realizována v prostředí Netlogo z důvodu kladeného důrazu na agentní přístup. 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.

Model

V tomto oddílu jsou popsány jednotlivé části modelu, jeho inicializace a počáteční nastavení s diskusí.


Agenty

V modelu jsou tři typy agentů představující:


  • trepku (Paramecium)
Trepka.png
  • vpíjenku (Didinium)Vpijenka.png
  • amébu (Amoeba)Ameba.png


Každý z těchto tří druhů má následující proměnné, které určují počáteční vlastnosti, druhové populace.

  • perception - Vyjadřuje senzorický dosah pro detekci kořisti a lovce. Obor hodnot: < 1.0 ; 5.0 >
  • magnitude - Vyjadřuje velikost a současně sílu jedince. Obor hodnot: < 1.0 ; 5.0 >
  • speed - Vyjadřuje rychlost jedince. Obor hodnot: < 1.0 ; 5.0 >
  • energy - Vyjadřuje zásobu surovin potřebných pro život < 0 ; 200 >


Incializace

Základní nastavení simulace před jejím spuštěním:

Je zadáno množství prvoků pro každý druh (Paramecium, Didinium, Amoeba).
Obor hodnot: < 0 ; 50 >

Pro každý druh jsou dále zadány výchozí hodnoty:

  • senzorický dosah (perception)
  • velikost (magnitude)
  • rychlost (speed)
  • energie (energy)


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:

  • Trepka a vpíjenka jsou rychlejší, než amoeba.
  • Trepka a vpíjenka mají lepší senzorický dosah, než amoeba.
  • Amoeba je větší, než trepka a vpíjenka.

Vygenerovaní jedinci mají zadané parametry individuálně upraveny pomocí normálního rozdělení se směrodatnou odchylkou 0.3 pro reprezentaci vnitrodruhové diverzity.

Jedinci jsou následně náhodně rozmístěni na zacyklené plátno představující naší zkoumanou louži.


Spuštění

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.

Použité procedury

decrease-energy (všechny druhy)

Úbytek energie v každém kroku v závislosti na velikosti agenta.


drop

Na náhodně zvoleném poli přibydou živiny a pole se zbarví do zelena.


collect (všechny druhy)

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.


feed (améby a vpíjenky)

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). Na plátnos se dále pro přehlednost zobrazí “hrobeček” značící velikost usmrceného agenta.


be-eaten (améby a vpíjenky)


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.


check-dead (všechny druhy)

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”.


wander procedury

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.


pmc-wander (trepky)

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. 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á. 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).

dids-wander (vpíjenky)

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. 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).

Priorita vpíjenky je tedy: lov konkurenční menší vpíjenky > lov trepky > úprk před amébou > náhodný pohyb.

amo-wander (améby)

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).

setup procedury

setup-pmcs (trepky)

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.

setup-dids (vpíjenky) a setup-amos (améby) fungují obdobně.

Uživatelské Rozhraní a ovládání

Louzescreen.png

Parametry vlastností množství, senzorický dosah, velikost, rychlost a energie se volí pro každou skupinu prvoků před inicializací pomocí tlačítka "Setup".

Samotná simulace se pak spustí tlačítkem "Go" a automaticky se zastaví potom, co zemřou všechny agenty.

Rychlost doporučuji pro optimální pozorování dění v louži nastavit na 1/3 - 1/2 normální rychlosti.

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ů.

Hodnocení

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.

Setuplouze.png

Závěr a diskuze možných pokračování

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. 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.

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.

Simulace ke stažení

File:Xnusf00louze.nlogo