Pastýřův pes (NetLogo)

=Definice problému=

Kapitola obsahuje zadání simulace. Vzhledem k určitým změnám bylo nutné zadání v některých bodech upravit. Kostra simulace zůstane stejná.

Původní zadání
Historické povolání pastýře se neobešlo bez psího pomocníka, který člověku naháněl stádo ovcí a tím ho držel pohromadě. Tato simulace si klade za cíl simulovat chování pastýřova psa, který má za úkol nahnat stádo do ohrady. Stádo je složeno z ovcí, které přirozeně utíkají před predátorem. Pes musí být schopen narážet na stádo tak, aby se ovce přesunovali směrem k ohradě dokud jim nezbyde nic jiného, než do ní vběhnout. Ovce se pohybují ve stádu, nicméně existuje pravděpodobnost, že některé ovce, které hůře snáší stres se oddělí od stáda. Pastýřův pes tyto rebelské ovce musí nahnat zpátky do stáda nebo do ohrady.

Větší stáda ovcí mají tendenci pomaleji a neochotněji reagovat na dorážky psa, protože ovce na druhé straně stáda jsou daleko a bezprostředně neví o hrozbě a tudíž reagují pouze podle reakcí ostatních ovcí. Reakce se přenáší stádem jako "vlna". Více psů dokáže manipulovat se stádem rychleji, je však větší hrozba rebelujících ovcí, které pak musejí individuálně nahánět.

Upravené zadání
Modelování simulace poukázalo na některé nerealistické předpoklady stanovené v zadání. V případě pohybu stáda bylo nutné simulaci zjednodušit a aproximovat. Stádo se nyní hýbe společně v jednom směru, ale nedochází k vlnovému pohybu. Dále definice stáda je tendence ovcí spojovat se s ostatními ovcemi v nejbližším okolí. Jinak každá ovce se pohybuje autonomně. Ohrada byla zjednodušena na jeden bod na mapě, který je možný nastavit.

=Metoda=

Typ simulace: Multiagentní

Nástroj: NetLogo 5.3.1

=Model=

Následující kapitoly popisují vytvořený model simulace.

Uživatelské rozhraní
Simulace má jednoduché rozhraní. V levé části se nachází ovládání - setup (nastaví simulaci) a run (spustí simulaci). Pod ovládáním se nastavují proměnné. Uprostřed je plot a vpravo se nachází sledovací prvky.



Hnědý bod představuje vstup do ohrady. Zbytek je z obrázku celkem zřejmý.

Agenti
Pes
 * Pastýřův pes má za úkol dovést všechny ovce do ohrady
 * Pes má svůj vlastní dohled ve kterém dokáže zachytit ovci
 * Pokud pes zachytí ovci, přinutí ji pohybovat se směrem o ohradě
 * Pes se pohybuje náhodným směrem danou rychlostí
 * Pokud pes ve svém dohledu nemá žádnou ovci, postupně zvyšuje dohled

Ovce
 * Ovce se pohybuje náhodným směrem danou rychlostí
 * Ovce v blízkém okolí vytvářejí stádo, které mohou opustit a přidat se k jiné ovci či stádu
 * Ovce v případě, že je naháněna psem, se pohybuje stejným směrem a rychlostí jako celé stádo
 * Ovce má pud a povědomí o okolí. Pokud ucítí psa, pohybuje se opačným směrem od něj
 * Ovce se může vystrašit, pokud pes vstoupí do její blízkosti
 * Vystrašená ovce se pohybuje vyšší rychlosti náhodně po louce
 * Vystrašená ovce se po náhodně dlouhé době opět uklidní
 * Ovce jsou na louce rozmístěny pomocí layout-circle procedury

Oba agenti mají zabudovanou proceduru, která zabraňuje aby se zasekli na okrajích plátna.

Prostředí
Simulace rozlišuje dva prvky prostředí.

Louka Louka v podstatě představuje celé plátno simulace. Je ohraničené a pohybují se na ní volně ovce a psi.

Ohrada Ohrada je reprezentována jedním bodem na louce, který symbolizuje vstup do ohrady. Skutečnosti jako jestli se ovce do ohrady vejdou jsou zanedbány.

Parametry
Nastavitelné proměnné
 * number-of-sheep - počet ovcí na louce
 * number-f-dogs - počet psů na louce
 * sheep-awareness - rádius ve kterém ovce reaguje na existenci psa útěkem
 * dog-vision - rádius ve kterém pes zaměřuje na ovce
 * fencex - x souřadnice ohrady
 * fencey - y souřadnice ohrady

Hard-coded parametry ovce
 * base-speed - klidová rychlost pohybu
 * chased-speed - rychlost pohybu ovce, když je naháněna psem
 * frightened-speed - rychlost pohybu vystrašené ovce
 * herding-radius - poloměr ve kterém se ovce spojují do stáda

Hard-coded parametry psa
 * pace - rychlost pohybu psa
 * max-vision - maximální dohled psa

Monitoring

 * Fenced sheep - graf ukazuje:
 * modře - % ovcí v ohradě
 * červeně - % vystrašených ovcí
 * fenced sheep % - procentuální podíl ovcí v ohradě
 * frightened sheep % - procentuální podíl vystrašených ovcí vzhledem k aktuálnímu počtu ovcí na louce
 * elapsed time - čas trvání simulace
 * frigtened total - celkový počet vystrašených ovcí

Průběh simulace
Po nastavení proměnných dle požadavků nastává samotná simulace, která poté probíhá zcela autonomně. Nejdůležitější ukazatel je čas trvání simulace. Simulací lze zjistit, jestli vyšší počet psů zrychluje simulaci a ovlivňuje vyšší vystresovanost ovcí nebo jak ovlivňuje počet ovcí na louce celkovou dobu trvání vzhledem k stádovému chování ovcí. Zároveň lze zjistit jestli obezřetnější ovce jsou hůře naháněny do ohrady nebo jestli dalekozrací psi mají jednodušší práci. Případně lze i zkoušet jak umístění ohrady ovlivňuje celkový čas.

Scénáře a výsledky

 * Mnoho ovcí, jeden pes
 * Parametry - 1000 ovcí, 1 pes, obezřetnost 5, dohled 10

Jedinému psu trvalo nahnat všechny ovce celkem 27min 15s a vystrašil přitom 371 ovcí.


 * Mnoho ovcí, mnoho psů
 * Parametry - 1000 ovcí, 5 psů, obezřetnost 5, dohled 10

Větší počet psů výrazně urychlil simulaci, která trvala pouhých 5min 16s. Nicméně vystrašených ovcí bylo 778.


 * Málo ovcí, mnoho psů
 * Parametry - 10 ovcí, 5 psů, obezřetnost 5, dohled 10

Simulace dle předpokladů trvala pouze 14 vteřin a psi stihli vystrašit jenom jednu ovci.


 * Málo obezřetných ovcí, jeden krátkozraký pes
 * Parametry - 100 ovcí, 1 pes, obezřetnost 10, dohled 5

Pes s krátkým dohledem hůře nahání ovce a obezřetnější ovce jsou snadněji vystrašitelné. Spojení těchto dvou skutečností způsobuje, že ovce se rozutíkavají po louce a pes má problemy je pochytat. Celkový čas byl 11min 36s a vystrašených ovcí bylo 804.

=Závěr=

Simulace svojí praktičností nepatří mezi nejlepší, nicméně se stále jednalo o výzvu a procvičení v NetLogu. Kód je volně dostupný a šiřitelný a může být ostatním vodítkem a inspirací jak rozpohybovat agenty a vštípit jim, základní chování.

=Kód=