Tutoriál 3: Procedury Prostředí NetLogo ver. 3.1.4
Transkript
Martina Husáková Tutoriál 3: Procedury Prostředí NetLogo ver. 3.1.4 Znalostní technologie III materiál pro podporu studia Martina Husáková OBSAH AGENTY A PROCEDURY .................................................................................................... 3 TVORBA TLAČÍTKA SETUP............................................................................................... 3 TVORBA TLAČÍTKA GO ..................................................................................................... 5 EXPERIMENTOVÁNÍ S PŘÍKAZY..................................................................................... 7 POLE A PROMĚNNÉ............................................................................................................. 8 „ŽELVÍ PROMĚNNÉ“ ........................................................................................................... 9 DISPLEJE............................................................................................................................... 10 PŘEPÍNAČE A TITULKY ................................................................................................... 11 PÍŠEME DALŠÍ PROCEDURY........................................................................................... 13 NETLOGO A GRAFY........................................................................................................... 15 GLOBÁLNÍ PROMĚNNÉ .................................................................................................... 17 VÍCE DETAILŮ..................................................................................................................... 18 CO DÁL? ................................................................................................................................ 19 PŘÍLOHA: CELÝ PROGRAM............................................................................................ 20 ZDROJ .................................................................................................................................... 22 2 Martina Husáková Agenty a procedury V druhém tutoriálu jsme se seznámili s možností zadávat příkazy agentům pomocí centra příkazů (Command Center) a získávat o nich informace obsažené v monitorech agentů (Turtle Monitor a Patch Monitor). Nyní můžeme přejít k samotnému srdci modelování v NetLogu - k záložce Procedures. Již jsme se seznámili se základními typy agentů, kterým jsme zadávali příkazy v NetLogu: • Pole (angl. Patches); • Želvy (angl. Turtles); • Pozorovatel (angl. Observer). Pole jsou nepohyblivým prvkem modelu a organizovány do mřížky. Želvičky jsou aktivními prvky modelu, které se pohybují na políčkách. Pozorovatel vidí vše, co se kde ve světě NetLoga šustne a realizuje takové akce, které ani želva nebo pole udělat nemohou. Všechny tyto typy agentů mohou spouštět příkazy i procedury. Procedura v NetLogu kombinuje příkazy do jednoho celku (vlastně příkazu), který sami vytvoříme. Nyní se naučíme psát procedury, které zajistí pohyb želv, jejich stravování, reprodukci a úhyn. Také se seznámíme s tvorbou a využíváním displejů (Monitors), posuvníků (Sliders) a grafů (Plots). Vytvoříme jednoduchý ekosystém, který se příliš neliší od modelu Wolf Sheep Predation, který známe z prvního tutoriálu. Tvorba tlačítka SETUP Pro založení nového modelu vybereme položku „New“ z menu „File“. Pak vytvoříme nové tlačítko setup a to následovně: • Klikněte na ikonu „Button“ v panelu nástrojů v záložce Interface; • Klikněte pak kamkoliv do plochy záložky Interface; • Otevře se vám dialogové okno pro editaci tlačítka. Napište „setup“ do okna s názvem Commands; • Stiskněte tlačítko OK a dialogové okno zmizí. Nyní jsme vytvořili tlačítko setup. Stiskem tlačítka setup spustíme proceduru, která se bude nazývat setup. Procedura je sekvence příkazů NetLoga, které přiřazujeme název. Ještě jsme ale proceduru setup nedefinovali, jen jsme vytvořili tlačítko setup. Protože tlačítko odkazuje na proceduru, která ještě neexistuje, tlačítko je červené: 3 Martina Husáková Když budete chtít vidět chybové hlášení skryté za zčervenáním tlačítka, klikněte na tlačítko setup. Nyní vytvoříme proceduru setup, takže pak už toto tlačítko nebude mít červenou barvu. Přepněte se do záložky Procedures a napište tyto příkazy: to setup clear−all create−turtles 100 ask turtles [ setxy random−xcor random−ycor ] end Okno s procedurou vypadá následovně: Každá procedura začíná slovem „to“ a končí slovem „end“. Podívejme se na význam jednotlivých řádků procedury „to setup“; • To setup je začátkem definice procedury pojmenované jako „setup“; • Clear-all převádí modelovaný svět do inicializačního stavu (začínáme s čistým plátnem). Všechna pole zčernají a želvy zmizí; • Create-turtles 100: vytvoření 100 želviček, které se objeví v centru modelovaného světa, resp. na souřadnicích (0;0); • Ask turtles [ … ] sdělí každé želvě, aby provedla kód, který je uveden uvnitř hranatých závorek (ask je příkaz, který spouští pozorovatel pro ovlivnění chování želviček); • Setxy random-xcor random-ycor je příkaz, který používá tzv. „reportér“. Reportér, oproti příkazu, vrací určitou hodnotu. Nejprve každá želva spustí reportéra randomxcor, který vrátí náhodné číslo (vlastně pseudonáhodné) z rozsahu, které je dané souřadnicemi pozice želvy (osa x). Pak každá želva spustí reportér random-ycor. 4 Martina Husáková • Nakonec každá želva spustí příkaz setxy a náhodně vygenerovaná čísla budou pro něho vstupními hodnotami; End ukončuje definici procedury „setup“. Po napsání procedury se přepněte do záložky Interface a stiskněte tlačítko setup, které jste předtím vytvořili. Uvidíte želvičky roztroušené ve vašem modelovaném světě: Stiskněte několikrát tlačítko setup a sledujte, jak se mění pozice želv při každém stisknutí. Tvorba tlačítka GO Nyní vytvoříme tlačítko „go“. Realizujte ty samé kroky, které jste použili při zakládání tlačítka setup, přitom: • pojmenujte proceduru ne setup, ale go; • zaškrtněte pole s názvem „forever“ v editačním okně tlačítka. 5 Martina Husáková Zaškrtnutím políčka „forever“ zajistíme neustálé spouštění procedury „to go“. Pak přidáme programový kód k tlačítku „go“ v záložce Procedures: to go move−turtles end Co ale znamená „move-turtles“? Je to primitivum (vestavěné v NetLogu) jako např. clear-all? Ne, není. Jedná se o proceduru, kterou vytvoříme sami. Dosud jsme vytvořili jen dvě procedury – setup a go. Vytvořte tedy novou proceduru „move-turtles“: to move−turtles ask turtles [ right random 360 forward 1 ] end Popis jednotlivých příkazů v proceduře „to go“ je následující: • ask turtles [ … ]: přikazujeme želvám prostřednictvím pozorovatele, aby provedly akce uvedené v hranatých závorkách; • right random 360 je dalším příkazem, který využívá reportéra. Nejprve každá želva od reportéra random získá náhodnou hodnotu v rozmezí 0 – 359. Pak se každá želva otočí vpravo o takový úhel, který je daný náhodně vygenerovaným číslem; • forward 1 způsobí posun želvičky o jeden krok dopředu. Proč jsme právě vytvořený kód nenapsali přímo do procedury „to go“? To je samozřejmě možné, ale snažíme se o to, aby celý programový kód modelu byl snadný k pochopení a jednodušeji jsme se v něm orientovali. Je dobré mít pro každou určitou akci, kterou chceme v modelu zachytit (např. vykreslení grafu, pohyb želv, inicializace modelu, …), určitou proceduru s jednoznačným názvem. Není příliš vhodné nahustit většinu kódu do několika málo procedur. Nevyznali bychom se v tom. Samozřejmě, že také záleží na složitosti modelované úlohy. Tlačítko go je tzv. „forever tlačítko“, tj. nekonečné tlačítko. Jeho úkolem je opakovat programový kód do doby jeho opětovného stisknutí. Zkuste nyní stisknout tlačítko setup a pak tlačítko go. Pak opět stiskněte tlačítko go a všimněte si, jak „nekonečné tlačítko“ funguje. Je zajímavé, že když se jedna želvička objeví na hraně modelovaného světa a udělá další krok, objeví se na protější straně modelovaného prostoru. Je ovšem možné želvičkám zabránit, aby se na protějších stranách při přesahu hranic modelu objevovaly. Klíčem k tomu je editační okno modelovaného světa, viz. obrázek níže (tlačítko Edit a možnosti World wraps horizontally a World wraps vertically). Zkuste si změnit tato nastavení a pozorujte pohyb želviček ve vašem modelu. 6 Martina Husáková Experimentování s příkazy Zadejte do centra příkazů (Command Center): • turtles> set color red s následným stiskem Enteru nebo; • setup nebo; • go nebo; • move-turtles. Jedná se o jiný způsob spouštění příkazů nebo procedur než s pomocí tlačítek. V případě centra příkazů musíte nejprve vybrat typ agenta, který má příkaz nebo proceduru vykonat. Zkuste pak ještě: • turtles> pen-down nebo; • změňte proceduru move-turtles tak, že zadáte místo „right random 360“ – „right random 45“. Poznámka: pro zajištění pozornějšího sledování výstupů vámi napsaných procedur doporučuji si čas modelu zpomalit pomocí posuvníku, viz. obrázek níže. 7 Martina Husáková Pole a proměnné Nyní máme v našem modelu vytvořeno 100 želviček, které neví nic o světě kolem sebe jen se pohybují. Vytvoříme nové procedury, které budou nastavovat vlastnosti polí a želv. Vraťte se k proceduře setup a přepište ji následujícím způsobem: to setup clear−all setup−patches setup−turtles end Máme zde dvě nové procedury „setup-patches“ a „setup-turtles“. Pro definování procedury „setup-patches“ uděláme následující: to setup−patches ask patches [ set pcolor green ] end Procedura „setup-patches“ nastavuje barvu každého pole na zelenou. Jen připomeňme, že barva želv se nastavuje pomocí proměnné „color“ a barva polí pomocí „pcolor“. Teď nastavíme proceduru „setup-turtles“, která se neodlišuje od původně nastavené procedury „setup“: to setup−turtles create−turtles 100 ask turtles [ setxy random−xcor random−ycor ] end Přepněte se zpátky do záložky Interface a stiskněte tlačítko setup. Jak vidíte, objeví se zelené pozadí pro náš svět. 8 Martina Husáková „Želví proměnné“ Zatím máme vytvořeno několik desítek želv, které ale nic nedělají. Dodáme jim tedy možnost interagovat s okolím (resp. s ostatními želvami a poli). Zajistíme, aby želvy jedly trávu (zelená políčka), rozmnožovaly se a … tak jak to ve světě už chodí, i odcházely na onen svět. Potom, co želvičky zelenou trávu sní, tráva se znovu objeví. Budeme proto potřebovat zajistit kontrolu reprodukce, úmrtí želv a jejich energie (energie sama vlastně ovlivňuje výkonnost živého organismu). Vytvoříme tedy novou tzv. „želví proměnnou“. Již jste poznali vestavěnou proměnnou, kterou používají výhradně agenty typu želva tj. proměnnou color. Pro vytvoření nové proměnné, kterou bude používat jen a jen agent typu želva, využijeme deklaraci „turtles-own“ s názvem nové proměnné „energy“. Tuto proměnnou umístíme před všechny procedury, které jsme dosud vytvořili: turtles−own [energy] Teď využijeme tuto proměnnou a dovolíme želvám jíst. Přepněte se do záložky Procedures a přepište proceduru go následovně: to go move−turtles eat−grass end Procedura eat-grass bude mít následující kód: to eat−grass ask turtles [ if pcolor = green [ set pcolor black set energy (energy + 10) ] ] end Jak vidíte, v proceduře „eat-grass“ jsme poprvé použili příkaz „if“. Podívejme se na něj blíže. Každá želva, která spustí příkazy uvedené v hranatých závorkách, porovnává barvu, která je obsažena v proměnné pcolor, se zelenou barvou. (Želva má přímý přístup k proměnné pole pcolor na které právě stojí). Jestliže je barva pole zelená, výsledkem porovnání je logická hodnota true a jedině v tomto případě želva realizuje příkazy uvedené v hranatých závorkách (jinak je přeskočí). Takže jestliže je želva na zeleném poli, pak je barva tohoto pole změněna na černou (najedla se) a dojde k zvýšení její energie o deset jednotek výše. Samozřejmě, i při pohybu želvy se mění energie (energie ubývá). Proto upravíme proceduru „move-turtles“ tak, aby bylo zajištěno, že co krok želvy to ztráta energie o jednu jednotku: 9 Martina Husáková to move−turtles ask turtles [ right random 360 forward 1 set energy energy − 1 ] end Přepněte se na záložku Interface, stiskněte tlačítko setup a pak go. Uvidíte změnu barvy políčka ze zelené na černou, jakmile po nich želvičky přejdou. Displeje Nyní vytvoříme dva displeje (Monitor) v záložce Interface. Postup jejich tvorby je stejný jako v případě tlačítek. Po založení prvního z nich se Vám otevře editační okno displeje, kde do části s názvem Reporter napište: „count turtles“, viz. obrázek níže. Pak stiskněte OK a editační okno se zavře. 10 Martina Husáková „Turtles“ v okně reportéra je tzv. množinou agentů (agentset). Množina je v tomto případě tvořena všemi želvami, které jsme vytvořili. „Count“ nám říká, kolik agentů je v množině. Druhý monitor vytvoříme podobným způsobem. Opět se nám objeví editační okno. Do okna Reporter zadejte: • count patches with [pcolor = green]; • do pole „Display name“ zadejte green patches; • stiskněte tlačítko OK a editační okno se zavře. Opět jsme zde použili „count“ pro zjištění kolik agentů je v množině. „Patches“ je množina všech polí. Chceme přitom vědět, kolik agentů z množiny má zelenou barvu. Vytvoří se menší množina splňující podmínku uvedenou v hranatých závorkách (pcolor = green). Nyní máme dva displeje, které nám budou oznamovat, kolik želv a zelených polí máme aktuálně k dispozici. Po spuštění modelu bude docházet automaticky ke změnám v hodnotách uvedených v monitorech, v našem případě se bude zatím měnit jen počet zelených polí. Přepínače a titulky Jak již bylo naznačeno, želvy získávají a ztrácejí energii. Je možné sledovat stav energie želv pomocí nástroje Turtle Monitor, když model běží. Bylo by ale užitečné mít před očima stav energie všech želv neustále. Proto založíme přepínač (Switch), který bude zobrazovat nebo nezobrazovat stav energie všech želv. • • • Vytvořte přepínač kliknutím na ikonu přepínače na panelu nástrojů záložky Interface; Objeví se dialogové okno pro zadání názvu globální proměnné; Do dialogového okna zadejte: show-energy?, přitom nezapomeňte uvést otazník v názvu proměnné. 11 Martina Husáková Teď se vraťte k proceduře go s použitím záložky Procedures a přepište proceduru „eatgrass“ následovně: to eat−grass ask turtles [ if pcolor = green [ set pcolor black set energy (energy + 10) ] ifelse show−energy? [ set label energy ] [ set label "" ] ] end Procedura „eat-grass“ v sobě obsahuje nový příkaz „ifelse“. Každá želva při spuštění tohoto příkazu zkontroluje hodnotu globální proměnné „show-energy?“ (tato hodnota je získána z nastavení přepínače ze záložky Interface). Když je přepínač zapnutý (poloha „On“), výsledkem je hodnota true a želvička spustí příkazy uvedené v hranatých závorkách. V našem případě se přiřadí hodnota energie do titulku ke každé želvě. Jestliže je přepínač vypnutý (poloha „Off“), pak želvička spustí kód uvedený v druhých hranatých závorkách. V našem případě nezobrazí žádný titulek u želv. Poznámka: V NetLogu je část textu nazývána „string“ – řetězec. Řetězec je sekvence písmen nebo jiných znaků zapsaných do dvojitých uvozovek. Jestliže zapíšeme uvozovky takto: “ ”, jedná se o prázdný řetězec. Jestliže je titulek u želvy prázdným řetězcem, žádný text není u ní zobrazen. 12 Martina Husáková Zkuste si spustit model a nastavovat přepínač do různých poloh. Když je přepínač zapnutý, uvidíte energetickou hodnotu každé želvy, která se zvýší, když želva bude jíst trávu. Také uvidíte pokles energie, když se želva pohybuje. Píšeme další procedury Nyní zajistíme, aby se želvy rozmnožovaly, hynuly a tráva znovu rostla. Pro každou tuto aktivitu vytvoříme novou proceduru. Jděte na záložku Procedures a přepište proceduru go: to go move−turtles eat−grass reproduce check−death regrow−grass end Jednotlivé procedury mají následující kód: to reproduce ask turtles [ if energy > 50 [ set energy energy − 50 hatch 1 [ set energy 50 ] ] ] end 13 Martina Husáková to check−death ask turtles [ if energy <= 0 [ die ] ] end to regrow−grass ask patches [ if random 100 < 3 [ set pcolor green ] ] end Každá z těchto procedur používá příkaz „if“. Každá želva, která spustí proceduru „reproduce“, provede kontrolu proměnné „energy“. Jestliže je její hodnota větší než 50, pak každá želva spustí příkazy uvedené v hranatých závorkách. V našem případě sníží energii želvy o 50 jednotek. Následně použije příkaz „hatch“, který má tuto syntaxi: „hatch number [ commands ]“. Příkaz vytvoří tolik nových želv, kolik je hodnota number. Želvy jsou přitom kopiemi svých rodičů. V hranatých závorkách se uvádějí příkazy, které mají nové želvy provést. V našem případě po nových želvách požadujeme, aby nastavily svoji energii na hodnotu 50. Rodí se tedy s určitou dávkou energie. Když každá želva spustí proceduru „check-death“, pak dochází ke kontrole stavu proměnné energy. Jestliže je výsledek porovnání proměnné energy s hodnotou rovnou nebo menší než 0 true, pak želva umře, resp. využije se primitivum „die“. Jestliže každá želva spustí proceduru „regrow-grass“, pak se kontroluje, jestli náhodně vygenerovaná hodnota v rozsahu 0 – 99 je menší než 3. Jestliže ano, pak je barva pole nastavena na zelenou. Růst trávy je zcela náhodnou záležitostí. Přepněte se do záložky Interface, stiskněte tlačítko setup a go a sledujte model. Uvidíte zajímavé chování modelu. Některé želvy umírají v důsledku ztráty energie, dochází ke vzniku nových želv a růstu trávy. Když budete sledovat displeje ve vašem modelu, uvidíte, jak počet želv (count turtles) a zelených polí (green patches) kolísá. Jze kolísání nějak předpovědět? Je vztah mezi těmito proměnnými (počty želv a zelených polí)? Bylo by dobré mít jednodušší způsob monitoringu změn v chování modelu. NetLogo nám dovoluje vytvářet grafy pro tyto účely. To bude další krok při konstrukci ekosystému. 14 Martina Husáková NetLogo a grafy Požadujeme vytvořit graf. Přejdeme tedy např. nejprve do záložky Procedures, kde změníme proceduru „setup“ a přidáme novou proceduru „do-plots“: to setup clear−all setup−patches setup−turtles do−plots end Dále pozměníme proceduru „go“ kam přidáme také proceduru „do-plots“: to go move−turtles eat−grass reproduce check−death regrow−grass do−plots end Nyní definujeme samotnou proceduru „do-plots“. Je přitom důležité si uvědomit, co budeme chtít na grafu zachytit. V našem případě se bude jednat o počty želv a zelených polí, které se budou v čase vyvíjet. Každý krok vývoje bude v grafu zachycen. to do−plots set−current−plot "Totals" set−current−plot−pen "turtles" plot count turtles set−current−plot−pen "grass" plot count patches with [pcolor = green] end Předtím než budeme moci graf využívat, je třeba udělat dvě základní věci. Je třeba specifikovat, jaký graf s jakým názvem budeme používat a jaké pero pro vykreslování využijeme. Pro specifikaci grafu slouží příkaz: set−current−plot "Totals", kterým graf zakládáme s určitým jménem (v našem případě „Totals“). Příkaz „plot“ vykresluje počet želviček s jedním druhem pera a počty zelených polí druhým perem. Každé pero má své jméno a zakládá se následovně: • Pro želvy: set−current−plot−pen "turtles"; • Pro pole: set−current−plot−pen "grass". 15 Martina Husáková Jak graf vytvořit? Využijte ikonu „Plot“ v záložce Interface. Postup jeho vytvoření je obdobný jako u ovládacích prvků, o kterých jsme se již zmiňovali. Objeví se vám editační okno, kde do pole „Name“ zadáte název grafu „Totals“. Pojmenujte osu X jako „time“ a osu Y jako „total“. Dále založíme dvě pera, která nám budou vykreslovat počty želv a zelených polí. Klikněte proto na tlačítko „Create“ v editačním okně grafu. Objeví se vám okno, kam zadáte název pera. První pero pojmenujte jako „turtles“ a druhé jako „grass“. Abyste dokázali rozeznat obě pera, přidělte jim barvu v sekci Color editačního okna grafu. Všimněte si, že můžete nastavovat maximální a minimální hodnotu pro osu X a Y. Je vhodné 16 Martina Husáková mít zaškrtnutou položku Autoplot?. Tato volba zajišťuje přizpůsobení grafu při překročení minimálních a maximálních hodnot na osách. Znovu spusťte model a sledujte, jak se mění hodnoty na grafu. Jestliže jste zapomněli, která barva pera co zobrazuje, pak klikněte na titulek „Pens“ na vytvořeném grafu a objeví se vám legenda, která toto popisuje. Globální proměnné Někdy je vhodné zastavit model po určitém počtu kroků. Jak na to? Zavedeme globální proměnnou s názvem „ticks“, kterou umístíme nad definici „želví proměnné“: globals [ticks] turtles−own [energy] Pak změníme proceduru setup tak, že uvedeme inicializační hodnotu počtu cyklů příkazem „set ticks 0“: to setup clear−all set ticks 0 setup−patches setup−turtles do−plots end Nakonec pozměníme i proceduru go: to go if ticks = 500 [ stop ] move−turtles eat−grass reproduce check−death regrow−grass do−plots set ticks (ticks + 1) end 17 Martina Husáková Nyní spusťte model. Výsledkem výše upravených procedur je, že model, i přes existenci tlačítka „forever“, neběží neustále. Model se zastaví po pěti stech cyklech. Jak přidáte displej do modelu, který vám bude oznamovat počet již proběhnutých cyklů? Jak byste změnili proceduru, aby se model zastavil po stech cyklech? Více detailů Podívejme se nyní, jak využít další komponentu prostředí NetLogo, tzv. posuvník (Slider). Nebudeme totiž chtít mít v modelu pevně stanovený počet želv, v našem případě 100. Budeme chtít jednodušeji měnit počty želv, aniž bychom museli pokaždé měnit jejich počet ve zdrojovém kódu modelu. Tuto komponentu založíme stejně jako ty předchozí. Klikneme na ikonu posuvníku – Slider a otevře se nám jeho editační okno. Zde zadáme název globální proměnné, např. „number“. Tuto proměnnou použijeme v proceduře „setup-turtles“, namísto zadaného počtu želv 100, viz. níže: to setup−turtles create−turtles number ask turtles [ setxy random−xcor random−ycor ] end Zkuste si měnit nastavení hodnot na posuvníku pro zjištění, jaký vliv mají různé hodnoty na model. Teď vytvoříme dva posuvníky: „energy-from-grass“ a „birth-energy“. Prvním budeme regulovat energii želv, která se mění tak, jak želvy jí (energie se zvyšuje). Druhým budeme regulovat energii želv, která se mění tak, jak se želvy rozmnožují (energie se snižuje). 18 Martina Husáková Upravíme tedy proceduru „eat-grass“ a „reproduce“: to eat−grass ask turtles [ if pcolor = green [ set pcolor black set energy (energy + energy−from−grass) ] ifelse show−energy? [ set label energy ] [ set label "" ] ] end to reproduce ask turtles [ if energy > birth−energy [ set energy energy − birth−energy hatch 1 [ set energy birth−energy ] ] ] end Jaké posuvníky byste ještě mohli do modelu přidat? Co dál? Nyní máme program kompletní. Vytvořili jsme model ekosystému, ve kterém tráva roste a ubývá, želvičky, jakožto aktivní prvky ekosystému, se pohybují, rozmnožují, jí a hynou. Seznámili jsme se s komponentami modelu: tlačítky, posuvníky, přepínači, displeji a grafy. Dá se říci, že jimi vytváříme grafické rozhraní modelu, které přímo souvisí s kódem, který je zapsán v záložce Procedures. Můžete samozřejmě dál experimentovat s tímto modelem nebo ho rozšiřovat. Ekosystém, který jsme zde vytvořili je velmi podobný modelu Wolf Sheep Predation, který byl představen v prvním tutoriálu. Můžete si ho otevřít a třeba upravit na základě informací zjištěných z tohoto tutoriálu. 19 Martina Husáková Příloha: Celý program globals [ticks] ;; for keeping track of how many times the ;; go procedure has been run turtles−own [energy] ;; for keeping track of when the turtle is ready ;; to reproduce and when it will die to setup clear−all set ticks 0 ;; resets the counter to zero when setup is pressed setup−patches setup−turtles do−plots end to setup−patches ask patches [ set pcolor green ] end to setup−turtles create−turtles number ;; uses the value of the number slider to create turtles ask turtles [ setxy random−xcor random−ycor ] end to go if ticks = 500 [ stop ] ;; only run these procedures if ticks is less than 500 move−turtles eat−grass reproduce check−death regrow−grass do−plots set ticks (ticks + 1) ;; increase the tick counter by 1 each time through end to move−turtles ask turtles [ set heading random 360 forward 1 set energy energy − 1 ;; when the turtle moves it looses one unit of energy ] end 20 Martina Husáková to eat−grass ask turtles [ if pcolor = green [ set pcolor black ;; the value of energy−from−grass slider is added to energy set energy (energy + energy−from−grass) ] ifelse show−energy? [ set label energy ] ;; the label is set to be the value of the energy [ set label "" ] ;; the label is set to an empty text value ] end to reproduce ask turtles [ if energy > birth−energy [ set energy energy − birth−energy ;; take away birth−energy to give birth hatch 1 [ set energy birth−energy ] ;; give this birth−energy to the offspring ] ] end to check−death ask turtles [ if energy <= 0 [ die ] ;; removes the turtle if it has no energy left ] end to regrow−grass ask patches [ ;; 3 out of 100 times, the patch color is set to green if random 100 < 3 [ set pcolor green ] ] end to do−plots set−current−plot "Totals" ;; which plot we want to use next set−current−plot−pen "turtles" ;; which pen we want to use next plot count turtles ;; what will be plotted by the current pen set−current−plot−pen "grass" ;; which pen we want to use next plot count patches with [pcolor = green] ;; what will be plotted by the current pen end 21 Martina Husáková CHYBA: v originálním tutoriálu je požadavek (str. 64), aby se model zastavil při pěti stech cyklech, ale dle programového kódu se zastaví při 501 a více cyklech: to go if ticks > 500 [ stop ] move−turtles eat−grass reproduce check−death Je to opraveno na podmínku: if ticks = 500. Zdroj NetLogo 3.1.4. User Manual. Přístup z internetu: URL: http://ccl.northwestern.edu/netlogo/docs/NetLogo%20User%20Manual.pdf 22
Podobné dokumenty
Tutorial 3: Procedury
Příkazy pište do příkazového panelu (podobně jako turtles> set color red) nebo je přidejte do procedur setup (PŘIPRAV), go (START) a move-turtles. Všimněte si, že když zadáváte příkazy v příkazovém...
VíceSlovníček NetLogo
Vrací pravdivou hodnotu, pokud daná množina agentů není prázdná – v případě, že ano, vrací nepravdivou hodnotu. Reportér je ekvivalentní k count agentset > 0, ale efektivnější (a pravděpodobně čite...
VícePrůvodce rozhraním
Když měníte nastavení, všimněte si, že provedené změny se projeví v náhledu (po pravé straně panelu) ukazujícím výchozí bod a hranice. Šířka a výška světa jsou zobrazeny pod náhledem. Pod náhledem ...
VíceČasto kladené dotazy
I když tato instalace váš problém vyřeší, napište nám na [email protected], abychom zjistili podrobnosti o vašem nastavení. Tuto chybu chceme v budoucnu opravit, ale potřebujeme co nejvíce
VíceUživatelská příručka v češtině pro použití na Odorik.cz
Přepojení naslepo i asistované přepojení má totiž společný postup a liší se jen tím, v kterém okamžiku zavěsíme. Postup je zpočátku stejný jako u přepojení naslepo. (viz výše) Pokud zavěsíme již bě...
VíceTutorial 1 - Robotomie.cz
maximální hodnotu 250. Model může být spuštěn s nula ovcemi nebo může běžet s dvě stě padesáti ovcemi nebo jakýmkoliv množstvím mezi těmito hodnotami. Vyzkoušejte to a uvidíte, co se stane. Při pos...
VícePlavba, jež přepíše učebnice
Celý let potrvá zhruba půl hodiny, během níž se dvoučlenná posádka na čtyři minuty ocitne ve stavu beztíže. Jsou tu i další „ale“: let se společností XCOR si může koupit kdokoliv za sto tisíc dolar...
VíceCzechspace 08 ke stažení
PECS, podepsaná rovněž oficiálně Ministrem školství v listopadu 2004. Byly v ní vyjmenovány první projekty s českými pracovišti zodpovědnými za jejich řešení. Novým rysem v programu PECS bylo to, ž...
Více