Difference between revisions of "RybníkPrvoků"
FrantišekN (talk | contribs) |
FrantišekN (talk | contribs) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 31: | Line 31: | ||
V modelu jsou tři typy agentů představující:
| V modelu jsou tři typy agentů představující:
| ||
− | *trepku (Paramecium)
| + | *trepku (Paramecium)
[[File:trepka.png]] |
− | *vpíjenku (Didinium) | + | *vpíjenku (Didinium)[[File:vpijenka.png]] |
− | *amébu (Amoeba) | + | *amébu (Amoeba)[[File:ameba.png]] |
Line 70: | Line 70: | ||
Nastavené vstupní parametry: | Nastavené vstupní parametry: | ||
− | + | == 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ý. Následně agenty vykonají jeden přískok 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. | 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ý. Následně agenty vykonají jeden přískok 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) | '''decrease-energy''' (všechny druhy) | ||
+ | |||
Úbytek energie v každém kroku v závislosti na velikosti agenta. | Úbytek energie v každém kroku v závislosti na velikosti agenta. | ||
+ | |||
'''drop''' | '''drop''' | ||
+ | |||
Na náhodně zvoleném poli přibydou živiny a pole se zbarví do zelena. | Na náhodně zvoleném poli přibydou živiny a pole se zbarví do zelena. | ||
+ | |||
'''collect''' (všechny druhy) | '''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. | 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) | '''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). | 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. | 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. | + | |
+ | '''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) | '''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”. | 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. | 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''' | + | |
+ | '''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. | 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 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 udělá přískok). | + | 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. | ||
− | '''dids | + | '''setup-dids''' (vpíjenky) a '''setup-amos''' (améby) fungují obdobně. |
− |
Latest revision as of 19:39, 11 June 2017
Contents
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
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í:
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.
Nastavené vstupní parametry:
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ý. Následně agenty vykonají jeden přískok 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ě.