Tutoriál 3: Procedury Prostředí NetLogo ver. 3.1.4



Podobné dokumenty
Tutorial 3: Procedury

MS SQL Server 2008 Management Studio Tutoriál

NetLogo Uživatelská příručka

Manuál k programu KaraokeEditor

Návod na práci s katalogem konstrukcí a materiálů Obsah

AUTOMATICKÉ ZÁLOHOVÁNÍ DATABÁZE PRO SQL Express 2005

Nápověda k aplikaci GraphGUI

DUM 06 téma: Tvorba makra pomocí VBA

Lokality a uživatelé

Programování v jazyku LOGO - úvod

Formátování pomocí stylů

Příloha 6. Palety nástrojů

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

Vytvoření a úpravy geologického modelu

Programování v jazyce VISUAL BASIC.NET

Název: VY_32_INOVACE_PG3311 Kamera a její použití, světelné efekty. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max

1. Otevřete dokument, který chcete číst. 2. Na kartě Zobrazení klikněte ve skupině Zobrazení dokumentů na položku Čtení na celé obrazovce.

Grid 2. Krok za krokem. Jednoduchý manuál pro základní úpravy mřížek v programu

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Uživatelský manuál aplikace. Dental MAXweb

Demoprojekt Damocles 2404

Základy HTML. Autor: Palito

FFUK Uživatelský manuál pro administraci webu Obsah

Tvorba aplikace pro porovnání map

Návod pro SMS Operátor off-line klient

Prohlížení a editace externích předmětů

Historie. Mapový podklad. Aktuální stav jednotek

UniLog-D. v1.01 návod k obsluze software. Strana 1

Práce s programem MPVaK

Připojení ke vzdálené aplikaci Target 2100

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Vytvoření uživatelské šablony

MS OFFICE, POWERPOINT

Univerzální rezervační systém. Uživatelská příručka

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ

MIDAM Verze 1.1. Hlavní okno :

Návod pro řešení typických problémů se stabilitou AMČR

Manuál k ovládání aplikace INFOwin.

POZOR!!! INSTALACE POD WINDOWS 200 / XP / VISTA PROBÍHÁ VE DVOU ETAPÁCH A JE NUTNÉ DOKON

NetLogo Uživatelská příručka. Tutorial 1: Modely. Ukázkový model: Vlci a ovce (Wolf Sheep Predation)

Dotyková obrázovká v prográmu TRIFID

Cvičení 6 PARAMETRICKÉ 3D MODELOVÁNÍ TVORBA VÝKRESU OBROBKU Inventor Professional 2012

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor )

Coordinate System Editor Software

PRÁCE S APLIKACÍ Evidence městských knih

Dotykova obrazovka v programu TRIFID

UniLog-L. v0.81 návod k obsluze software. Strana 1

Vytvoření tiskové sestavy kalibrace

Tabulkový kalkulátor

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

1. Obsah. 1. Obsah Začínáme Práce s mapou Kniha jízd Denní statistika Seznam řidičů...9

Obsah Přehled existujících a evidence nových klientů... 3 Přehled foto-záznamů... 4 Nahrávání foto-záznamů... 6 Analýza foto-záznamů...

Postupy práce se šablonami IS MPP

4 Přesné modelování. Modelování pomocí souřadnic. Jednotky a tolerance nastavte před začátkem modelování.

Ovládání TV platformy a funkce Chytrá TV. RETE tv

Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox

Jazz Server osobní nastavení uživatele

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

ÚLOHA 6. Úloha 6: Stěžejní body tohoto příkladu:

1. Paleta History (Historie)

Jídelníčky WEB NÁVOD

Tvorba prezentaci v Autodesk Inventoru 10

OFF - LINE. PRO ZAČÁTEČNÍKY Zdroje textů a obrázků

Programujeme v softwaru Statistica - příklady

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor )

NÁVOD KE SLUŽBĚ IPTV

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

NFZ22E-20. Panel Dokumenty

1 Instalace HASP Licence Manger pod Windows 7

Google Apps. dokumenty 4. verze 2012

Programovací software Oblast režimů Oblast nástrojů Složka aplikací pro různé funkce: Oblast tlačítek Tlačítko Loading (Načítání)

Informatika 8. třída/6

Uživatelská příručka. Parcel. Internetová aplikace pro sběr dat o cenách za dodávání balíků. Příručka pro poskytovatele služeb dodávání balíků (PDSP)

Individuální nastavení počítače

První kroky s METEL IEC IDE

Správa obsahu webové platformy

Vizualizace a evidence výroby a prostojů

Svolávací systém Uživatelský manuál

Studijní skupiny. 1. Spuštění modulu Studijní skupiny

Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...

V této aplikaci si ukážeme jakým způsobem zobrazovat čas a datum. Pro ovládání zobrazení času a datumu se naučíme využívat nabídku.

Soukromá střední odborná škola Frýdek-Místek, s.r.o. VY_32_INOVACE_49_IVT_MSOFFICE_05_Word

Dotyková obrázovká v prográmu TRIFID

My si nyní takovou sestavu vytvoříme na příkladu jednoduché kanceláře. Začneme vytvořením takové kanceláře.

Návod ke službě IPTV

Tvorba interaktivních dokumentů v Maple

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

ANS orientace v aplikaci a pokladně

Google Apps. kalendář 2. verze 2012

HP-2000E UŽIVATELSKÝ MANUÁL

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Obsah. při vyšetření pacienta. GDT souboru do programu COSMED Omnia GDT souboru z programu COSMED Omnia a zobrazení výsledků měření v programu MEDICUS

Microsoft Office. Word hromadná korespondence

Práce v návrhovém prostředí Xilinx ISE WebPack 9.2i

ZÁKLADNÍ UŽIVATELSKÝ MANUÁL PRO SÍŤOVÉ FAXOVÁNÍ

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Vytvořte si vlastní program pro váš Palm!

Autodesk Inventor 8 - výkresová dokumentace, nastavení

Microsoft Word - Styly, obsah a další

Transkript:

Tutoriál 3: Procedury Prostředí NetLogo ver. 3.1.4 Znalostní technologie III materiál pro podporu studia

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

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

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 setxy random xcor random ycor Okno s procedurou vypadá následovně: Každá procedura začíná slovem to a končí slovem. 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

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

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 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 right random 360 forward 1 Popis jednotlivých příkazů v proceduře to go je následující: : 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

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

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 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 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 setxy random xcor random ycor 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

Ž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 Procedura eat-grass bude mít následující kód: to eat grass if pcolor = green [ set pcolor black set energy (energy + 10) 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

to move turtles right random 360 forward 1 set energy energy 1 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

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

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 if pcolor = green [ set pcolor black set energy (energy + 10) ifelse show energy? [ set label energy [ set label "" 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

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 Jednotlivé procedury mají následující kód: to reproduce if energy > 50 [ set energy energy 50 hatch 1 [ set energy 50 13

to check death if energy <= 0 [ die to regrow grass ask patches [ if random 100 < 3 [ set pcolor green 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

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

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

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 lega, 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 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) 17

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 setxy random xcor random ycor 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

Upravíme tedy proceduru eat-grass a reproduce : to eat grass if pcolor = green [ set pcolor black set energy (energy + energy from grass) ifelse show energy? [ set label energy [ set label "" to reproduce if energy > birth energy [ set energy energy birth energy hatch 1 [ set energy birth energy 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

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 to setup patches ask patches [ set pcolor green to setup turtles create turtles number ;; uses the value of the number slider to create turtles setxy random xcor random ycor 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 to move turtles set heading random 360 forward 1 set energy energy 1 ;; when the turtle moves it looses one unit of energy 20

to eat grass 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 to reproduce 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 to check death if energy <= 0 [ die ;; removes the turtle if it has no energy left to regrow grass ask patches [ ;; 3 out of 100 times, the patch color is set to green if random 100 < 3 [ set pcolor green 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 21

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