User:Sanv05
Contents
Kontrola jízdenek v MHD
Definice problému
MHD je nedílnou součástí života v Praze. Aktuálním problémem v této sféře je cestování bez platného jízdného dokladu. Jelikož je dopravní podnik mimo jiné financován právě z příjmů z jízdného, daný problém představuje zdroj finančních ztrát. Představená simulace se zabývá optimalizací kontrol platnosti jízdních dokladů v systému pražské MHD. Její cílem je otestovat, jak počet a rozmístění revizorů v síti metra ovlivňují objem udělených pokut a míru zachycení černých pasažérů. Pomocí simulace lze najít vhodné inspekční strategie, které určí, kam a kolik revizorů umístit pro zefektivnění jejich práce. Výsledky simulace mohou pak sloužit jako doporučení pro dopravní podnik k tomu, jakou inspekční strategii zvolit pro optimalizaci kontrol jízdenek.
Metoda
Pro vypracování multiagentní simulace byl použit nástroj NetLogo. Výhodou daného nástroje je velmi intuitivní prostředí, ve kterém uživatel může modelovat chování agentů, vytvářet vizualizace sítě stanic, průběhu a časového vývoje sledovaných parametrů simulace. NetLogo umožňuje rychlé nastavení vstupních parametrů, jako jsou umístění a počty revizorů, a okamžité sledování dopadu změn.
Jako alternativy byly hned na začátku odmítnuty obecné programovací jazyky a knihovny (složité nastavení a podrobné kódování) a deterministické modely (nezachycují náhodu při kontrolách platnosti jízdenky). Nástroje na systémovou dynamiku, např. Vensim, by pak nedokázaly reprezentovat přesné umístění revizorů a jednotlivé agenty s platnou či neplatnou jízdenkou, proto bylo zvoleno NetLogo.
Pro agregaci dat z většího počtu běhů a analýzu výsledků z různých scénářů byl použit Microsoft Excel. Je to známé, rychlé a obecně standardní řešení pro podobné úlohy.
Model
Stanice
Základem modelu je prostředí, ve kterém bude probíhat simulace. Je to reprezentace centrální části pražského metra, která zahrnuje 3 linky (A, B, C). Vzhledem k výkonnostním a vizuálním omezením bylo rozhodnuto zobrazit pouze 5 stanic každé linky, tedy dohromady 15 stanic:
- Linka A — Staroměstská, Můstek, Muzeum, Náměstí míru, Jiřího z Poděbrad
- Linka B — Karlovo náměstí, Národní třída, Můstek, Náměstí republiky, Florenc
- Linka C — I. P. Pavlova, Muzeum, Hlavní nádraží, Florenc, Vltavská
V rámci modelu v kódu NetLogo jsou pojmenovány symbolicky (A1-A5, B1-B5, C1-C5) pro jednodušší správu rozmístění. Každá stanice je agent station, který má jako jeden z atributů název konkrétní linky, jejíž součástí je. Stanice jedné linky jsou mezi sebou pak vizuálně spojeny, obarveny a zařazeny do jednoho z globálních seznamů station-list-X, kde X je název linky. Tím způsobem je vytvořena linka jako posloupnost stanic, tři takové linky tvoří výsledné prostředí.
Revizoři
Další agenti jsou revizoři, reprezentované v modelu modrými kruhy vedle stanic. Jsou přiřazeny ke stanici, kde pak zůstávají a kontrolují pasažéry (pokud jsou na dané stanici) podle hodnoty inspection-rate. Pokud je v oblasti stanice více pasažérů, revizor zkontroluje tolik, kolik může podle této proměnné.
Pasažéři
Nakonec v modelu jsou pasažéři, které jsou před začátkem simulace čekají na náhodných stanicích. Po začátku simulace začínají pohybovat se po lince, ke které jsou přiřazeni, dokud nedorazí do cílové linky nebo nebudou zachyceni revizorem. Jejich atributy jsou:
- valid-ticket? — boolean hodnota, zda má platnou jízdenku nebo ne, podle ní je také nastavena barva pasažéra: bíla - má, fialová - ne
- state — stav, v jakém je: waiting (čeká na stanici) nebo traveling (v pohybu)
- line — linka, po které se pohybuje
- current-index — aktuální nebo poslední navštívená stanice
- destination-index — cílová stanice
Globální proměnné
- station-list-A/B/C — seznamy stanic
- inspection-rate — míra kontrol za tick
- fare-evasion-rate — míra jízd bez jízdenky
- max-ticks — počet ticků pro zastavení simulace
- passenger-spawn-rate — kolik vznikne pasažérů na stanici při generování pasažerů
- num-inspectors — počet revizorů, musí odpovídat počtu elementů v inspector-assignments
- total-fines — počet udělených pokut za běh
- total-evaders — počet černých pasažérů za běh
- inspector-assignments — seznam s se stanicemi, kde jsou revizoři, musí odpovídat num-inspectors
- total-spawned — počet pasažérů za běh
Propojení na data
Aby model mohl odpovídat realitě (s určitými omezeními), byla získána data pro daný kontext. Například míra cestujících bez platné jízdenky byla odhadnuta dle zdrojů na 8% pro Prahu, pak porovnána s jinými státy pro jistotu a byla ponechána na 8%. Výše pokuty je 1500 Kč dle DPP. Další skutečností je plat revizorů, který činí 63000 Kč (je to včetně bonusů za pokuty, ale bylo počítáno s maximem) — sice v simulaci použit nebyl, ale hodil se pro závěreční analýzu.
Zvolený počet cestujících, kteří denně využívají metro, je odvozen z dat o cestujících v MHD. 338 mil. — počet pasažérů ročně, tedy 926 tis. denně. Nejprve dané číslo bylo samozřejmě zkráceno kvůli omezením počítače a délky simulací, tedy vyděleno 10. Jelikož modelujeme jenom část metra (15/61 stanic, zhruba čtvrtina), můžeme počítat s menším počtem pasažérů, např. také s čtvrtinou. Čtvrtina od 92600 je zhruba 23000. Tak vznikl orientační počet denních cestujících v simulacích, kterého bylo pak dosaženo přes přesnější nastavení parametru passenger-spawn-rate. Jak ukážou výsledky, počty denních cestujících se pohybovaly zpravidla v rozmezí 22000-25000, což odpovídá odhadu. Podobnou logiku má i počet revizorů. Podle nalezených dat obvykle v pracovní dny "v terénu" je kolem 100 revizorů, ale realističtější a vhodnější bylo operovat s menším počtem revizorů, takže je ten počet v simulacích kolem 10, s odchylkou pro konkrétní případy.
Časová osa simulace a dopravní špičky
Co se týká času simulace, jeden běh reprezentující jeden den trvá 2280 ticků, a to bylo odvozeno následovně. Bylo zjištěno, že metro je v provozu zhruba od 5 do 24, tedy 19 hodin, neboli 1140 minut. Bylo také rozhodnuto, že za tick je vhodné mít nejmenší časovou jednotku, kterou chceme reprezentovat, v daném případě je to odhad délky jedné kontroly, cca 30 sekund. Některé kontroly mohou být skoro okamžité, občas to může trvat déle, odhad je tedy ze zkušeností autora.
V rámci simulace jsou také zohledněny dopravní špičky. Intervaly 300-700 ticků považujeme za ranní špičku a 1500-1900 za odpolední/večerní špičku. Je to realizováno přes spuštění generování pasažérů ještě jednou, což dočasně na dobu špičky zvýší počet cestujících v metru. Po skončení špičky na několik ticků zastavíme obnovení pasažérů, aby se počet cestujících vrátil na základní úroveň. Než se to ale stane, musíme také zajistit vyšší počet kontrol, a je to uděláno pomocí proměnné inspection-rate. Vyšší hodnota této proměnné znamená to, že revizor za jeden tick zkontroluje více cestujících, které se nachází kolem něj na dané stanici. To lze pozorovat na grafech: první je počet cestujících, druhý je počet udělených pokut v odpovídající časy.
TODO GRAFY
Průběh simulace
Následující 4 body proběhnou při kliknutí na tlačítko setup:
1. setup-network — nastavení sítě metra, určení souřadnic, sestavení seznamů stanic.
2. setup-parameters — nastavení globálních proměnných.
3. setup-inspectors — nastavení revizorů, vytvoří num-inspectors agentů a rozmístí je podle inspector-assignments.
4. generate-passengers — generování pasažérů: vygeneruje passenger-spawn-rate * počet stanic (120), nastaví defaultní hodnoty atributů, náhodně nastaví boolean valid-ticket? dle fare-evasion-rate a pokud je to černý pasažér, zvýší total-evaders.
Důležité procedury použité dále:
handle-passenger-death — procedura zajišťuje vznik nových pasažérů. Agenti-pasažéři se odstraní, když buď dorazí do cílové stanice nebo budou zachyceni revizorem, jsou pak ze simulace odstraněny. Na jejich místo je pak přidán nový pasažér, aby počet cestujících byl zachován. Daná procedura se nevolá během několika ticků po špičkách, aby se model vyrovnal po nárůstu cestujících během špiček.
do-walk-step — procedura pro pohyb cestujících mezi stanicemi. Každý cestující ve stavu traveling dělá krok směrem ke své cílové destinaci. Když dorazí do stanice, změní svůj current-index. Pokud je ten index stejný jako cílová stanice, volá se handle-passenger-death. Bylo rozhodnuto pro daný přístup, jelikož v původním návrhu vlaky (další agenti) neměly velký význam pro výsledky, vizuálně vypadaly mnohem hůř a zbytečně komplikovali model.
Dále při spuštění simulace se bude postupovat dle procedury go:
1. Kontrola konce simulace (zda již uběhlo 2280 ticků).
2. Pohyb pomocí do-walk-step.
3. Revizor provádí kontroly dle inspection-rate na stanici ze seznamu všech pasažérů, kdo tam je.
4. Pokud byl nalezen černý pasažér, zvyšuje total-fines a volá handle-passenger-death.
5. Pokud se nacházíme ve špičkovém intervalu, zavolá se znovu generate-passengers.
6. Tick.
Omezení
Výsledky
Závěr
Kód
Reference
- Dopravní podnik hl. m. Prahy. (b.r.). Výše přirážky a doplatková pokladna. Dopravní podnik hl. m. Prahy, akciová společnost. Získáno 10. červen 2025, z https://www.dpp.cz/jizdne/pokuty-revizori/vyse-prirazky
- Jaroševský, F. (2024, prosinec 4). Průměrný plat revizora je 63 tisíc. Půlku z toho si musejí nachytat. „Jinak to nejde,“ tvrdí nadřízení. METRO.cz. https://www.metro.cz/praha/prumerny-plat-revizora-je-63-tisic-pulku-z-toho-si-museji-nachytat-jinak-to-nejde-tvrdi-nadrizeni.A241203_155006_metro-praha_mjafi
- Newkey-Burden, C. (2025, únor 18). Fare dodging: London’s transport blight. The Week. https://theweek.com/transport/fare-dodging-londons-transport-blight
- Expats.cz (2023, červenec 9). Prague public transport inspectors handed out 250,000 fines last year. Expats.cz. https://www.expats.cz/czech-news/article/prague-public-transport-inspectors-handed-out-250-000-fines-last-year
- Pražská integrovaná doprava. (b.r.). Metro. Pražská integrovaná doprava. Získáno 10. červen 2025, z https://pid.cz/metro/
- Ubach, M. (2024, červenec 22). Tackling Fare Evasion in Bergamo: A Growing Challenge for ATB and TEB. Trainsfare. https://www.trainsfare.eu/tackling-fare-evasion-in-bergamo-a-growing-challenge-for-atb-and-teb/
