Simulace leteckých dopravců

From Simulace.info
Revision as of 16:35, 8 June 2015 by Ellrohir (talk | contribs) (založení stránky)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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í

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é

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.


Výsledky

Kód

Reference