<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.simulace.info/index.php?action=history&amp;feed=atom&amp;title=LouzePrvoku%28NetLogo%29</id>
	<title>LouzePrvoku(NetLogo) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.simulace.info/index.php?action=history&amp;feed=atom&amp;title=LouzePrvoku%28NetLogo%29"/>
	<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=LouzePrvoku(NetLogo)&amp;action=history"/>
	<updated>2026-07-27T09:44:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://www.simulace.info/index.php?title=LouzePrvoku(NetLogo)&amp;diff=13723&amp;oldid=prev</id>
		<title>FrantišekN: Created page with &quot; = 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:'''...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=LouzePrvoku(NetLogo)&amp;diff=13723&amp;oldid=prev"/>
		<updated>2017-06-11T21:56:27Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; = Zadání = &amp;#039;&amp;#039;&amp;#039;Název simulace:&amp;#039;&amp;#039;&amp;#039; Louže prvoků  &amp;#039;&amp;#039;&amp;#039;Předmět:&amp;#039;&amp;#039;&amp;#039; 4IT495 Simulace systémů (LS 2016/2017)  &amp;#039;&amp;#039;&amp;#039;Autor:&amp;#039;&amp;#039;&amp;#039; Bc. František Nushart, xnusf00  &amp;#039;&amp;#039;&amp;#039;Typ modelu:&amp;#039;&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Zadání =&lt;br /&gt;
'''Název simulace:''' Louže prvoků&lt;br /&gt;
&lt;br /&gt;
'''Předmět:''' 4IT495 Simulace systémů (LS 2016/2017)&lt;br /&gt;
&lt;br /&gt;
'''Autor:''' Bc. František Nushart, xnusf00&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu:''' Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj:''' Netlogo 6.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:louzeprvoku.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Definice problému =&lt;br /&gt;
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í.&lt;br /&gt;
&lt;br /&gt;
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ů.&lt;br /&gt;
&lt;br /&gt;
= Metoda =&lt;br /&gt;
Simulace je realizována v prostředí Netlogo z důvodu kladeného důrazu na agentní přístup.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
= Model=&lt;br /&gt;
V tomto oddílu jsou popsány jednotlivé části modelu, jeho inicializace a počáteční nastavení s diskusí.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Agenty ==&lt;br /&gt;
V modelu jsou tři typy agentů představující: &lt;br /&gt;
&lt;br /&gt;
*trepku (Paramecium) [[File:trepka.png]]&lt;br /&gt;
*vpíjenku (Didinium)[[File:vpijenka.png]]&lt;br /&gt;
*amébu (Amoeba)[[File:ameba.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Každý z těchto tří druhů má následující proměnné, které určují počáteční vlastnosti, druhové populace.&lt;br /&gt;
&lt;br /&gt;
*perception - Vyjadřuje senzorický dosah pro detekci kořisti a  lovce. Obor hodnot: &amp;lt; 1.0 ; 5.0 &amp;gt;&lt;br /&gt;
*magnitude - Vyjadřuje velikost a současně sílu jedince. Obor hodnot:  &amp;lt; 1.0 ; 5.0 &amp;gt;&lt;br /&gt;
*speed - Vyjadřuje rychlost jedince. Obor hodnot:  &amp;lt; 1.0 ; 5.0 &amp;gt;&lt;br /&gt;
*energy - Vyjadřuje zásobu surovin potřebných pro život  &amp;lt; 0 ; 200 &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Incializace ==&lt;br /&gt;
&lt;br /&gt;
Základní nastavení simulace před jejím spuštěním:&lt;br /&gt;
&lt;br /&gt;
Je zadáno množství prvoků pro každý druh (Paramecium, Didinium, Amoeba). Obor hodnot: &amp;lt; 0 ; 50 &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pro každý druh jsou dále zadány výchozí hodnoty:&lt;br /&gt;
&lt;br /&gt;
*senzorický dosah (perception)&lt;br /&gt;
*velikost (magnitude)&lt;br /&gt;
*rychlost (speed)&lt;br /&gt;
*energie (energy)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
*Trepka a vpíjenka jsou rychlejší, než amoeba.&lt;br /&gt;
*Trepka a vpíjenka mají lepší senzorický dosah, než amoeba.&lt;br /&gt;
*Amoeba je větší, než trepka a vpíjenka.&lt;br /&gt;
&lt;br /&gt;
Vygenerovaní jedinci mají zadané parametry individuálně upraveny pomocí normálního rozdělení se směrodatnou odchylkou 0.3 pro reprezentaci vnitrodruhové diverzity.&lt;br /&gt;
&lt;br /&gt;
Jedinci jsou následně náhodně rozmístěni na zacyklené plátno představující naší zkoumanou louži.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spuštění==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Použité procedury==&lt;br /&gt;
&lt;br /&gt;
'''decrease-energy''' (všechny druhy)&lt;br /&gt;
&lt;br /&gt;
Úbytek energie v každém kroku v závislosti na velikosti agenta. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''drop'''&lt;br /&gt;
&lt;br /&gt;
Na náhodně zvoleném poli přibydou živiny a pole se zbarví do zelena.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''collect''' (všechny druhy)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''feed''' (améby a vpíjenky)&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
Na plátnos se dále pro přehlednost zobrazí “hrobeček” značící velikost usmrceného agenta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''be-eaten''' (améby a vpíjenky)&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''check-dead''' (všechny druhy)&lt;br /&gt;
&lt;br /&gt;
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”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===wander procedury===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''pmc-wander''' (trepky)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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á &amp;gt; bílá &amp;gt; zelená.&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
'''dids-wander''' (vpíjenky)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Priorita vpíjenky je tedy: lov konkurenční menší vpíjenky &amp;gt; lov trepky &amp;gt; úprk před amébou &amp;gt; náhodný pohyb.&lt;br /&gt;
&lt;br /&gt;
'''amo-wander''' (améby)&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
===setup procedury===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''setup-pmcs''' (trepky)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''setup-dids''' (vpíjenky) a '''setup-amos''' (améby) fungují obdobně.&lt;br /&gt;
&lt;br /&gt;
==Uživatelské Rozhraní a ovládání==&lt;br /&gt;
&lt;br /&gt;
[[File:louzescreen.png|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Parametry vlastností množství, senzorický dosah, velikost, rychlost a energie se volí pro každou skupinu prvoků před inicializací pomocí tlačítka &amp;quot;Setup&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Samotná simulace se pak spustí tlačítkem &amp;quot;Go&amp;quot; a automaticky se zastaví potom, co zemřou všechny agenty.&lt;br /&gt;
&lt;br /&gt;
Rychlost doporučuji pro optimální pozorování dění v louži nastavit na 1/3 - 1/2 normální rychlosti.&lt;br /&gt;
&lt;br /&gt;
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ů.&lt;br /&gt;
&lt;br /&gt;
=Hodnocení=&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
[[File:setuplouze.png|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
= Závěr a diskuze možných pokračování=&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Simulace ke stažení=&lt;br /&gt;
&lt;br /&gt;
[[File:xnusf00louze.nlogo]]&lt;/div&gt;</summary>
		<author><name>FrantišekN</name></author>
		
	</entry>
</feed>