Simulace leteckých dopravců
Tato stránka slouží jako výzkumná zpráva simulace "Simulace leteckých dopravců" k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.
- Název simulace: Simulace leteckých dopravců
- Předmět: 4IT495 Simulace systémů (LS 2014/2015)
- Autor: Bc. Alois Sečkár, xseca00
- Typ modelu: Multiagentní
- Modelovací nástroj: Netlogo 5.2
Contents
Definice problému
Simulace znázorňuje několik evropských měst (vybráno 20 měst, většinou hlavních s výjimkou Zürichu a Istanbulu, které byly upřednostněny kvůli velikosti) a imaginární letecké dopravce v pěti z nich (Londýn, Paříž, Řím, Berlín a Istanbul). Ve městech se generují cestující a úkolem dopravců je tyto cestující přepravovat a generovat tak zisk. Omezeni jsou počtem možných cestujících se zájmem o přepravu a náklady na pořízení a provoz stroje.
Model má porovnat několik různých přístupů a strategií s ohledem na dosahované finanční výsledky sledovaných leteckých dopravců.
Vstupní data
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.
Reálné GPS souřadnice byly zaokrouhleny na celé stupně. Poté normalizovány, aby mohla být města jednoduše rozmístěna do plochy simulace (k délce bylo přičteno 10, od šířky odečteno 35). Pro propočty kilometrových vzdálenosti byl následně stanoven koeficient "1 čtverec plochy = 80 km", na základě porovnání reálných vzdáleností (http://www.mapcrow.info/) s výsledky dle umístění v simulaci. Vzorek 10 náhodných srovnání ukázal na průměrnou odchylku od reality kolem 13% (s výrazným extrémem 42% u vzdálenosti Praha - Berlín). Většinou dochází k podhodnocení vzdálenosti.
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia. Do úvahy byl vždy brán údaj vztahující se k rozšířené ("metropolitan") oblasti, protože u všech obyvatel spádové oblasti je pravděpodobné, že pokud kdy budou cestovat letecky, tak přes letiště v daném městě.
"Index atraktivity" byl stanoven jako umělá hodnota z údajů o počtu obyvatel, počtů turistů za rok v dané zemi (zdroj: http://data.worldbank.org/indicator/ST.INT.ARVL , data o počtech cestujících na konkrétních letiších bohužel nejsou k dispozici zdarma) a cenového indexu ve městech (zdroj: http://www.expatistan.com/cost-of-living/index). Počet obyvatel a turistů atraktivitu zvyšuje (přičemž počet turistů je brán jako lehce významnější než počet obyvatel, protože sice to jsou turisté za celou zemi a nejen za dané město, ale místní obyvatelé města jsou zase více usedlí a letiště často vůbec nevyužijí), vyšší hodnota cenového indexu naopak snižuje (není zájem do drahého města cestovat). Konstanta 10000 normalizuje číslo do rozumných hodnot v intervalu zhruba 0-30. Některé hodnoty tohoto indexu jsou diskutabilní (např. 22.74 u Istanbulu, který je poměrně levný, zároveň velmi lidnatý a v zemi s velkým počtem turistů), nicméně představuje způsob porovnání založený na reálných číslech. Hodnoty by šly upravit například pomocí přidání jakési "subjektivní" složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.
Jako referenční stroj byl zvolen Airbus A320 jakožto jeden z nejrojzříšenějších typů letadel v Evropě, díky menší velikosti a cenové dostupnosti.
Model
Předpoklady a omezení
- Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.
- Existuje jen 20 měst.
- Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).
- Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.
- Všechna letadla jsou stejného typu a mají stejné vlastnosti.
- Letadla se neopotřebovávají.
- Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.
- Cestující nerozlišují destinaci, letadlo jich vždy může nabrat tolik, kolik jich na letišti je až do své maximální kapacity.
Vlastní model
Globální proměnné
- plane-capacity - kapacita stroje (Airbus A320)
- plane-fix-costs - fixní náklady na let (hrubý odhad, v $)
- plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)
Ostatní (city-x city-y city-name city-color travel-demand) slouží pouze k předávání dat mezi procedurami
Entity modelu
- Cities - jednotlivá města (grafický tvar "dům")
- Planes - jednotlivá letadla (grafický tvar "letadlo")
Vlastnosti entit
- Cities
- name - jméno
- xcoord ycoord - souřadnice na mapě (viz vstupní data)
- population - počet obyvatel (viz vstupní data)
- atractivity - index atraktivity (viz vstupní data)
- city-passangers - cestující ve městě
- city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)
- Planes - jednotlivá letadla
- init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu
- home-x home-y home-name - údaje o domovském městě
- target-x target-y target-name - údaje o cílovém městě linky
- flight-length - délka trasy v KM
- passangers - počet cestujících
- profit - celkový zisk (ztráta)
- loss-count - počet letů ve ztrátě (5 -> odepsání stroje)
Procedury
- setup
to setup __clear-all-and-reset-ticks set plane-capacity 150 ;; airbus A320 set plane-fix-costs 150000 ;; maintenance etc. (rough estimation) set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320 ;; 1 km = 0.54 nautical mile ask patches [ set pcolor white; ] set-default-shape turtles "house" setup-cities set-default-shape turtles "airplane" end
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře "setup-cities" nastavení vlastností jednotlivých měst.
- select-target-city
to select-target-city ;; find one random city ask one-of cities [ set city-x xcoord set city-y ycoord set city-name name set city-color color ] end
Náhodně vybere jedno město a nastaví jeho vlastnosti do pomocných globálních proměnných pro předání nově se vytvářející entitě typu "plane".
- step
to step fly generate-planes if (ticks mod 20 = 0) [ generate-passangers ] tick end
Jeden krok simulace. Procedura "fly" pohybuje letadly, "generate-planes" zvažuje vytvoření nových letadel a "generate-passangers" vyvtváří ve městech čekající cestující.
- fly
Pohne všemi existujícími letadly. Pokud se objeví v jednom z cílových měst, ukončí a vyhodnotí let a zahájí let zpět.
- generate-planes
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.
- generate-passangers
to generate-passangers ask cities [ let passanger-index (population * atractivity / 5000000) let new-passangers round((random-normal 1 0.5) * passanger-index) set city-passangers (city-passangers + new-passangers) ] end
Pro všechna města vypočte index cestujících založený na populaci města a indexu atraktivity a poté náhodně vygeneruje počet nových cestujících a přidá je do města.
Grafické prvky
- Tlačítka pro nastavení simulace a zahájení provozu.
- Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.