<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.simulace.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ellrohir</id>
	<title>Simulace.info - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.simulace.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ellrohir"/>
	<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php/Special:Contributions/Ellrohir"/>
	<updated>2026-07-27T16:28:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://www.simulace.info/index.php?title=Conceptual_graphs/cs&amp;diff=9922</id>
		<title>Conceptual graphs/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Conceptual_graphs/cs&amp;diff=9922"/>
		<updated>2015-06-15T11:07:45Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Graf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Konceptuálním grafem se v matematickém pojetí rozumí diagram vyjadřující vztahy a propojení mezi objekty. Slouží pro formální reprezentaci znalostí. Myšlenka pochází ze 70. let a jejím autorem je americký informatik [http://www.jfsowa.com/pubs/index.htm John F. Sowa]&amp;lt;ref&amp;gt;&lt;br /&gt;
Conceptual Graphs for a Data Base Interface. SOWA, John F. Dostupné z: http://ieeexplore.ieee.org/xpl/articleDetails.jsp?&amp;amp;arnumber=5391080&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Graf ==&lt;br /&gt;
&lt;br /&gt;
Grafy v matematickém slova smyslu se zabývá teorie grafů, jejíž základy stanovil v první polovině 18. století švýcarský matematik  [http://www.biography.com/people/leonhard-euler-21342391 Leonhard Euler]. Grafy reprezentují množiny objektů. Tvoří je '''vrcholy''' (uzly) a '''hrany''' mezi nimi. Grafická reprezentace vrcholů jsou body, hran čáry mezi nimi. Hrany mohou být orientované (mají jeden vrchol počáteční a druhý koncový), což značí šipka směřující do koncového vrcholu.&lt;br /&gt;
&lt;br /&gt;
Přehled základních pojmů nabízí následující obrázek&amp;lt;ref&amp;gt;Zdroj: http://cs.wikipedia.org/wiki/Graf_%28teorie_graf%C5%AF%29#/media/File:Graf.svg&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:teorie-grafu.png]]&lt;br /&gt;
&lt;br /&gt;
== Konceptuální graf ==&lt;br /&gt;
&lt;br /&gt;
=== Historie ===&lt;br /&gt;
&lt;br /&gt;
=== Popis ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:Teorie-grafu.png&amp;diff=9921</id>
		<title>File:Teorie-grafu.png</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:Teorie-grafu.png&amp;diff=9921"/>
		<updated>2015-06-15T11:05:24Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: Základní pojmy z teorie grafů v názorném zobrazení&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Základní pojmy z teorie grafů v názorném zobrazení&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Conceptual_graphs/cs&amp;diff=9920</id>
		<title>Conceptual graphs/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Conceptual_graphs/cs&amp;diff=9920"/>
		<updated>2015-06-15T11:04:52Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: založení stránky&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Úvod ==&lt;br /&gt;
&lt;br /&gt;
Konceptuálním grafem se v matematickém pojetí rozumí diagram vyjadřující vztahy a propojení mezi objekty. Slouží pro formální reprezentaci znalostí. Myšlenka pochází ze 70. let a jejím autorem je americký informatik [http://www.jfsowa.com/pubs/index.htm John F. Sowa]&amp;lt;ref&amp;gt;&lt;br /&gt;
Conceptual Graphs for a Data Base Interface. SOWA, John F. Dostupné z: http://ieeexplore.ieee.org/xpl/articleDetails.jsp?&amp;amp;arnumber=5391080&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Graf ==&lt;br /&gt;
&lt;br /&gt;
Grafy v matematickém slova smyslu se zabývá teorie grafů, jejíž základy stanovil v první polovině 18. století švýcarský matematik  [http://www.biography.com/people/leonhard-euler-21342391 Leonhard Euler]. Grafy reprezentují množiny objektů. Tvoří je '''vrcholy''' (uzly) a '''hrany''' mezi nimi. Grafická reprezentace vrcholů jsou body, hran čáry mezi nimi. Hrany mohou být orientované (mají jeden vrchol počáteční a druhý koncový), což značí šipka směřující do koncového vrcholu.&lt;br /&gt;
&lt;br /&gt;
[[File:teorie-grafu.png]]&lt;br /&gt;
&lt;br /&gt;
== Konceptuální graf ==&lt;br /&gt;
&lt;br /&gt;
=== Historie ===&lt;br /&gt;
&lt;br /&gt;
=== Popis ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=SS_2014/2015/cs&amp;diff=9640</id>
		<title>SS 2014/2015/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=SS_2014/2015/cs&amp;diff=9640"/>
		<updated>2015-06-08T21:47:21Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Vypracovaná témata LS 2014/2015 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:LS 2014/2015}}&lt;br /&gt;
&lt;br /&gt;
Semestrální práce (simulace) z letního semestru 2013/2014. Sem přidejte odkaz na stránku s Vaší prací.&lt;br /&gt;
Nejprve je třeba nechat schválit [[Assignment SS 2014/2015/cs|zadání práce]].&lt;br /&gt;
&lt;br /&gt;
=Vypracovaná témata LS 2014/2015=&lt;br /&gt;
* Ondřej Cahlík, xcaho01 - [[Výroba elektřiny fotovoltaickými panely pro pokrytí denní spotřeby v celoročním provozu]]&lt;br /&gt;
* Vojtěch Slánský, xslav21 - [[Analýza poptávky v případě preference krátkodobého zisku před dlouhodobým]]&lt;br /&gt;
* Maxim Rytych, xrytm00 - [[Vliv přetlaku vzniklého explozí výbušniny]]&lt;br /&gt;
* Jakub Pokorný, xpokj24 - [[Bezpečnost a plynulost provozu na křižovatce a kruhovém objezdu]]&lt;br /&gt;
* Aneta Švondrová, xsvoa11 - [[Optimalizace nakupovaných leteckých kapacit]]&lt;br /&gt;
* Ladislav Žižka, xzizl00 - [[Investování do dividendových akcií z DJIA]]&lt;br /&gt;
* Tomáš Daněk, xdant05 - [[Odhad parametrů systému umělého zavlažování pro zahradu s rajčaty]]&lt;br /&gt;
* Alois Sečkár, xseca00 - [[Simulace leteckých dopravců]]&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:Airlines.nlogo&amp;diff=9639</id>
		<title>File:Airlines.nlogo</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:Airlines.nlogo&amp;diff=9639"/>
		<updated>2015-06-08T21:42:06Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: Zdrojový soubor simulace (xseca00)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zdrojový soubor simulace (xseca00)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9638</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9638"/>
		<updated>2015-06-08T21:40:34Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Výsledky */  - provedené simulace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-flights - počet letů celkem&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 100000 [ stop ] ;; stop simm after 100k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; increase total flights made&lt;br /&gt;
      set total-flights (total-flights + 1)&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand ((city-revenues / 1000000) + random(city-risk-desire) - random(city-planes * 2) - random(75))&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu letů (celkem/ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
Bylo provedeno několik průběhů simulací s 100k kroky (ticks) s odlišným nastavením parametrů ''passangers-level'' (kdy začne město uvažovat o novém letadlu) a ''risk-desire'' (kolik jsou města ochotná se zadlužit).&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 1000; risk-desire = 100;&lt;br /&gt;
** Zakoupeno 124 letadel, 101 v provozu, 1 zrušeno, 22 odepsáno&lt;br /&gt;
** Celkem 29238 letů, 5608 ztrátových, 8775 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 433, Paříž 1735, Řím 680, Berlín 381, Istanbul 2480&lt;br /&gt;
** Řím a Berlín nezakoupily ani jedno letadlo&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 1000; risk-desire = 25;&lt;br /&gt;
** Zakoupeno 74 letadel, 66 v provozu, 0 zrušeno, 8 odepsáno&lt;br /&gt;
** Celkem 13514 letů, 1709 ztrátových, 3298 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 810, Paříž 1653, Řím 460, Berlín 430, Istanbul 1952&lt;br /&gt;
** Řím a Berlín nezakoupily ani jedno letadlo&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 1000; risk-desire = 500;&lt;br /&gt;
** Zakoupeno 383 letadel, 305 v provozu, 1 zrušeno, 77 odepsáno&lt;br /&gt;
** Celkem 94131 letů, 18639 ztrátových, 29287 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 562, Paříž 1303, Řím 523, Berlín 379, Istanbul 1395&lt;br /&gt;
** Řím a Berlín nezakoupily ani jedno letadlo&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 300; risk-desire = 100;&lt;br /&gt;
** Zakoupeno 197 letadel, 156 v provozu, 4 zrušeno, 37 odepsáno&lt;br /&gt;
** Celkem 46044 letů, 7820 ztrátových, 13262 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 679, Paříž 1881, Řím 214, Berlín 67, Istanbul 1436&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 300; risk-desire = 500;&lt;br /&gt;
** Zakoupeno 537 letadel, 362 v provozu, 62 zrušeno, 113 odepsáno&lt;br /&gt;
** Celkem 126658 letů, 25971 ztrátových, 47213 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 633, Paříž 2165, Řím 364, Berlín 157, Istanbul 907&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 2000; risk-desire = 500;&lt;br /&gt;
** Zakoupeno 323 letadel, 255 v provozu, 7 zrušeno, 61 odepsáno&lt;br /&gt;
** Celkem 69485 letů, 10632 ztrátových, 21025 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 842, Paříž 1183, Řím 446, Berlín 166, Istanbul 1367&lt;br /&gt;
** Londýn, Řím a Berlín nezakoupily ani jedno letadlo. Istanbul výrazně v zisku (583 mil. $)&lt;br /&gt;
&lt;br /&gt;
* passangers-level = 2000; risk-desire = 25;&lt;br /&gt;
** Zakoupeno 33 letadel, 28 v provozu, 0 zrušeno, 5 odepsáno&lt;br /&gt;
** Celkem 4804 letů, 735 ztrátových, 1543 neobsazených&lt;br /&gt;
** Čekající pasažéři: Londýn 868, Paříž 2053, Řím 502, Berlín 359, Istanbul 1785&lt;br /&gt;
** Londýn, Řím a Berlín nezakoupily ani jedno letadlo.&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9637</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9637"/>
		<updated>2015-06-08T21:20:09Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Grafické prvky */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-flights - počet letů celkem&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 100000 [ stop ] ;; stop simm after 100k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; increase total flights made&lt;br /&gt;
      set total-flights (total-flights + 1)&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand ((city-revenues / 1000000) + random(city-risk-desire) - random(city-planes * 2) - random(75))&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu letů (celkem/ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9636</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9636"/>
		<updated>2015-06-08T21:19:49Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Monitoring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-flights - počet letů celkem&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 100000 [ stop ] ;; stop simm after 100k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; increase total flights made&lt;br /&gt;
      set total-flights (total-flights + 1)&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand ((city-revenues / 1000000) + random(city-risk-desire) - random(city-planes * 2) - random(75))&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu nepovedených letů (ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9635</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9635"/>
		<updated>2015-06-08T21:19:25Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Procedury */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 100000 [ stop ] ;; stop simm after 100k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; increase total flights made&lt;br /&gt;
      set total-flights (total-flights + 1)&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand ((city-revenues / 1000000) + random(city-risk-desire) - random(city-planes * 2) - random(75))&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu nepovedených letů (ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9634</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9634"/>
		<updated>2015-06-08T21:12:02Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Procedury */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 100000 [ stop ] ;; stop simm after 100k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand ((city-revenues / 1000000) + random(city-risk-desire) - random(city-planes * 2) - random(75))&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu nepovedených letů (ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9633</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9633"/>
		<updated>2015-06-08T21:11:23Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Procedury */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 50000 [ stop ] ;; stop simm after 50k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand ((city-revenues / 1000000) + random(city-risk-desire) - random(city-planes * 2) - random(75))&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu nepovedených letů (ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9632</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9632"/>
		<updated>2015-06-08T21:10:37Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Grafické prvky */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 50000 [ stop ] ;; stop simm after 50k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; how many other planes failed?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand (city-revenues / 1000000) + random(city-risk) - random(city-planes * 2) - (random(scrapped-planes)) - random(70)&lt;br /&gt;
      set test-value rand&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu nepovedených letů (ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9631</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9631"/>
		<updated>2015-06-08T21:09:50Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: rozšíření&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Model má sledovat letecké dopravce a jimi generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
Počet obyvatel byl čerpán z mezinárodní internetové encyklopedie Wikipedia, která dále referuje na poslední provedená sčítání lidu. Do úvahy byl vždy brán údaj vztahující se k rozšířené (&amp;quot;metropolitan&amp;quot;) 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ě. Údaj byl vždy zaokrouhlen na tisíce.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
====Nastavení====&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
* plane-duration - výdrž letadla do odepsání pro stáří (v km)&lt;br /&gt;
* plane-price - nákupní cena letadla (dle cen A320)&lt;br /&gt;
====Monitoring====&lt;br /&gt;
* total-loss-flights - počet letů, které skončily ztrátou (náklady převýšily zisk z letenek)&lt;br /&gt;
* total-unloaded-flights - počet letů zaplněných méně než z 90%&lt;br /&gt;
* generated-planes - počet koupených letadel&lt;br /&gt;
* scrapped-planes - počet odepsaných letadel (ztrátové nebo málo naplněné)&lt;br /&gt;
* retired-planes - počet odepsaných letadel (vysloužilé)&lt;br /&gt;
&lt;br /&gt;
Ostatní slouží pouze k předávání dat mezi procedurami (city-x city-y city-name city-color travel-demand)modelů&lt;br /&gt;
&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  ;; set global variable settings&lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 100000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
  set plane-duration 500000 ;; kilometers before being scrapped&lt;br /&gt;
  set plane-price 50000000 ;; in $&lt;br /&gt;
  ;; paint world&lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  ;; paint cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  ;; prepare for painting planes&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''setup-cities'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; prepare cities&lt;br /&gt;
to setup-cities&lt;br /&gt;
  ;; create 20 cities&lt;br /&gt;
  create-cities 20 [set color one-of base-colors]&lt;br /&gt;
  ;; setup values for every city&lt;br /&gt;
  ask city 0 [&lt;br /&gt;
    set name &amp;quot;London&amp;quot;&lt;br /&gt;
    set xcoord 10&lt;br /&gt;
    set ycoord 16&lt;br /&gt;
    setxy 10 16&lt;br /&gt;
    set population 13614000&lt;br /&gt;
    set atractivity 8.27&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  { ... }&lt;br /&gt;
&lt;br /&gt;
  ;; generate initial number of passangers to cities&lt;br /&gt;
  ask cities [&lt;br /&gt;
    set city-passangers (round(random-normal (atractivity * 50) (200 / atractivity)))&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení hodnot atributů pro jednotlivá města, následně vygenerování náhodného výchozího počtu cestujících.&lt;br /&gt;
&lt;br /&gt;
*'''add-plane'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; add new plane into simulation&lt;br /&gt;
to add-plane  &lt;br /&gt;
  create-planes 1 [ &lt;br /&gt;
    ;; set origin into according to set-up globals&lt;br /&gt;
    set home-x city-x &lt;br /&gt;
    set home-y city-y&lt;br /&gt;
    set home-name city-name&lt;br /&gt;
    set color city-color&lt;br /&gt;
    ;; place plane to origin city &lt;br /&gt;
    setxy home-x home-y  &lt;br /&gt;
    ;; set initial marker - so it doesn't count flight costs for the first time   &lt;br /&gt;
    set init true &lt;br /&gt;
    ;; set how long the plane will last (kilometers)&lt;br /&gt;
    set duration plane-duration&lt;br /&gt;
    ;; set random destination - must be different from origin&lt;br /&gt;
    while [flight-length &amp;lt; 1] [&lt;br /&gt;
      select-target-city &lt;br /&gt;
      ;; set target info&lt;br /&gt;
      set target-x city-x&lt;br /&gt;
      set target-y city-y&lt;br /&gt;
      set target-name city-name&lt;br /&gt;
      ;; elaborate distance of the flight&lt;br /&gt;
      set flight-length round(sqrt(((home-x - target-x)*(home-x - target-x)+((home-y - target-y)*(home-y - target-y))))) * 80 ;; 80 is squares-to-kilometers factor&lt;br /&gt;
    ]&lt;br /&gt;
    ;;set plane heading to destination&lt;br /&gt;
    facexy target-x target-y &lt;br /&gt;
  ]&lt;br /&gt;
  ;; upgrade global marker&lt;br /&gt;
  set generated-planes (generated-planes + 1)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vyvtoření nového letadla. Nastavení a umístění do výchozího města, poté náhodný výběr cílového města a nastavení trasy.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; pick one random citiy&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    ;; set global variables&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; one simulation step&lt;br /&gt;
to step&lt;br /&gt;
  ;; handle planes movement&lt;br /&gt;
  fly&lt;br /&gt;
  ;; handle possible plane generation&lt;br /&gt;
  generate-planes&lt;br /&gt;
  ;; handle passanger generation&lt;br /&gt;
  generate-passangers&lt;br /&gt;
  ;;&lt;br /&gt;
  tick&lt;br /&gt;
  if ticks &amp;gt;= 50000 [ stop ] ;; stop simm after 50k ticks&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane movement&lt;br /&gt;
to fly&lt;br /&gt;
  ask planes [&lt;br /&gt;
    ;; move planes +0.1 towards current direction&lt;br /&gt;
    jump 0.1&lt;br /&gt;
    ;; check if plane didn't reach its destination&lt;br /&gt;
    ;; it needs to be APPROX at the cooridnates, not exactly on them&lt;br /&gt;
    let finish 0&lt;br /&gt;
    ;; check for target city&lt;br /&gt;
    if ((abs (xcor - target-x) &amp;lt; 0.1) AND (abs (ycor - target-y) &amp;lt; 0.1) ) [&lt;br /&gt;
      ;; the initial phase is over&lt;br /&gt;
      set init false&lt;br /&gt;
      ;; plane reached target destination&lt;br /&gt;
      set finish 2&lt;br /&gt;
    ]&lt;br /&gt;
    ;; check for home city&lt;br /&gt;
    if ((abs (xcor - home-x) &amp;lt; 0.1) AND (abs (ycor - home-y) &amp;lt; 0.1)) [&lt;br /&gt;
      ;; plane reached home destination&lt;br /&gt;
      set finish 1&lt;br /&gt;
    ]&lt;br /&gt;
    ;; if some action should be taken&lt;br /&gt;
    if ((finish &amp;gt; 0) AND (init = false)) [&lt;br /&gt;
      ;; set variables for searching for specific city&lt;br /&gt;
      let match-home home-name&lt;br /&gt;
      let match-target target-name&lt;br /&gt;
      ;; count profit/loss from flight&lt;br /&gt;
      let income (passangers * 2.5 * flight-length)&lt;br /&gt;
      let costs (plane-fix-costs +  plane-var-costs * flight-length)   &lt;br /&gt;
      let outcome (income - costs)&lt;br /&gt;
      ;; check if plane isn't unprofitable and unloaded&lt;br /&gt;
      ;; plane is allowed to be unprofitable/unloaded for couple of times...&lt;br /&gt;
      ifelse (outcome &amp;lt; 0) &lt;br /&gt;
        [ set loss-count (loss-count + 1) &lt;br /&gt;
          set total-loss-flights (total-loss-flights + 1) ]&lt;br /&gt;
        [ set loss-count 0 ]&lt;br /&gt;
      ifelse (passangers &amp;lt; (plane-capacity * 9 / 10)) &lt;br /&gt;
        [ set unloaded-count (unloaded-count + 1)&lt;br /&gt;
          set total-unloaded-flights (total-unloaded-flights + 1) ]&lt;br /&gt;
        [ set unloaded-count 0 ]&lt;br /&gt;
      ;; kill plane if needed&lt;br /&gt;
      if ((loss-count &amp;gt;= 5) OR (unloaded-count &amp;gt;= 10)) [&lt;br /&gt;
        set scrapped-planes (scrapped-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; adjust plane duration&lt;br /&gt;
      set duration (duration - flight-length)&lt;br /&gt;
      if (duration &amp;lt;= 0) [&lt;br /&gt;
        set retired-planes (retired-planes + 1)&lt;br /&gt;
        ask cities [&lt;br /&gt;
            if (name = match-home) [&lt;br /&gt;
              set city-planes (city-planes - 1)&lt;br /&gt;
            ]&lt;br /&gt;
          ]&lt;br /&gt;
        die&lt;br /&gt;
      ]&lt;br /&gt;
      ;; elaborate passangers&lt;br /&gt;
      let seats plane-capacity&lt;br /&gt;
      ask cities [&lt;br /&gt;
        ;; find home city and add profits&lt;br /&gt;
        if (name = match-home) [&lt;br /&gt;
          set city-revenues (city-revenues + outcome)&lt;br /&gt;
        ]&lt;br /&gt;
        ;; find current city and get travel demand&lt;br /&gt;
        if (((finish = 1) AND (name = match-target)) OR ((finish = 2) AND (name = match-home)))[&lt;br /&gt;
          ifelse (city-passangers &amp;gt;= seats) &lt;br /&gt;
          [ set city-passangers (city-passangers - seats) ] &lt;br /&gt;
          [ set seats city-passangers&lt;br /&gt;
            set city-passangers 0 ]&lt;br /&gt;
        ]&lt;br /&gt;
      ]&lt;br /&gt;
      set passangers seats&lt;br /&gt;
      ;; set off to other city&lt;br /&gt;
      ifelse (finish = 2) &lt;br /&gt;
        [ facexy home-x home-y ]&lt;br /&gt;
        [ facexy target-x target-y]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; passanger generation&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    ;; protect from division by zero&lt;br /&gt;
    let pass city-passangers&lt;br /&gt;
    if (pass = 0) &lt;br /&gt;
      [ set pass 1 ]&lt;br /&gt;
    ;; count index from population and atractivity&lt;br /&gt;
    let passanger-index ((population * atractivity) / 2000000)&lt;br /&gt;
    ;; generate random amount of new passangers&lt;br /&gt;
    let new-passangers round((random-normal 1 0.7) * passanger-index)&lt;br /&gt;
    ;; some of waiting passagers dont want to wait&lt;br /&gt;
    let left-passangers round(random-normal (city-passangers / 15) 10)&lt;br /&gt;
    ;; adjust amount&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers - left-passangers)&lt;br /&gt;
    if (city-passangers &amp;lt; 0) [&lt;br /&gt;
      set city-passangers 0&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;; plane generation&lt;br /&gt;
to generate-planes&lt;br /&gt;
  ;; initially - DON'T add anything&lt;br /&gt;
  let addplane false&lt;br /&gt;
  ;; select one of possible cities (London, Paris, Rome, Berlin, Istanbul)&lt;br /&gt;
  let rand random(5)&lt;br /&gt;
  ask city rand [&lt;br /&gt;
    ;; decide whether to buy or don't buy new plane&lt;br /&gt;
    ;; are there enough ppl waiting?&lt;br /&gt;
    ;; do we have enough money?&lt;br /&gt;
    ;; ain't we have enough planes already?&lt;br /&gt;
    ;; how many other planes failed?&lt;br /&gt;
    ;; random factor...&lt;br /&gt;
    if (city-passangers &amp;gt;= passangers-level) [&lt;br /&gt;
      set rand (city-revenues / 1000000) + random(city-risk) - random(city-planes * 2) - (random(scrapped-planes)) - random(70)&lt;br /&gt;
      set test-value rand&lt;br /&gt;
      if (rand &amp;gt; 0) [&lt;br /&gt;
        ;; set initial variables for plane&lt;br /&gt;
        set city-x xcoord&lt;br /&gt;
        set city-y ycoord&lt;br /&gt;
        set city-name name&lt;br /&gt;
        set city-color color&lt;br /&gt;
        ;; &amp;quot;buy&amp;quot; new plane&lt;br /&gt;
        set city-revenues (city-revenues - plane-price) &lt;br /&gt;
        set city-planes (city-planes + 1)&lt;br /&gt;
        ;; add-plane marker&lt;br /&gt;
        set addplane true  &lt;br /&gt;
      ]&lt;br /&gt;
    ]&lt;br /&gt;
  ]&lt;br /&gt;
  ;; if decision was made - add new plane&lt;br /&gt;
  if (addplane = true) [&lt;br /&gt;
    add-plane&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
* Monitory počtu letadel (vyrobených/odepsaných/vyřazených) a počtu nepovedených letů (ztrátových/neobsazených).&lt;br /&gt;
* Posuvníky k nastavení parametrů sloužících při rozhodování o pořízení nového letadla (počet čekajících cestujících, při kterém&lt;br /&gt;
stojí za to uvažovat o dalším stroji + sklon k zadlužování se (půjčky na nákup nového letadla)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Zhodnocení=&lt;br /&gt;
Bohužel musím na rovinu přiznat, že jsem se v simulování ztratil a utopil. Nepodařilo se mi sestavit model takový, aby působil reálně. Hlavní problém byl v mechanismu pořizování nových letadel (města jich často koupí nesmyslně mnoho) a vztahu nákladů a výnosů z letů (i poloprázdné letadlo vydělává). Model také již sám o sobě příliš abstrahuje od reality (tvorba cestujících, náklady na let, apod.)&lt;br /&gt;
&lt;br /&gt;
Výsledkem je tak spíše hříčka demonstrující program NetLogo než cokoliv jiného. Nicméně doufám, že úplně k ničemu práce nebyla a že půjde alespoň nějak ohodnotit, byť nečekám mnoho bodů :(&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9621</id>
		<title>Simulace leteckých dopravců</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Simulace_leteck%C3%BDch_dopravc%C5%AF&amp;diff=9621"/>
		<updated>2015-06-08T14:35:10Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: založení stránky&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tato stránka slouží jako výzkumná zpráva simulace '''&amp;quot;Simulace leteckých dopravců&amp;quot;''' k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze.&lt;br /&gt;
&lt;br /&gt;
*'''Název simulace''': Simulace leteckých dopravců&lt;br /&gt;
&lt;br /&gt;
*'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
*'''Autor''': Bc. Alois Sečkár, xseca00&lt;br /&gt;
&lt;br /&gt;
*'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
*'''Modelovací nástroj''': [https://ccl.northwestern.edu/netlogo/index.shtml Netlogo 5.2]&lt;br /&gt;
&lt;br /&gt;
=Definice problému=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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ů.&lt;br /&gt;
&lt;br /&gt;
=Vstupní data=&lt;br /&gt;
&lt;br /&gt;
Vstupem byla tabulka měst s GPS souřadnicemi, počtem obyvatel a vypočteným indexem atraktivity.&lt;br /&gt;
&lt;br /&gt;
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 ''&amp;quot;1 čtverec plochy = 80 km&amp;quot;'', 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.&lt;br /&gt;
&lt;br /&gt;
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é (&amp;quot;metropolitan&amp;quot;) 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ě.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Index atraktivity&amp;quot; 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 &amp;quot;subjektivní&amp;quot; složky, která by například Paříž či Lodnýn před Istanbulem zvýhodnila, ale už by nešlo o fakta, ale dojmy.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Model=&lt;br /&gt;
==Předpoklady a omezení==&lt;br /&gt;
* Jedno letadlo představuje jednu linku (let) mezi dvěma městy. Letadla kontinuálně létají sem a tam.&lt;br /&gt;
* Existuje jen 20 měst.&lt;br /&gt;
* Vzálenosti mezi městy nejsou vždy zcela přesné (odchylka od reality v průměru 10-15%).&lt;br /&gt;
* Jsou zanedbány atmosférické, váhové a jiné vlivy na spotřebu paliva a náklady.&lt;br /&gt;
* Všechna letadla jsou stejného typu a mají stejné vlastnosti.&lt;br /&gt;
* Letadla se neopotřebovávají.&lt;br /&gt;
* Index atraktivity dle zvolené metodiky plně nekoresponduje s realitou.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Vlastní model==&lt;br /&gt;
===Globální proměnné===&lt;br /&gt;
* plane-capacity - kapacita stroje (Airbus A320)&lt;br /&gt;
* plane-fix-costs - fixní náklady na let (hrubý odhad, v $)&lt;br /&gt;
* plane-var-costs - variabilní náklady na 1 km v $ (http://planes.axlegeeks.com/l/230/Airbus-A320)&lt;br /&gt;
&lt;br /&gt;
Ostatní (city-x city-y city-name city-color travel-demand) slouží pouze k předávání dat mezi procedurami&lt;br /&gt;
===Entity modelu===&lt;br /&gt;
* ''Cities'' - jednotlivá města (grafický tvar &amp;quot;dům&amp;quot;)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla (grafický tvar &amp;quot;letadlo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Vlastnosti entit===&lt;br /&gt;
* ''Cities''&lt;br /&gt;
** name - jméno&lt;br /&gt;
** xcoord ycoord - souřadnice na mapě (viz vstupní data)&lt;br /&gt;
** population - počet obyvatel (viz vstupní data)&lt;br /&gt;
** atractivity - index atraktivity (viz vstupní data)&lt;br /&gt;
** city-passangers - cestující ve městě&lt;br /&gt;
** city-revenues - zisk místní letecké společnosti v $ (smysl má pouze u 5 vybraných měst)&lt;br /&gt;
* ''Planes'' - jednotlivá letadla&lt;br /&gt;
** init - pouze technická proměnná, aby se založení stroje ihned nezapočítalo jako dokončení letu&lt;br /&gt;
** home-x home-y home-name - údaje o domovském městě&lt;br /&gt;
** target-x target-y target-name - údaje o cílovém městě linky&lt;br /&gt;
** flight-length - délka trasy v KM&lt;br /&gt;
** passangers - počet cestujících&lt;br /&gt;
** profit - celkový zisk (ztráta)&lt;br /&gt;
** loss-count - počet letů ve ztrátě (5 -&amp;gt; odepsání stroje)&lt;br /&gt;
&lt;br /&gt;
===Procedury===&lt;br /&gt;
*'''setup'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to setup&lt;br /&gt;
  __clear-all-and-reset-ticks&lt;br /&gt;
  &lt;br /&gt;
  set plane-capacity 150 ;; airbus A320&lt;br /&gt;
  set plane-fix-costs 150000 ;; maintenance etc. (rough estimation)&lt;br /&gt;
  set plane-var-costs 11.64 * 0.54 ;; fuel consumption cost per nautical mile = http://planes.axlegeeks.com/l/230/Airbus-A320&lt;br /&gt;
                                   ;; 1 km = 0.54 nautical mile&lt;br /&gt;
   &lt;br /&gt;
  ask patches [&lt;br /&gt;
    set pcolor white;&lt;br /&gt;
  ]&lt;br /&gt;
  &lt;br /&gt;
  set-default-shape turtles &amp;quot;house&amp;quot;&lt;br /&gt;
  setup-cities&lt;br /&gt;
  set-default-shape turtles &amp;quot;airplane&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nastavení simulace. Nastavení globálních proměnný, přebarvení polí, v proceduře &amp;quot;setup-cities&amp;quot; nastavení vlastností jednotlivých měst.&lt;br /&gt;
&lt;br /&gt;
*'''select-target-city'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to select-target-city&lt;br /&gt;
  ;; find one random city&lt;br /&gt;
  ask one-of cities [&lt;br /&gt;
    set city-x xcoord&lt;br /&gt;
    set city-y ycoord&lt;br /&gt;
    set city-name name&lt;br /&gt;
    set city-color color&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;plane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*'''step'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to step&lt;br /&gt;
  fly&lt;br /&gt;
  generate-planes&lt;br /&gt;
  if (ticks mod 20 = 0) [&lt;br /&gt;
    generate-passangers&lt;br /&gt;
  ]&lt;br /&gt;
  tick&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeden krok simulace. Procedura &amp;quot;fly&amp;quot; pohybuje letadly, &amp;quot;generate-planes&amp;quot; zvažuje vytvoření nových letadel a &amp;quot;generate-passangers&amp;quot; vyvtváří ve městech čekající cestující.&lt;br /&gt;
&lt;br /&gt;
*'''fly'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*'''generate-planes'''&lt;br /&gt;
&lt;br /&gt;
Sledovaná města vyhodnocují situaci a mohou se rozhodnout nakoupit nové letadlo na novou linku.&lt;br /&gt;
&lt;br /&gt;
*'''generate-passangers'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
to generate-passangers&lt;br /&gt;
  ask cities [&lt;br /&gt;
    let passanger-index (population * atractivity / 5000000)&lt;br /&gt;
    let new-passangers round((random-normal 1 0.5) * passanger-index)&lt;br /&gt;
    set city-passangers (city-passangers + new-passangers)&lt;br /&gt;
  ]&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Grafické prvky=== &lt;br /&gt;
* Tlačítka pro nastavení simulace a zahájení provozu.&lt;br /&gt;
* Monitory zisku sledovaných města a počtu čekajících pasažérů v nich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Výsledky=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kód=&lt;br /&gt;
*[[File:Airlines.nlogo]]&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9301</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9301"/>
		<updated>2015-05-17T20:44:11Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Parametry */  - doplnění&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie &amp;lt;strike&amp;gt;pohybu mezi městy&amp;lt;/strike&amp;gt; tvorby leteckých linek. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik &amp;lt;strike&amp;gt;náhodně generovaných&amp;lt;/strike&amp;gt; Evropských měst (město určuje geografická pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace &lt;br /&gt;
* &amp;lt;strike&amp;gt;příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* letadla se pohybují po daných linkách, které generuje umělá inteligence&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti (přímá úměrnost) a atraktivity destinace (nepřímá úměrnost)&lt;br /&gt;
* linky dynamicky v čase vznikají a zanikají...umělá inteligence uvažuje při tvorbě potenciál linky (odvislý od počtu cestujících, vzdálenosti a ceny letenky), při rušení spoje rentabilitu&lt;br /&gt;
* společnost má domovské město, ze kterého vede své linky&lt;br /&gt;
* UI reprezentující letecké společnosti sledují různé vzorce chování...zaznamenávají se hospodářské výsledky jednotlivých firem...vítězí společnost s největším ziskem po odsimulování určitého období&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;br /&gt;
&lt;br /&gt;
: Pěkný nápad, ale chtělo by to přiblížit jej realitě, aby výstupy byly k něčemu dobré. Moje návrhy: nepracovat s městy náhodně generovanými, ale s reálnou mapou - tím by se zároveň dalo pracovat s reálnými počty cestujících, atraktivitou destinace, případně sezóností, apod. Dále: letadlo si asi nevybírá destinaci, ale je tam vedena linka (normální či názkonákladová) nebo spoj (charter). Náklady na let nejsou dány jen vzdáleností (palivem), ale i atraktivitou destinace - konkurencí. To je mimochodem jeden prvek, kterž byste mohl zkoumat - jak se bude vyvíjet konkurence na různých linkách. Může se Vám stát, že některé linky budou přecpané, jiná města zůstanou naopak bez spojení. Atd. Netvrdím, že tam musíte implementovat vše zmíněné přesně jak jsem psal nebo že tam naopak nemůžete řešit ještě něco jiného, ale zkuste to prosím promyslet zhruba tímto směrem. Bude to trochu náročné na získání podkladových dat, ale to už k tomu patří. [[User:Tomáš|Tomáš]] 15:15, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Skutečná města souhlasím, vyberu tedy pár Evropských metropolí a dohledám data. Rozdělení normální/lowcost dává smysl, řešit paralelně pravidelné linky a chartery mi připadá trochu složité, ale pokud to bude požadavek, zvládnu to. Jen si teď moc nedovedu představit ten vliv atraktivity (konkurence) na náklady na let. A taky - jakým způsobem vytvářet ty linky? Jak uchopit implementaci té umělé inteligence, která bude linky dynamicky vytvářet/rušit? [[User:Ellrohir|Alois Sečkár]] 21:51, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: To co jsem tam psal, byly jen nápady. Souhlasím asi s Vámi, že v modelu, jaký navrhujete, striktní rozdělení normální/low cost/charter asi nemá smysl, ostatně i v realitě neexistuje ostrá dělící čára. U toho vlivu atraktivity na náklady byla moje chyba, měl jsem na mysli ceny (letenkz do frekventovaných destinací bývají levnější kvůli konkurenci). Nicméně, paradoxně i vliv atraktivity na náklady existuje a to v ceně letištních slotů. Velká, plně koordinovaná letiště s velkým provozem mají striktně rozdělené časy a dostat se tam s dalšími linkami bývá pro aerolinky obtížné a nákladné. To je ale vliv, který asi můžete zanedbat.&lt;br /&gt;
&lt;br /&gt;
:: Co se týče implementace těch linek, to už je na Vás. :-) Nicméně dovedu si např. představit, že budete nějak kalkulovat poptávku v jednotlivých městech (zvažte, zda bude dynamická třeba v průbehu dne, týdne... nebo ne). Vznik poptávky Vám asi vytvoří obchodní příležitost, která tam bude lákat dopravce, kteří na ní něco vydělají - čím více jich na dané lince bude, tím méně. Když na ní budou prodělávat, začnou z linky odcházet. Také prosím vezměte v úvahu, že nasazení letadel jedné společnosti musí mít nějakou teritoriální logiku. Zkuste tedy prosím my3lenku ještě dopracovat a určitě se dohodneme. [[User:Tomáš|Tomáš]] 00:27, 16 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
::: Ok, teď to už snad chápu. Ještě jsem tedy trochu doplnil zadání a pokusím se simulaci zpracovat co nejobsáhleji. Mohu tedy považovat téma za schválené? [[User:Ellrohir|Alois Sečkár]] 22:42, 17 May 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9300</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9300"/>
		<updated>2015-05-17T20:42:53Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Výstupy práce */  - diskuse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie &amp;lt;strike&amp;gt;pohybu mezi městy&amp;lt;/strike&amp;gt; tvorby leteckých linek. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik &amp;lt;strike&amp;gt;náhodně generovaných&amp;lt;/strike&amp;gt; Evropských měst (město určuje geografická pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace &lt;br /&gt;
* &amp;lt;strike&amp;gt;příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* letadla se pohybují po daných linkách, které generuje umělá inteligence&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti (přímá úměrnost) a atraktivity destinace (nepřímá úměrnost)&lt;br /&gt;
* linky dynamicky v čase vznikají a zanikají...umělá inteligence uvažuje při tvorbě potenciál linky (odvislý od počtu cestujících, vzdálenosti a ceny letenky), při rušení spoje rentabilitu&lt;br /&gt;
* UI reprezentující letecké společnosti sledují různé vzorce chování...zaznamenávají se hospodářské výsledky jednotlivých firem...vítězí společnost s největším ziskem po odsimulování určitého období&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;br /&gt;
&lt;br /&gt;
: Pěkný nápad, ale chtělo by to přiblížit jej realitě, aby výstupy byly k něčemu dobré. Moje návrhy: nepracovat s městy náhodně generovanými, ale s reálnou mapou - tím by se zároveň dalo pracovat s reálnými počty cestujících, atraktivitou destinace, případně sezóností, apod. Dále: letadlo si asi nevybírá destinaci, ale je tam vedena linka (normální či názkonákladová) nebo spoj (charter). Náklady na let nejsou dány jen vzdáleností (palivem), ale i atraktivitou destinace - konkurencí. To je mimochodem jeden prvek, kterž byste mohl zkoumat - jak se bude vyvíjet konkurence na různých linkách. Může se Vám stát, že některé linky budou přecpané, jiná města zůstanou naopak bez spojení. Atd. Netvrdím, že tam musíte implementovat vše zmíněné přesně jak jsem psal nebo že tam naopak nemůžete řešit ještě něco jiného, ale zkuste to prosím promyslet zhruba tímto směrem. Bude to trochu náročné na získání podkladových dat, ale to už k tomu patří. [[User:Tomáš|Tomáš]] 15:15, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Skutečná města souhlasím, vyberu tedy pár Evropských metropolí a dohledám data. Rozdělení normální/lowcost dává smysl, řešit paralelně pravidelné linky a chartery mi připadá trochu složité, ale pokud to bude požadavek, zvládnu to. Jen si teď moc nedovedu představit ten vliv atraktivity (konkurence) na náklady na let. A taky - jakým způsobem vytvářet ty linky? Jak uchopit implementaci té umělé inteligence, která bude linky dynamicky vytvářet/rušit? [[User:Ellrohir|Alois Sečkár]] 21:51, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: To co jsem tam psal, byly jen nápady. Souhlasím asi s Vámi, že v modelu, jaký navrhujete, striktní rozdělení normální/low cost/charter asi nemá smysl, ostatně i v realitě neexistuje ostrá dělící čára. U toho vlivu atraktivity na náklady byla moje chyba, měl jsem na mysli ceny (letenkz do frekventovaných destinací bývají levnější kvůli konkurenci). Nicméně, paradoxně i vliv atraktivity na náklady existuje a to v ceně letištních slotů. Velká, plně koordinovaná letiště s velkým provozem mají striktně rozdělené časy a dostat se tam s dalšími linkami bývá pro aerolinky obtížné a nákladné. To je ale vliv, který asi můžete zanedbat.&lt;br /&gt;
&lt;br /&gt;
:: Co se týče implementace těch linek, to už je na Vás. :-) Nicméně dovedu si např. představit, že budete nějak kalkulovat poptávku v jednotlivých městech (zvažte, zda bude dynamická třeba v průbehu dne, týdne... nebo ne). Vznik poptávky Vám asi vytvoří obchodní příležitost, která tam bude lákat dopravce, kteří na ní něco vydělají - čím více jich na dané lince bude, tím méně. Když na ní budou prodělávat, začnou z linky odcházet. Také prosím vezměte v úvahu, že nasazení letadel jedné společnosti musí mít nějakou teritoriální logiku. Zkuste tedy prosím my3lenku ještě dopracovat a určitě se dohodneme. [[User:Tomáš|Tomáš]] 00:27, 16 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
::: Ok, teď to už snad chápu. Ještě jsem tedy trochu doplnil zadání a pokusím se simulaci zpracovat co nejobsáhleji. Mohu tedy považovat téma za schválené? [[User:Ellrohir|Alois Sečkár]] 22:42, 17 May 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9299</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9299"/>
		<updated>2015-05-17T20:40:25Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Parametry */  - doplnění&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie &amp;lt;strike&amp;gt;pohybu mezi městy&amp;lt;/strike&amp;gt; tvorby leteckých linek. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik &amp;lt;strike&amp;gt;náhodně generovaných&amp;lt;/strike&amp;gt; Evropských měst (město určuje geografická pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace &lt;br /&gt;
* &amp;lt;strike&amp;gt;příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* letadla se pohybují po daných linkách, které generuje umělá inteligence&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti (přímá úměrnost) a atraktivity destinace (nepřímá úměrnost)&lt;br /&gt;
* linky dynamicky v čase vznikají a zanikají...umělá inteligence uvažuje při tvorbě potenciál linky (odvislý od počtu cestujících, vzdálenosti a ceny letenky), při rušení spoje rentabilitu&lt;br /&gt;
* UI reprezentující letecké společnosti sledují různé vzorce chování...zaznamenávají se hospodářské výsledky jednotlivých firem...vítězí společnost s největším ziskem po odsimulování určitého období&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;br /&gt;
&lt;br /&gt;
: Pěkný nápad, ale chtělo by to přiblížit jej realitě, aby výstupy byly k něčemu dobré. Moje návrhy: nepracovat s městy náhodně generovanými, ale s reálnou mapou - tím by se zároveň dalo pracovat s reálnými počty cestujících, atraktivitou destinace, případně sezóností, apod. Dále: letadlo si asi nevybírá destinaci, ale je tam vedena linka (normální či názkonákladová) nebo spoj (charter). Náklady na let nejsou dány jen vzdáleností (palivem), ale i atraktivitou destinace - konkurencí. To je mimochodem jeden prvek, kterž byste mohl zkoumat - jak se bude vyvíjet konkurence na různých linkách. Může se Vám stát, že některé linky budou přecpané, jiná města zůstanou naopak bez spojení. Atd. Netvrdím, že tam musíte implementovat vše zmíněné přesně jak jsem psal nebo že tam naopak nemůžete řešit ještě něco jiného, ale zkuste to prosím promyslet zhruba tímto směrem. Bude to trochu náročné na získání podkladových dat, ale to už k tomu patří. [[User:Tomáš|Tomáš]] 15:15, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Skutečná města souhlasím, vyberu tedy pár Evropských metropolí a dohledám data. Rozdělení normální/lowcost dává smysl, řešit paralelně pravidelné linky a chartery mi připadá trochu složité, ale pokud to bude požadavek, zvládnu to. Jen si teď moc nedovedu představit ten vliv atraktivity (konkurence) na náklady na let. A taky - jakým způsobem vytvářet ty linky? Jak uchopit implementaci té umělé inteligence, která bude linky dynamicky vytvářet/rušit? [[User:Ellrohir|Alois Sečkár]] 21:51, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: To co jsem tam psal, byly jen nápady. Souhlasím asi s Vámi, že v modelu, jaký navrhujete, striktní rozdělení normální/low cost/charter asi nemá smysl, ostatně i v realitě neexistuje ostrá dělící čára. U toho vlivu atraktivity na náklady byla moje chyba, měl jsem na mysli ceny (letenkz do frekventovaných destinací bývají levnější kvůli konkurenci). Nicméně, paradoxně i vliv atraktivity na náklady existuje a to v ceně letištních slotů. Velká, plně koordinovaná letiště s velkým provozem mají striktně rozdělené časy a dostat se tam s dalšími linkami bývá pro aerolinky obtížné a nákladné. To je ale vliv, který asi můžete zanedbat.&lt;br /&gt;
&lt;br /&gt;
:: Co se týče implementace těch linek, to už je na Vás. :-) Nicméně dovedu si např. představit, že budete nějak kalkulovat poptávku v jednotlivých městech (zvažte, zda bude dynamická třeba v průbehu dne, týdne... nebo ne). Vznik poptávky Vám asi vytvoří obchodní příležitost, která tam bude lákat dopravce, kteří na ní něco vydělají - čím více jich na dané lince bude, tím méně. Když na ní budou prodělávat, začnou z linky odcházet. Také prosím vezměte v úvahu, že nasazení letadel jedné společnosti musí mít nějakou teritoriální logiku. Zkuste tedy prosím my3lenku ještě dopracovat a určitě se dohodneme. [[User:Tomáš|Tomáš]] 00:27, 16 May 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9269</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9269"/>
		<updated>2015-05-12T19:57:32Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Porovnání různých strategií leteckého dopravce */  - úprava zadání&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie &amp;lt;strike&amp;gt;pohybu mezi městy&amp;lt;/strike&amp;gt; tvorby leteckých linek. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik &amp;lt;strike&amp;gt;náhodně generovaných&amp;lt;/strike&amp;gt; Evropských měst (město určuje geografická pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace &lt;br /&gt;
* &amp;lt;strike&amp;gt;příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* letadla se pohybují po daných linkách, které generuje umělá inteligence&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti a atraktivity destinace&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;br /&gt;
&lt;br /&gt;
: Pěkný nápad, ale chtělo by to přiblížit jej realitě, aby výstupy byly k něčemu dobré. Moje návrhy: nepracovat s městy náhodně generovanými, ale s reálnou mapou - tím by se zároveň dalo pracovat s reálnými počty cestujících, atraktivitou destinace, případně sezóností, apod. Dále: letadlo si asi nevybírá destinaci, ale je tam vedena linka (normální či názkonákladová) nebo spoj (charter). Náklady na let nejsou dány jen vzdáleností (palivem), ale i atraktivitou destinace - konkurencí. To je mimochodem jeden prvek, kterž byste mohl zkoumat - jak se bude vyvíjet konkurence na různých linkách. Může se Vám stát, že některé linky budou přecpané, jiná města zůstanou naopak bez spojení. Atd. Netvrdím, že tam musíte implementovat vše zmíněné přesně jak jsem psal nebo že tam naopak nemůžete řešit ještě něco jiného, ale zkuste to prosím promyslet zhruba tímto směrem. Bude to trochu náročné na získání podkladových dat, ale to už k tomu patří. [[User:Tomáš|Tomáš]] 15:15, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Skutečná města souhlasím, vyberu tedy pár Evropských metropolí a dohledám data. Rozdělení normální/lowcost dává smysl, řešit paralelně pravidelné linky a chartery mi připadá trochu složité, ale pokud to bude požadavek, zvládnu to. Jen si teď moc nedovedu představit ten vliv atraktivity (konkurence) na náklady na let. A taky - jakým způsobem vytvářet ty linky? Jak uchopit implementaci té umělé inteligence, která bude linky dynamicky vytvářet/rušit? [[User:Ellrohir|Alois Sečkár]] 21:51, 12 May 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9268</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9268"/>
		<updated>2015-05-12T19:56:59Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Parametry */  - úpravy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie pohybu mezi městy. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik &amp;lt;strike&amp;gt;náhodně generovaných&amp;lt;/strike&amp;gt; Evropských měst (město určuje geografická pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace &lt;br /&gt;
* &amp;lt;strike&amp;gt;příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* letadla se pohybují po daných linkách, které generuje umělá inteligence&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti a atraktivity destinace&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;br /&gt;
&lt;br /&gt;
: Pěkný nápad, ale chtělo by to přiblížit jej realitě, aby výstupy byly k něčemu dobré. Moje návrhy: nepracovat s městy náhodně generovanými, ale s reálnou mapou - tím by se zároveň dalo pracovat s reálnými počty cestujících, atraktivitou destinace, případně sezóností, apod. Dále: letadlo si asi nevybírá destinaci, ale je tam vedena linka (normální či názkonákladová) nebo spoj (charter). Náklady na let nejsou dány jen vzdáleností (palivem), ale i atraktivitou destinace - konkurencí. To je mimochodem jeden prvek, kterž byste mohl zkoumat - jak se bude vyvíjet konkurence na různých linkách. Může se Vám stát, že některé linky budou přecpané, jiná města zůstanou naopak bez spojení. Atd. Netvrdím, že tam musíte implementovat vše zmíněné přesně jak jsem psal nebo že tam naopak nemůžete řešit ještě něco jiného, ale zkuste to prosím promyslet zhruba tímto směrem. Bude to trochu náročné na získání podkladových dat, ale to už k tomu patří. [[User:Tomáš|Tomáš]] 15:15, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Skutečná města souhlasím, vyberu tedy pár Evropských metropolí a dohledám data. Rozdělení normální/lowcost dává smysl, řešit paralelně pravidelné linky a chartery mi připadá trochu složité, ale pokud to bude požadavek, zvládnu to. Jen si teď moc nedovedu představit ten vliv atraktivity (konkurence) na náklady na let. A taky - jakým způsobem vytvářet ty linky? Jak uchopit implementaci té umělé inteligence, která bude linky dynamicky vytvářet/rušit? [[User:Ellrohir|Alois Sečkár]] 21:51, 12 May 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9267</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9267"/>
		<updated>2015-05-12T19:51:05Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Výstupy práce */  - diskuse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie pohybu mezi městy. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik náhodně generovaných měst (město určuje pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace letadla&lt;br /&gt;
* příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti a atraktivity destinace&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;br /&gt;
&lt;br /&gt;
: Pěkný nápad, ale chtělo by to přiblížit jej realitě, aby výstupy byly k něčemu dobré. Moje návrhy: nepracovat s městy náhodně generovanými, ale s reálnou mapou - tím by se zároveň dalo pracovat s reálnými počty cestujících, atraktivitou destinace, případně sezóností, apod. Dále: letadlo si asi nevybírá destinaci, ale je tam vedena linka (normální či názkonákladová) nebo spoj (charter). Náklady na let nejsou dány jen vzdáleností (palivem), ale i atraktivitou destinace - konkurencí. To je mimochodem jeden prvek, kterž byste mohl zkoumat - jak se bude vyvíjet konkurence na různých linkách. Může se Vám stát, že některé linky budou přecpané, jiná města zůstanou naopak bez spojení. Atd. Netvrdím, že tam musíte implementovat vše zmíněné přesně jak jsem psal nebo že tam naopak nemůžete řešit ještě něco jiného, ale zkuste to prosím promyslet zhruba tímto směrem. Bude to trochu náročné na získání podkladových dat, ale to už k tomu patří. [[User:Tomáš|Tomáš]] 15:15, 12 May 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Skutečná města souhlasím, vyberu tedy pár Evropských metropolí a dohledám data. Rozdělení normální/lowcost dává smysl, řešit paralelně pravidelné linky a chartery mi připadá trochu složité, ale pokud to bude požadavek, zvládnu to. Jen si teď moc nedovedu představit ten vliv atraktivity (konkurence) na náklady na let. A taky - jakým způsobem vytvářet ty linky? Jak uchopit implementaci té umělé inteligence, která bude linky dynamicky vytvářet/rušit? [[User:Ellrohir|Alois Sečkár]] 21:51, 12 May 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Xseca00&amp;diff=9253</id>
		<title>Xseca00</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Xseca00&amp;diff=9253"/>
		<updated>2015-05-12T08:35:32Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: První verze zadání&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Porovnání různých strategií leteckého dopravce ==&lt;br /&gt;
&lt;br /&gt;
V simulaci se budou pohybovat stroje různých leteckých dopravců sledující různé strategie pohybu mezi městy. Cílem simulace je porovnat strategie s ohledem na generovaný zisk.&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Porovnání různých strategií leteckého dopravce&lt;br /&gt;
&lt;br /&gt;
'''Předmět''': 4IT495 Simulace systémů (LS 2014/2015)&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Alois Sečkár&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
== Parametry ==&lt;br /&gt;
&lt;br /&gt;
* mapa obsahuje několik náhodně generovaných měst (město určuje pozice, velikost a index atraktivity)&lt;br /&gt;
* města v čase náhodně generují cestující (roli hraje velikost výchozího města a atraktivity destinace)&lt;br /&gt;
* mezi městy se pohybují letadla...do letadla nastoupí cestující se zájmem letět do příští destinace letadla&lt;br /&gt;
* příští destinaci si letadlo vybírá dle různých strategií (stálá linka mezi dvěma městy, naplnění kapacity, let do největšího města, let do nejbližšího města, let do nejatraktivnějšího města, apod.)&lt;br /&gt;
* náklady na let jsou určeny vzdáleností, letadla mají fixní náklady na údržbu (všechna letadla jsou stejná)&lt;br /&gt;
* příjem je generován cestujícími, cena letenky se odvíjí od vzdálenosti a atraktivity destinace&lt;br /&gt;
&lt;br /&gt;
== Výstupy práce ==&lt;br /&gt;
&lt;br /&gt;
Výstupem simulace bude porovnání přístupů z hlediska dosaženého zisku při několika iteracích.&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Assignment_SS_2014/2015/cs&amp;diff=9252</id>
		<title>Assignment SS 2014/2015/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Assignment_SS_2014/2015/cs&amp;diff=9252"/>
		<updated>2015-05-12T08:22:17Z</updated>

		<summary type="html">&lt;p&gt;Ellrohir: /* Zadání */  - přidán odkaz na mou simulaci&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Zadání LS 2014/2015}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Na tuto stránku vkládejte svá zadání. Nezapomeňte se podepsat. Můžete použít &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; (čtyři tildy) k automatickému podpisu. Používejte Ukázat náhled, abyste si prohlédli Váš výsledek před konečným odesláním.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Prosíme, snažte se formulovat Vaše zadání pečlive. S ohledem na to, že jde o Vaši semestrální práci, očekáváme adekvátní úsilí vynaložené na zadání. Nezapomeňte, že hlavním výsledkem má být výzkumná zpráva, což znamená, že Váš simulační model musí generovat takové výsledky, které jsou konkrétní, měřitelné a ověřitelné. Pečlivě promyslete, jakým způsobem budete vyvíjet Váš model, odvoďte entity, které budete používat, nakreslete si diagram modelu, zvažte, co budete měřit. Teprve pokud máte o modelu dostatečně přesnou představu, vložte Vaše zadání. A samozřejmě, nezapomeňte si prosím přečíst [[How to deal with the simulation assignment/cs|Jak na simulace]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| type  = content&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Abychom se vyhnuli případnému budoucímu nedorozumnění, prosíme, ověřte si, že máte tučné '''schváleno''' někde v našem komentáři pod Vaším zadání. Pokud tam není '''schváleno''', znamená to, že Vaše zadání dosud schváleno nebylo.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Zadání ==&lt;br /&gt;
&lt;br /&gt;
[[xsvoa11]]&lt;br /&gt;
&lt;br /&gt;
[[xrytm00]]&lt;br /&gt;
&lt;br /&gt;
[[xzizl00]]&lt;br /&gt;
&lt;br /&gt;
[[xmolm00]]&lt;br /&gt;
&lt;br /&gt;
[[xblal26]]&lt;br /&gt;
&lt;br /&gt;
[[xpokj24]]&lt;br /&gt;
&lt;br /&gt;
[[xcaho01]]&lt;br /&gt;
&lt;br /&gt;
[[xseca00]]&lt;/div&gt;</summary>
		<author><name>Ellrohir</name></author>
		
	</entry>
</feed>