Optimalizace nastavení eskalátorů v metru (NetLogo)

From Simulace.info
Revision as of 23:22, 2 June 2016 by Xrojr01 (talk | contribs) (Model)
Jump to: navigation, search


Zadání

Název simulace: Optimalizace nastavení eskalátorů v metru

Předmět: 4IT495 Simulace systémů (LS 2015/2016)

Autor: Bc. Robert Rojo

Typ modelu: Multiagentní

Modelovací nástroj: NetLogo

Definice problému

Simulace slouží k nalezení optimální rychlosti a počtu aktivních eskalátorů. Máme situaci s předem danými parametry. Do stanice přijede metro, vyloží cestující a ti jdou k nejbližšímu eskalátoru, přičemž pokud je eskalátorů více, zvolí si jeden z nich, jedoucí danou rychlostí. Někteří cestující jdou, a to po levé straně eskalátoru, někteří stojí na pravé straně. Ti inteligentnější stojí opravdu vpravo tak, aby nevadili těm, kteří chtějí jít. Ti, kterým Pán Bůh tolik nenadělil stojí vlevo, a tak blokují všechny za sebou.

Metoda

Pro tuto simulaci jsem zvolil NetLogo, neboť mi šlo o simulování pohybu a interakce mnoha pasažérů v daném známém prostředí - na eskalátorech v metru. Informace o eskalátorech jsem získal z webu Dopravního podniku, rychlost eskalátorů a chůze na nich jsem osobně ověřoval měřením ve stanici Háje.

Model

Popis modelu je členěn do několika částí. V úvodu je vysvětleno, jak model pracuje - tento popis jsem převzal z vlastní analýzy problému, kterou jsem provedl před samotnou implementací simulace v nástroji NetLogo. Dále jsou uvedeny agenti, jejich vlastnosti, co je možné v modelu sledovat a jak vypadá uživatelské rozhraní. V závěru jsou uvedeny výhody a nevýhody tohoto modelu.

Jak to celé funguje

Samotnou simulaci je možné rozdělit do tří odlišných fází, kterými každý cestující prochází.

Fáze 1 - Příchod cestujících k eskalátorům.

Zde jde o jednoduché přemístění cestujících k předem určenému bodu.

  1. Jsou vytvoření cestující u dveří metra. Každý cestující jde svým tempem, které je určeno náhodně při jeho narození.
  2. Každý cestující si náhodně při svém vzniku vybere, ke kterému eskalátoru půjde (dojde ke "spravedlivému" rozdělení zátěže). V reálu to vypadá velmi podobně, každý se snaží dostat tam, kde je menší fronta, což ve výsledku způsobí rovnoměrné rozložení počtu cestujících u jednotlivých eskalátorů.
  3. Cestující jde ke svému vybranému eskalátoru, během cesty svou volbu nemění (zde by mohlo být nějaké rozhodování na základě okolních podmínek, což by ale bylo složitější na implementaci)
  4. Během cesty se snaží cestující vyhnout ostatním, a to tak, že pokud je někdo před ním, otočí se o 45 stupnů do strany a vydá se tím směrem (stále se snaží dojít ke svému eskalátoru).
  5. Když se cestující dostanou k eskalátoru, dostávají se do fáze 2

Fáze 2 - Stairway to heaven

V této fázi jsou cestující vyvezeni na povrch.

  1. Cestující si na eskalátoru stoupá vlevo či vpravo, podle své preference, která je určena při jeho narození. Pokud preferuje pravou stranu, pohybuje se ke konci eskalátoru právě rychlostí eskalátoru (na eskalátoru stojí).
  2. Preferuje-li levou stranu, mohou nastat dvě situace:
    • a) pohybuje se rychlostí eskalátoru (také stojí), čímž mimo jiné blokuje ty, kteří chtějí jít (viz b)
    • b) pohybuje se vyšší rychlostí než je rychlost eskalátoru (= rychlostí eskalátoru + vlastní rychlostí chůze, danou náhodně při jeho narození)
  3. V pohybu se cestující chovají podle těchto pravidel:
    • preferují-li stání, stojí, dokud nejsou vyvezeni nahoru
    • preferují-li chůzi, jdou (po levé straně) kupředu, dokud nenarazí na jiného stojícího cestujícího. V takovém případě se také zastaví.
  4. Dostanou-li se cestující na konec eskalátoru, dostávají se do fáze 3

Fáze 3 - Opouštění eskalátorů

V této fázi cestující opouští eskalátory a jdou k východu.

  1. Cestující, kteří opustí eskalátor, pokračují k východu, opět svou rychlostí, která je určena při jejich narození.
  2. Opět se snaží vyhnout ostatním, pokud jim stojí v cestě, stejně jako před nastoupením na eskalátor.

Agenti a jejich vlastnosti

Hlavními agenty, kteří v simulaci figurují, jsou cestující, eskalátory, východy a zdi.

Cestující (passengers|passenger)

  • pace - aktuální rychlost chůze, která se mění v závislosti na tom, zde je cestující na zemi nebo na eskalátoru, viz ground-pace a escalator-pace
  • headx - souřadnice x místa, kam cestující míří
  • heady - souřadnice x místa, kam cestující míří
  • has-exit - true, pokud už má cestující zvolen východ, kterým vyjde po opuštění eskalátoru
  • preference - "stand" nebo "walk". Určuje, zda cestující bude na eskalátoru stát (bude modrý) či chodit (bude žlutý)
  • escalator-pace - Rychlost chůze na eskalátoru (0,4-1,0 m/s) - V modelu pevně nastaveno jako polovina, tedy 0,2-0.5 z důvodu přepočítávání pro potřeby měření času. Pro situaci jsem zvolil rovnoměrné rozdělení, i když správnější by bylo využít normální či lognormální rozdělení (u kterých je však problém určit parametry tak, aby se nerodili cestující, kteří chodí pozpátku)
  • ground-pace - Rychlost chůze na zemi (1-1,5 m/s). V modelu pevně nastaveno jako polovina , tedy 0,5-0.75 z důvodu přepočítávání pro potřeby měření času. Pro situaci jsem zvolil rovnoměrné rozdělení, i když správnější by bylo využít normální či lognormální rozdělení (u kterých je však problém určit parametry tak, aby se nerodili cestující, kteří chodí pozpátku)
  • escalator-id - Jednoznačný identifikátor eskalátoru, ke kterému cestující jde a po kterém je vyvezen.
  • ready-to-ride - Slouží pro potřeby "vstupu" na eskalátor, kdy je potřeba, aby se část kódu provedla pouze jednou.
  • previous-x - Předchozí pozice x cestujícího. Slouží k určování, zda stojí cestující moc dlouho na jednom místě a je někde zaseknutý.
  • previous-y - Předchozí pozice y cestujícího. Slouží k určování, zda stojí cestující moc dlouho na jednom místě a je někde zaseknutý.
  • ticks-standing - Počet tiknutí, které stojí cestující na stejném místě. Slouží k určování, zda stojí cestující moc dlouho na jednom místě a je někde zaseknutý.
  • is-clogging - Vlastnost, která je cestujícímu přidělena na základě pravděpodobnosti blokování p-of-clogging. Blokující cestující je označen červeně.


Eskalátory (escalators|escalator)

  • id - jednoznačný identifikátor eskalátoru. Jedná se spíše o pomocnou proměnnou při určování rychlosti cestujícího na eskalátoru. Ten totiž musí vědět, na kterém eskalátoru je (viz escalator-id u cestujícího).
  • speed - Rychlost samotného eskalátoru (0,5-0,75 m/s). Interval rychlosti je dán směrnicí EU.
  • padx - Pozice x eskalátoru. Eskalátory mají pevně danou šířku, která při přepoču neodpovídá skutečnosti, ale pro potřeby modelu to nijak nevadí.
  • pady - Pozice y eskalátoru
  • is-active - Je-li "true", mohou si cestující tento eskalátor vybrat, jít k němu a nechat se vyvézt nahoru. Také slouží k určení výpočtu nákladů - ty se počítají pouze z aktivních eskalátorů. Aktivní eskalátory jsou označeny zelenou barvou, neaktivní pak barvou červenou.

Dveře - východy (doors|door)

Počet, velikost i pozice dveří je pevně daná, neboť se model zaměřuje primárně na pohyb na eskalátorech

  • doorx - Souřadnice x dveří.
  • doory - Souřadnice x dveří.

Zdi (walls|wall)

Zdi jsou v modelu proto, aby nemohli cestující obejít nástupní plochu eskalátoru a nastoupit třeba až v polovině eskalátoru. Zdi jsou v modelu viditelné jako světle hnědá plocha v pásmu s eskalátory.

  • posx - Souřadnice x 1 bloku zdi.
  • posy - Souřadnice x 1 bloku zdi.

Vstupní parametry a nastavení modelu

Nastavení cestujících (pasažérů)

  1. passengers-count - Počet cestujících (z Poissonova rozdělení nebo přesně - přepíná se volbou is-poisson)
  2. is-poisson - Je-li volba aktivní, je počet pasažárů parametrem Poissonova rozdělení, jinak je vytvořen jejich přesný počet.
  3. walkers-ratio - Poměr stojících a chodících cestujících z intervalu <0;1>, 0 znaměná pouze stojící cestující, 1 pouze chodící
  4. p-of-clogging - Pravděpodobnost, že narozený chodící cestující bude na eskalátoru stát. Lze nastavit v intervalu <0;0,3> (0,3 je poměrně veliké množství, proto volím jemnější krokování 0,01 a shora omezený interval pravděpodobnosti)
  5. keep-distance - Aktivní volba zapíná kolize mezi chodícími na eskalátoru (když se před cestujícím někdo zastaví, musí se taky zastavit)
  6. unstuck-timeout - Pokud je pasažér tento počet tiknutí pořád na stejném místě, je zaseklý, a musí udělat krok zpět o náhodnou vzdálenost <0;0.5>. tím je zaručeno, že se ve velké mačkanici cestující nezaseknou a vždy mohou pokračovat ve své cestě.

Nastavení eskalátorů

  1. escalator-length - Délka eskalátorů v metrech, lze nastavit posuvníkem v intervalu <0;100>
  2. escalator-n - Počet aktivních eskalátorů, nastavuje se zvlášť pro každý eskalátor (escalator-1, escalator-2, escalator-3, escalator-4)
  3. escalator-n-speed - Rychlost každého z eskalátorů (escalator-1-speed, escalator-2-speed, escalator-3-speed, escalator-4-speed)

Další nastavení

  1. debug - Aktivní volba zapíná ladící mód, kdy je vytvořen jen jeden cestující blízko eskalátorů. To je užitečné při zkoumání jeho rychlosti a pozice na eskalátoru.
  2. frame-rate - Aby správně fungoval přepočet měřáků na sekundy, musí být tato hodnota nastavena stejně jako hodnota "frame rate" v nastavení modelu a model musí být v "normal speed" rychlosti. Hodnota v nastavení modelu musí být nastavena bohužel zvlášť ručně.

Nastavení nákladů

  1. fixed-costs-per-escalator - Fixní náklady pro každý aktivní eskalátor. (Můžeme situaci ještě před vybudováním eskalátorů, kdy nás zajímají např. pořizovací náklady)
  2. variable-costs-per-second - Náklady na každý aktivní eskalátor za každou vteřinu provozu.

Ovládání

Ovládat simulaci lze následujícími tlačítky, které jsou v sekci Ovládání:

  • Setup - Připraví model k použití s aktuálně nastavenými parametry
  • Go - Spustí simulaci. Opětovným stiskem lze simulaci zastavit. Mějte však na paměti, že pozastavením simulace nebude zastaven měřený čas.
  • Step - Při krokování opět dojde k "rozbití" měření času. To je dáno tím, že čas se odvíjí od běhu času ve virtuálním prostředí Javy. Krokování je spíše vhodné pro potřeby ladění.
  • Master Reset - Nastaví všechny hodnoty na výchozí a provede Setup.

Sledované ukazatelé

Číselné ukazatelé

  1. total-passengers - (# pasažérů na začátku) - Zobrazuje, kolik cestujících (pasažérů) je na začátku vytvořeno. Informace se hodí v případě zapnuté volby is-poisson, kdy není počet cestujících přímo zadaný.
  2. actual-costs - (Současné náklady) - Zobrazuje aktuálně vypočtené náklady podle aktivních eskalátorů a uběhlého času.
  3. time - (Všichni odešli) - Čas, za který všichni cestující opustili systém (metro).
  4. half-time - (Polovina odešla) - Čas, za který metro opustila polovina všech původních cestujících.
  5. walking-time - (Všichni chodící odešli) - Čas, za který všichni eskalátorech chodící cestující.
  6. standing-time - (Všichni stojící odešli) - Čas, za který z metra odešlo všichni na eskalátorech stojící cestující opustili.

Grafy

  1. Celkový počet cestujících v systému - Zobrazuje vývoj počtu cestujících v metru. na začátku jsou zde všichni a s postupem času křivka klesá, jak cestující vychází ven z prostorů metra.
  2. Počet cestujících dle preference - Zobrazuje to samé jako předchozí graf, jen zvlášť pro chodící (žlutá křivka) a stojící (modrá křivka).
  3. Počty cestujících dle fáze - Zobrazuje vývoj počtu cestujících v jednotlivých fázích
    • Fáze 1 - spodní podlaží (žlutá)
    • Fáze 2 - eskalátory (zelená)
    • Fáze 3 - horní podlaží (červená)

Pozn.: Je-li nastaven frame-rate na 30, zobrazuje osa x v grafech čas ve vteřinách

Grafické rozhraní

Níže je zobrazeno, jak vypadá rozhraní simulace.

Xrojr01-main-screen-3.png

Výhody a nevýhody modelu

Aby byl cíl semestrální práce naplněn v daném čase a s mými danými znalostmi a zkušenostmi, nebylo možné implementovat všechny nápady s touto problematikou spojené. Z povahy a konkrétní implementace modelu vyplývají výhody i nevýhody, které jsou shrnuty níže.

Výhody

  • ... TODO

Nevýhody

  • ... TODO

Výsledky

Závěr

Zhodnocení naplnění cíle

Možná rozšíření modelu

Současný model zachycuje základní principy a bylo by jej možné a vhodné rozšířit v několika aspektech, např.:

  • Předbíhání na eskalátorech - Hlavním nedostatkem modelu je úvaha, že ti, kdo stojí vpravo nikdy nejdou. V praxi se obvykle cestující podle potřeby umí vyhýbat, a tedy přeskakovat z levého do pravého pruhu a zpět podle potřeby.
  • Možnost říct "s dovolením" - Cestující za někým stojícím by ho mohl požádat o uvolnění místa a ten by mu mohl vyhovět či ne.
  • Více východů/přestupy - Např. ve stanici Můstek na linkách A a B se lze shledat s poměrně komplexním systémem východů a více eskalátory.
  • Rozšíření o běžné schodiště - Případ stanice Muzeum, kde nalezneme dva eskalátory (jeden nahoru, jeden dolů) a běžné schodiště.
  • Přidání lidí v opačném směru - Zajímavé by bylo sledovat pohyb cestujících při různém nastavení eskalátorů (např. 3 jedou nahoru, jeden dolů) a vzájemnou interakci cestujících blízko u nástupu a výstupu z eskalátorů. V praxi vidím, že se často lidé neumí vyhnout.
  • Přidání třetí dimenze - Zde by šlo spíše o lepší vizuální přehlednost.

Zdroje