Využití nočního parkoviště (Netlogo)

Zadání
Název simulace: Využití nočního parkoviště městské části Prahy Předmět: 4IT495 Simulace systémů (LS 2016/2017) Autor: Bc. Monika Vampolová Typ modelu: Multiagentní Modelovací nástroj: NetLogo 6.0.1

Definice problému
Simulace zkoumá noční využitelnost parkovacích míst městské části Prahy v závislosti na jejich cenách. Ve zkoumané oblasti bydlí studenti, důchodci, zaměstnaní a nezaměstnaní, jež jsou ochotni platit za parkovací místa odlišné ceny. Ceny jednotlivých míst se liší podle toho, zda se místa nacházejí přímo u bytů či v okrajových částech. Platba za parkování se platí na každý večer zvlášť v parkovacím automatu. Pokud řidič nenajde místo na parkování za určitý čas či pokud jsou místa obsazena, tuto oblast opustí.

Obyvatelé se v této lokalitě nachází v poměru 50% zaměstnaných, 7% nezaměstnaných (včetně matek na mateřské), 30% důchodců a 13% studentů. Ve zkoumané oblasti se nyní nachází 153 registrovaných vlastníků aut. Z vykonaného průzkumu vyplynulo, že zaměstnaní jsou ochotni zaplatit maximálně 80 Kč, nezaměstnaní 55 Kč, důchodci 50 Kč a studenti 60 Kč za jeden večer. Městská část je rozdělena do čtyř parkovacích zón, přičemž v nynější době stojí noční parkování v první zóně 75Kč, ve druhé 60Kč, ve třetí 50 Kč, a ve čtvrté 40 Kč. Aby pražská část neztrácela, minimální hranice nejlevnější části je 30Kč za večer (pod tuto částku nemůže cena za parkování nikdy klesnout).

Současně je ve zkoumané oblasti 177 parkovacích míst, z toho 67 v první zóně, 34 ve druhé, 32 ve třetí a 44 ve čtvrté parkovací zóně.

Cíl
Pomocí variabilního nastavení vstupních parametrů, jež představují ceny jednotlivých zón, a počet parkujících osob, simulace zkoumá, zda se v této městské části nachází dostatek cenově dostupných parkovacích míst. Dále zkoumá, zda jsou ceny jednotlivých zón adekvátně nastaveny v závislosti na ochotě řidičů tyto sumy zaplatit. V neposlední řadě se simulace zaměřuje na přehodnocení cen jednotlivých zón v závislosti na výnosech, jež tyto parkovací zóny pro Prahu představují. Konkrétní cíl lze tedy shrnout následovně: „Nastavit ceny jednotlivých zón tak, aby byla parkovací místa co nejvíce využita a současně aby tato městská část Prahy utržila co nejvíce.“

Metoda
Pro tuto simulaci se ukázalo být nejlepším programovatelným prostředím NetLogo, jež umožnuje zkoumat rozdíly jednotlivých výsledků v závislosti na přenastavení vstupních parametrů. Jelikož jednotlivé agenty pracují nezávisle na sobě, toto simulační prostředí umožňuje prozkoumat chování jednotlivých jedinců, stejně dobře jako jejich vzájemnou interakci. K procentuálnímu rozdělení obyvatel do kategorií zaměstnaní, nezaměstnaní, důchodci a studenti byly použity statistiky Českého statistického úřadu a Sociálně demografická analýza městské části Prahy 10. Pro výši cen, jež jsou dané skupiny ochotny zaplatit za noční parkování, byl vykonán průzkum. Z každé relevantní skupiny bylo osloveno deset zástupců, jejichž názory na výši cen parkovacích míst byly zprůměrovány. V neposlední řadě byly ověřeny informace o rozdělení parkovacích zón na Magistrátu hlavního města Prahy.

Omezení modelu
 Všechna auta přijíždí parkovat ve stejný čas a zůstávají na parkovišti přes noc. Cena za parkování se platí každý večer zvlášť v parkovacím automatu – parkovací karty tato simulace nezohledňuje. Základní model počítá se 153 registrovanými řidiči v této oblasti. V nynější době je však možné registrovat automobil i v jiné části než v místě trvalého bydliště. Počet pravidelně parkujících řidičů se tak hůře odhaduje a počet 153 (+ ostatní nepředvídatelní řidiči) nemusí být úplně přesný. Auta přijíždějí a odjíždějí z daných míst (ovlivnění viditelnosti jednotlivých míst). Nejsou tak brány v potaz další možné příjezdy a odjezdy, jak je tomu ve většině případů ve skutečnosti (viz Možná rozšíření modelu). Auta nemají předem dané silnice, tudíž se pohybují libovolně (viz Možná rozšíření modelu). 

Popis modelu
Předmětem simulace je vymezená část Prahy, jež obsahuje 177 parkovacích míst. Tento počet je nastaven defaultně a nelze měnit (stejně jako v praxi není jednoduché přistavět nová parkovací místa). Místa jsou rozdělena a barevně označena do čtyř zón v závislosti na jejich cenách. Počet registrovaných řidičů této oblasti je 153, nicméně na parkovišti parkují i automobily registrované jinde, tudíž je tento vstup variabilní. Logika simulace je značně přímočará. Auta přijíždějí z jednoho místa a hledají místo k zaparkování. Pokud je místo volné a řidiči jsou ochotni zaplatit určitý obnos, pak zaparkují. Pokud ne, hledají místo dál.

Inicializace
= nastavení simulace před jejím spuštěním Před samotným spuštěním simulace se inicializují volná parkovací místa jednotlivých zón, jež jsou barevně označena.

Dále se inicializují čtyři šedé budovy, do nichž agenty během simulace nesmí vjet či narazit a také výjezd z této čtvrti (exit). V neposlední řadě se inicializují řidiči dle rozdělení: 50% zaměstnaných, 7% nezaměstnaných, 30% důchodců a 13% studentů. V ukazatelích se vyplní vstupní hodnoty ohledně obsazenosti jednotlivých zón a rozvržení obyvatelstva do čtyř skupin.

Spuštění simulace
Při spuštění simulace přijíždí jednotliví řidiči do dané oblasti a hledají volná místa k zaparkování. Vždy se „zeptají“ parkovacího místa kolik stojí a tuto informaci porovnají se svou preferencí. Pokud s cenou souhlasí a pokud je místo volné, zaparkují, jinak pokračují v hledání. Veškeré statistiky se průběžně zaznamenávají, čímž je uživateli umožněno sledovat vývoj výsledků.

Ukončení simulace
Simulace končí ve třech možných variantách. První je skutečnost, že by veškerá přijíždějící auta zaparkovala. Druhou skutečností je, že za určitý čas bude zaplněno 80% parkovacích míst, nezaparkovaní řidiči přestanou hledat a oblast opustí. Třetí situace nastane, pokud sice není obsazeno 80% míst, nicméně řidiči hledají místa už moc dlouho, ztratí trpělivost a oblast opustí.

Agenty a jejich vlastnosti
Zde je uveden výčet agentů simulace včetně jejich vlastností.

People – představují řidiče  Headx – xsová souřadnice místa, kam řidič míří Heady – ypsilonová souřadnice místa, kam řidič míří</li> Pace – aktuální rychlost řidiče v závislosti na tom, zda je v pohybu či je zaparkován </li> </ul> ! u agentů people je důležitá jejich barva. Následující tabulka udává vysvětlení jednotlivých barev.

Parking_zones – představují jednotlivé parkovací zóny Posx – xsová souřadnice překážky</li> Posy – ypsilonová souřadnice překážky</li> ! u agenta parking_zones je velmi důležitá barva patche („dlaždice plátna“). Následující tabulka udává vysvětlení jednotlivých barev. Buildings – představují budovy, do kterých nesmí agenty během simulace narazit Buildx – xsová souřadnice budovy</li> Buildy – ypsilonová souřadnice budovy </li></ul>

Exits – představují výjezdy z dané oblasti, přičemž preferovaný je výjezd na druhé straně města, neboť při poslední cestě přes město je ještě možné nějaké volné místo najít Doorx – xsová souřadnice výjezdu</li> Doory – ypsilonová souřadnice výjezdu </li> </ul>

Vstupní parametry modelu
 Počet parkovacích míst – pevně stanoveno na hodnotu 177</li> Počet řidičů přijíždějících do oblasti – posuvníkem nastavitelná hodnota od 0 do 10</li> Cena 1. zóny – posuvníkem nastavitelná hodnota od 30 do 100</li> Cena 2. zóny - posuvníkem nastavitelná hodnota od 30 do 100</li> Cena 3. zóny - posuvníkem nastavitelná hodnota od 30 do 100</li> <li>Cena 4. Zóny - posuvníkem nastavitelná hodnota od 30 do 100 </li> </ul>

Ovládání simulace
<ul><li>Setup – zahájí inicializaci simulace na základě vstupních parametrů</li> <li>Go – spustí vlastní simulaci (opětovným klikem na toto tlačítko se simulace pozastaví, pro její spuštění od začátku je však nutné znovu kliknout na „setup“ pro inicializaci nového prostředí)</li></ul>

Procedury simulace
<ol><li>Metoda to setup - zahájí inicializaci simulace na základě vstupních parametrů</li> <ul><li>clear-all – smažou se veškerá data z předchozích simulací</li> <li>setup-parking_zones – tato metoda vytvoří zóny pro parkování podle neměnných předpokladů (stejně jako v reálném světě)</li> <li>setup-buildings – tato metoda vytvoří domy, do kterých agenty nemohou během simulace narazit (s budovami se během simulace nedá hýbat)</li> <li>setup-exits – tato metoda vytvoří výjezdy, jež agenty využijí v případě již moc dlouhého hledání volného místa</li> <li>setup-room – tato metoda vykresluje veškeré objekty místnosti (parkovací zóny, domy a exity) včetně jejich barevného rozvržení a dále vykresluje podlahu v barvě brown + 5</li> <li>setup-people - tato metoda generuje jednotlivé řidiče do čtyř kategorií (zaměstnaný, nezaměstnaný, důchodce, student). Agenty people mají nejprve nepředvídatelný směr pohybu, velikost 1, tvar auta a rychlost pohybu dle náhodného normálního rozdělení. </li> to setup-people create-people persons

ask people [

set heading random xcor set heading random ycor

set size 1 set shape "car" set pace random-normal 1 0.2

if random 100 < 50 [ set color yellow set employees employees + 1]

if random 100 < 7 [ set color violet set unemployees unemployees + 1]

if random 100 < 30 [ set color gray set retirees retirees + 1]

if random 100 < 13 [ set color lime set students students + 1] ]

end

<li>adjust-prices – metoda udávající cenu parkovacího místa v závislosti na barvě parking_zone (ceny zón jsou variabilními vstupními parametry)</li> to adjust-prices ask patches [ if pcolor = red [ set price zona1]

if pcolor = orange [ set price zona2]

if pcolor = blue[ set price zona3 ]

if pcolor = green[ set price zona4 ]] end <li>reset-ticks – návrat k výchozímu nastavení ticků (= počtu kroků/času)</li> (v této simulaci: 1 tick = 1 s) </ul> <li>Metoda to go – spuštění vlastní simulace</li> <ul><li>make-step – metoda zajišťující pohyb každého řidiče. Řidič se může posunout dopředu (rychlostí, jež byla definována metodou to create-people) pokud se před ním nikdo nenachází. Pokud je místo obsazené, podívá se, zda se nikdo nenachází o 45 stupňů vpravo nebo vlevo, anebo o 90 stupňů vpravo a posune se tam, kde je volné místo. Tato skutečnost simuluje reálné chování řidičů, jež se překážku snaží objet, jak jen se dá.</li> to make-step ask people [

ifelse (patch-ahead pace != nobody) and ((not any? turtles-on patch-ahead pace) or     ((count turtles-on patch-ahead pace = 1) and (one-of turtles-on patch-ahead pace = self))) [ jump pace ] [     ifelse (patch-right-and-ahead 45 pace != nobody) and (not any? turtles-on patch-right-and-ahead 45 pace) [ right 45 jump pace ] [       ifelse (patch-left-and-ahead 45 pace != nobody) and (not any? turtles-on patch-left-and-ahead 45 pace)[ left 45 jump pace ][

ifelse (patch-left-and-ahead 90 pace != nobody) and (not any? turtles-on patch-left-and-ahead 90 pace)[ left 90 jump pace ][

if (patch-right-and-ahead 90 pace != nobody) and (not any? turtles-on patch-right-and-ahead 90 pace) [ right 90 jump pace

]]   ]]]] end

<li>park-employees, park-unemployees, park-retirees, park-students – na parkoviště přijíždí řidiči různých kategorií (zaměstnaní, nezaměstnaní, důchodci a studenti). Vždy se zeptají parking_zone (parkovacího místa) na cenu, a pokud s ní souhlasí a pokud je místo volné, zaparkují. Pokud ne, hledají dál.</li> to park-employees ask people with [color = yellow] [ if ((patch-here != nobody) and ((not any? turtles-on patch-here ) or ((count turtles-on patch-here = 1) and(one-of turtles-on patch-here = self)))) [ ask patch-here [ if (price >= 30 and price <= 80)[ ask myself[ set pace 0 set parked-employees parked-employees + 1 set parked parked + 1 set color 46 ]]]]] end <li>avoid – metoda to avoid zajišťuje vyhnutí se budovám (pokud se řidič příliš přiblíží budově, kousek zacouvá a změní směr)</li> to avoid ask people [ if(any? neighbors with [pcolor = grey])[ back 3 right 45 ]] end <li>leave – metoda to leave má na starosti řidiče, jež ztratí s parkováním trpělivost. Pokud je zaplněno více než 80% všech parkovacích míst či pokud uplyne 2000 ticků (= 2000s = 33 minut), řidič parkování vzdá a oblast opustí.</li> to leave if ((((parked / persons) = 1) or ((zona-1 + zona-2 + zona-3 + zona-4) / 177 > 0.80)) or (ticks > 1500))[ ask people [

facexy xcor 64 facexy ycor 64

ask patch-here [ if (pcolor = brown) [ ask myself [ die ]]]]] end

<li>edge – pokud se řidič přiblíží okraji sledované oblasti, změní směr a vrací se blíže parkovacím místům</li> <li>count-zona1, count-zona2, count-zona3, count-zona4 - tyto metody počítají počet zaparkovaných aut v jednotlivých zónách. Pokud řidič zaparkuje, jeho barva se změní na barvu zaparkování (color 47), ale především se připočítá do statistik zaparkovaného auta v dané zóně.</li> to count-zona1 ask people with [color = 46 or color = 116 or color = 6 or color = 66][ ask patch-here [ if(pcolor = red)[ ask myself[ set zona-1 zona-1 + 1 set color 47 ]]]] end <li>''' if ((not any? people with [pace != 0]) or (ticks > 2500))[stop]''' - zastavení simulace, pokud jsou všechna auta zaparkována či pokud čas hledání volného místa dosáhne 42 minut. Tato podmínka zajišťuje ukončení simulace i v případě, že by bylo nějaké auto zablokováno jiným a jejich odblokování by trvalo déle než 33 minut (viz leave metoda). </ul> </ol>

Sledované ukazatele
Vývoj důležitých ukazatelů je sledován průběžně během simulace.</li> <ul><li>Celkem zaparkovaných – celkové množství zaparkovaných aut</li> <li>Zaparkovaní v % - ukazuje kolik % z celkového počtu řidičů našlo parkovací místo</li> <li>Zaparkovaní zaměstnaní, zaparkovaní nezaměstnaní, zaparkovaní důchodci, zaparkovaní studenti – statistiky ohledně zaparkovaných aut jednotlivých kategorií + jejich procentuální vyjádření z celkového množství osob dané kategorie</li> <li>Volná místa celkem – ukazuje, kolik zbývá volných míst ze 177 možných</li> <li>Obsazenost všech parkovacích míst – ukazatel ukazující procentuální obsazenost veškerých parkovacích míst</li> <li>Zona-1, zona-2, zona-3, zona-4 – ukazuje kolik aut je v jednotlivých zónách zaparkováno </li> <ul> <li>+ jejich procentuální vyjádření k celkovému počtu dostupných míst jednotlivých zón</li> <li>+ ukazatel zbývajících volných míst dané zóny</li></ul> <li>Tržby celkem – ukazatel ukazující kolik městská část utrží celkem za parkování ve všech zónách</li> <li>Zona-1, zona-2, zona-3, zona-4 – kolik městská část utží za parkování v jednotlivých zónách</li> <li>Graf - ukazuje parkování v jednotlivých zónách s přibývajícím časem<li>

Grafické rozhraní simulace
Níže je uvedeno grafické rozhraní simulace Využití nočního parkoviště.

Výsledky simulace
Jelikož simulace v této části Prahy předpokládá 153 vlastníků automobilů, předpokládá taktéž v této oblasti jejich parkování a přidává dalších 47 náhodných parkujících (např. ze sousedících městských částí Prahy, apod.). Celkově bylo zkoumáno jedenáct různých nastavení cen parkovacích zón pro 200 parkujících osob. Jednotlivé výsledky simulací lze nalézt mezi soubory ke stažení (viz Soubory ke stažení). Dále byla simulace dvakrát spuštěna pro 300 parkujících osob, 500 osob a poté jednou pro tisíc osob. Jelikož jsou parkovací místa pevně daná a jejich kapacita je přesně 177, je evidentní, že při počtu 1000 osob budou veškerá místa obsazena, nicméně zaparkovaných lidí bude jen okolo 18%. Následující tabulka shrnuje nejdůležitější zaznamenané výsledky.

Z tabulky je patrné, že při příjezdu 200 řidičů není nastavení cen jednotlivých zón zcela přímočaré, nicméně nynější nastavení cen se nedá považovat za optimální. Následující tabulky ukazují detailnější výsledky nynější varianty.

Nejvyšší procentuální počet zaparkovaných aut byl dosažen při nastavení cen č. 9, obsazenost všech míst byla taktéž nejvyšší, nicméně tržby malinko pokulhávaly. Nejvyšší tržba byla naopak při nastavení č. 10, nicméně procentuální obsazenost všech míst nebyla optimální. Pokud vezmeme v úvahu nastavení č. 4, procentuální počet zaparkovaných aut byl druhý nejvyšší (66,50%), obsazenost všech míst byla taktéž druhá nejvyšší (75,14%), stejně jako tržby (7230,-). Následující tabulky ukazují podrobné výsledky čtvrté varianty nastavení cen. Graf této varianty udává, jak se měnila obsazenost jednotlivých zón s přibývajícím časem.

Závěr
Simulace měla za cíl nastínit noční využitelnost parkovacích míst městské části Prahy v závislosti na jejich cenách a celkové tržby pro Prahu z parkování v této oblasti. Jak se ukázalo, výsledné nastavení cen je velmi diskutabilní a odvíjí se od toho, jaké má tato městská část Prahy preference (výše tržeb, spokojenost řidičů či celková obsazenost parkovacích míst). Pokud by městská část tolik nehleděla na své tržby, pak by se optimálním řešením jevilo nastavení cen č. 9. Z mého pohledu si ovšem myslím, že nejoptimálnějším řešením je čtvrté nastavení cen. Rozdíl oproti deváté variantě není v obsazenosti míst a počtu zaparkovaných řidičů tak velký, nicméně v tržbách je značně viditelný. Ze čtyř zón by se vytvořily pouze dvě, jež by se lišily deseti korunami za noc (60,- a 50,-). Procentuální počet zaparkovaných aut byl při tomto nastavení cen druhý nejvyšší (66,50%), obsazenost míst byla taktéž druhá nejvyšší (75,14%), stejně jako tržby (7230,-). Celkové tržby za parkování přesáhly i tržby při nastavení nejvyšších možných cen všech zón, jež jsou jednotlivé kategorie řidičů ochotny za parkování zaplatit.

Možná rozšíření modelu
<ul> <li>Simulace by mohla zohledňovat parkovací karty residentů dané oblasti a sledovat vývoj tržeb v závislosti na počtu a ceně takovýchto karet.</li> <li>Simulace nezohledňuje, zda řidiči tuto oblast znají či nikoli. Jistá znalost parkovacích míst by zajisté ovlivnila rychlost, ale taktéž zaplněnost jednotlivých zón, neboť by řidiči hledali místa k zaparkování pravděpodobně kratší dobu.</li> <li>Auta nemají předepsané silnice, po kterých se mohou pohybovat. Rozšířením by bylo nastavení silnic (včetně jednosměrek, zákazu otáčení, apod.). </li> <li>Auta přijíždějí a odjíždějí z daných míst, což ovlivňuje viditelnost jednotlivých parkovacích míst. Rozšířením by mohlo být více vjezdů do dané oblasti, jako je tomu v reálném světě.</li></ul>

Zhodnocení naplnění cíle
Cílem této simulace bylo pomocí variabilního nastavení vstupních parametrů zjistit, zda se v této městské části nachází dostatek cenově dostupných parkovacích míst. Zda jsou ceny jednotlivých zón adekvátně nastaveny v závislosti na ochotě řidičů tyto sumy zaplatit a v neposlední řadě na přehodnocení cen jednotlivých zón v závislosti na výnosech, jež tyto parkovací zóny pro Prahu představují. Provedením simulace byla nalezena odpověď na otázku: „Jak by měly být ceny nastaveny, aby byla parkovací místa co nejvíce využita a současně aby tato městská část Prahy utržila co nejvíce?“. Odpovědi jsou dvě, přičemž záleží na preferencích městské části Prahy. Pokud je preference této městské části spokojenost obyvatel a využití co nejvíce parkovacích míst, poté se nejoptimálnější variantou jeví nastavení č. 9. Pokud se do preferencí řadí ještě tržby za parkování, pak je optimálním řešením nastavení cen čtvrté.

Soubory ke stažení
| Vlastní simulace v programu NetLogo 6.0.1 | Pomocný soubor se všemi výsledky (excel)