Optimalizace kapacity vleku (NetLogo)
Contents
JESTE NENI HOTOVE
Zadání
Název simulace: Optimalizace kapacity vleku
Předmět: 4IT495 Simulace systémů (LS 2015/2016)
Autor: Bc. Martin Hradil
Typ modelu: Multiagentní
Modelovací nástroj: NetLogo 5.3.1
Definice problému
Příjmy skiareálu s jednou sjezdovkou jsou z drtivé většiny tvořeny z prodeje permanentek. Pro největší příjmy je tedy vhodné, aby se do skiareálu vešlo co nejvíce lidí.
Celý skiareál má ale určitou kapacitu lidí, kteří se do něj vejdou, a při tom se ještě vzájemně na sjezdovce neblokují. Limitovat počet lidí na sjezdovce je možné kapacitou vleku (kolik lyžařů/čas vlek vyveze na kopec, nebo po jaké době vyveze jednoho lyžaře).
Cíl
Cílem simulace je při zadané šířce sjezdovky nalézt maximální kapacitu vleku, při které se lyžaři ještě nebudou blokovat tolik, aby se hromadili na kopci kvůli ucpání sjezdovky.
Metoda
Jelikož se jedná o multiagentní simulaci, jako prostředek byl zvolen program NetLogo, v poslední verzi 5.3.1. V něm byl vytvořen model skiareálu, ve kterém se jednotliví agenti pohybují.
Jelikož každý člověk má jiné schopnosti a chová se na sjezdovce jinak, lze jednotlivé lyžaře obtížně vyjádřit čísly. V nástroji NetLogo je možné vlastnosti lažařů jako rychlost nebo velikost obloučků náhodně generovat. Podklady pro nastavení generování těchto parametrů by bylo možné získat pozorováním na nějaké sjezdovce. To však nebylo vzhledem k aktuálnímu ročnímu období možné a tak byly odhadnuty.
Model
Tato část obsahuje popis modelu, jeho grafické rozhraní a logiku. První je vysvětlen samotný model, následně jak ho používat.
Popis Modelu
Grafické Rozhraní
Grafické rozhraní se skládá z části nastavení a ovládání, hlavního okna s vizualizací děje, a grafů a monitorů.
Část s ovládáním obsahuje posuvníky pro nastavení parametrů v rámci vhodných mezí a tlačítka pro prvotní nastavení a běh.
Hlavní okno s vizualizací obsahuje grafický model skiareálu. Ten se skládá z několika částí:
- Kolem procházející cesta
- Příchozí cesta do fronty
- Fronta
- Vlek
- Výstup z vleku
- Sjezdovka
Celé pozadí je zelené a má znázorňovat les nebo louku.
V pravé části jsou zobrazeny číselné výstupy simulace v číslech a grafech.
Implementace
V modelu existují lyžaři, kolem kterých se celá simulace odehrává. Ti mohou být v několika stavech, podle kterých se různě chovají chovají. Tyto stavy jsou uloženy v proměnných. Dále model obsahuje globální proměnné a několik lokálních proměnných.
Proměnné, parametry, obory hodnot
Promenné z nastavení v UI:
- slopeWidth - šířka sjezdovky, udáváná v "patches". Může nabývat hodnot od 10 do 55.
- slopeMaxCurve - maximální úhel obloučku lyžaře vzhledem k jeho pohledu. Může nabývat hodnot od 0 do 90. Tzn. při 0° jede rovně přímo dolů, při 90° dělá obloučky až do pravého úhlu ke směru sjezdovky.
- slopeSpeedDeviation - směrodatná odchylka pro generování náhodně rychlosti lyžařů. Může nabývat hodnot od 0 do 0,01.
- liftCapacity - tato proměnná limituje, po jakém čase (po kolika ticích) vlek vyveze dalšího lyžaře. Když se má v daném ticku vyvézt další lyžař, tato proměnná se porovná a je-li větší než "lastPersonLifted", první lyžař z fronta nastoupí na vlek a proměnná se vynuluje.
- newPeopleFrequency - Šance # z 1000, že se v daném ticku vytvoří nový člověk.
- maxQueueLenght - Pokud je fronta na vlek delší než #, kolem procházející lidé nevstoupí do skiareálu.
Globální proměnné:
- lastNewPerson - tato proměnná limituje, po jakém čase mohou kolem procházet noví potencionální lyžaři. Jestliže je na ně fronta moc dlouhá, procházejí kolem skiareálu a mizí. S každým tickem se přičítá. Když se má v daném ticku vytvořit další člověk, tato proměnná se porovná a je-li větší než 10, vytvoří se nový člověk a proměnná se vynuluje.
- liftSpeed - tato proměnná vyjadřuje rychlost pohybu lyžařů na vleku. Je nastavena na 0,05.
- walkSpeed - tato proměnná vyjadřuje rychlost chůze lyžařů. Je použita, pokud je lyžař kdekoli kromě sjezdovky nebo vleku. Je nastavena na 0,13.
- lastPersonLifted - tato proměnná vyjadřuje, před kolika ticky byl vyvezen poslední lyžař. Může nabývat hodnot od 0 do hodnoty nastavené v "liftCapacity".