Difference between revisions of "Simulace Sjezdovky (NetLogo)"

From Simulace.info
Jump to: navigation, search
(dokončeno)
 
(6 intermediate revisions by the same user not shown)
Line 10: Line 10:
  
 
'''Popis Modelu''': Simulace pohybu lyžařů/snowboardistů na svahu. Účastníci simulace jsou nejdříve vyvezeni vlekem/ky na vrcholek svahu a následně v závislosti na svojí strategii sjedou svah dolů.
 
'''Popis Modelu''': Simulace pohybu lyžařů/snowboardistů na svahu. Účastníci simulace jsou nejdříve vyvezeni vlekem/ky na vrcholek svahu a následně v závislosti na svojí strategii sjedou svah dolů.
Simulace by řešila optimální počet a průchodnost vleků v závislosti na počtu účastníků (toto lze řešit výpočtem), počet nehod v závislosti na počtu vleků/účastníků a porovnání jednotlivých strategií účastníků (jejich rychlost) s pravděpodobností jejich srážky s jiným účastníkem.
+
Simulace by řešila průchodnost tratě a počet nehod v závislosti na počtu účastníků, tvaru trati a porovnání jednotlivých strategií účastníků (jejich rychlosti lyžování, četnosti zátačení a rychlosti mimo sjezdovku) s pravděpodobností jejich srážky s jiným účastníkem.
  
 
= Metoda =
 
= Metoda =
Model je vytvořen v softwaru NetLogo, který je určen především pro modelování multiagentních systémů. Lze v něm pomocí různých způsobů inputů měnit vlastnosti modelu v průběhu simulace. Stejně tak lze pomocí monitorovacích objektů sledovat klíčové hodnoty probíhající simulace a sledovat jejich průběh v čase pomocí grafů. Model sjezdovky vychází ze skutečníé sjezdovky nacházející se ve ski areálu Pec pod Sněžkou - Černá Hora, Jarov, 1b. Tato sjezdovka je obsluhována jedním vlekem.  
+
 
 +
Model je vytvořen v softwaru NetLogo, který je určen především pro modelování multiagentních systémů. Lze v něm pomocí různých způsobů inputů měnit vlastnosti modelu v průběhu simulace. Stejně tak lze pomocí monitorovacích objektů sledovat klíčové hodnoty probíhající simulace a sledovat jejich průběh v čase pomocí grafů. Model sjezdovky vychází ze skutečníé sjezdovky nacházející se ve ski areálu [https://www.skiresort.cz/skiarealy/mapa/ Pec pod Sněžkou - Černá Hora, Jarov, 1b]. Tato sjezdovka je obsluhována jedním vlekem.  
  
 
= Model =
 
= Model =
Line 34: Line 35:
  
 
'''Width_env''': Šířka hranice sjezdovky, nastavitelná pouze před vygenerováním modelu
 
'''Width_env''': Šířka hranice sjezdovky, nastavitelná pouze před vygenerováním modelu
 +
 +
'''Ski_max_global''': Maximální počet sjezdů
  
 
===Monitorované vlastnosti modelu===
 
===Monitorované vlastnosti modelu===
Line 66: Line 69:
  
 
'''Leave''': Agent se snaží dostat k východu.
 
'''Leave''': Agent se snaží dostat k východu.
 
  
 
===Nastavitelné Vlastnosti People===
 
===Nastavitelné Vlastnosti People===
Line 85: Line 87:
  
 
'''Crashed''', '''Crashed_environment''': Vlastnosti pro kontrolování srážky s jinými agenty
 
'''Crashed''', '''Crashed_environment''': Vlastnosti pro kontrolování srážky s jinými agenty
 +
 +
=Obrázky=
 +
 +
[[File:Skiing_example.PNG|center|Simulaze za chodu s možnými nastaveními]]
 +
 +
===Vysvětlivky===
 +
 +
'''Bílá''': Sjezdovka
 +
 +
'''Světle modrá''': Pohyb mezi sjezdovkou a Vlekem
 +
 +
'''Tmavě modrá''': Vlek
 +
 +
'''Modrá''': Konec vleku
 +
 +
'''Zelená''': Hranice sjezdovky (Stromy)
 +
 +
'''Žlutá''': Vstup do areálu
 +
 +
'''Červená''': Východ z areálu
 +
 +
=Výsledky=
 +
 +
Výsledný model je velkým zjednodušením reality, agenti nemohou v průběhu sjezdu měnit svou rychlost a mohou lyžovat pouze jedním ze 3 směrů a pouze v diskrétních intervalech. Z těchto důvodů docházi k velmi četným srážkám i přez svoji snahu vyhýbat překážkám a jiným agentům (Před každou změnou směru se agent podívá na obě strany a vybere si tu kde nevidí žádnou překážku, případně jede přímo dolů). Hlavním přínosem modelu je tedy především porovnání jednotlivých nastavení agentů a modelu mezi sebou a nikoli absolutní čísla o zraněných lyžařích (Protože se jedná spíše o Free for All Battle Royal v tomto případě)
 +
 +
V tabulce níže jsou hodnoty parametrů modelu použité pro všechny vlastnosti které nejsou explicitně porovnávány v dané simulaci. V podkapitolách níže jsou výsledky simulací porovnávájící různé hodnoty zkoumané vlastnosti. Simulace byly v těchto případech omezeny na 50 000 ticků.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Základní nastavení nezkoumaných vlastností'''
 +
!| Vlastnost || Hodnota || Skupina 0 || Skupina 1 || Skupina 2
 +
|-
 +
| speed_tow|| 1 || || ||
 +
|-
 +
| ski_max_global|| 7 || || ||
 +
|-
 +
| people_max|| 100 || || ||
 +
|-
 +
| width_env|| 20 || || ||
 +
|-
 +
| speed_ski || || 0.5 || 1.0 || 1.5
 +
|-
 +
| speed_normal || || 0.5 || 0.5 || 0.5
 +
|-
 +
| turn_ski ||  || 7 || 7 || 7
 +
|-
 +
 +
|}
 +
 +
==Minimální hranice X Široké hranice==
 +
 +
V případě minimálního nastavení hranic nejsou na trati žádně překážky a hranice jsou naprosto rovné. V případě nejširších hranic je na trati zig-zag vzor viditelný na přiloženém obrázku.
 +
 +
Široké hranice (a související členitost tratě) podle očekávání zvyšují pravděpodobnost srážky s okolním prostředí. Z tohoto důvodu se také snižuje pravděpodbnost srážky s jiným lyžařem, celková pravděpodobnost nedokončení trati je ale výrazně vyšší.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Minimální hranice X Široké hranice'''
 +
!| Vlastnost || Minimální hranice || Široké hranice
 +
|-
 +
| people_ski_count || 6746 || 4601
 +
|-
 +
| people_total || 1505 || 2450
 +
|-
 +
| people_injured_ski% || 47.18|| 30.49
 +
|-
 +
| people_injured_ski_env% || 2.59|| 59.8
 +
|-
 +
| people_injured_nonski% || 0 || 0.04
 +
|-
 +
 +
|}
 +
 +
 +
==Rychlost vleku==
 +
 +
V případě rychlejšího vleku se dle očekávání zvýší absolutní počet sjezdů a % srážek zůstava v rámci chyby stejné.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Rychlost vleku'''
 +
!| Vlastnost || speed_tow = 1 || speed_tow = 2
 +
|-
 +
| people_ski_count || 6549|| 7400
 +
|-
 +
| people_total || 1695|| 1992
 +
|-
 +
| people_injured_ski% || 50.38|| 55.87
 +
|-
 +
| people_injured_ski_env% || 10.5|| 7.68
 +
|-
 +
| people_injured_nonski% || 0 || 0.05
 +
|-
 +
 +
|}
 +
 +
 +
==Maximální počet sjezdů na agenta==
 +
 +
V případě vytrvalejších návštěvíků areálu se dle očekávání sníží celkový počet návštěvníků (z důvodu limitu návštěvníků v areálu) a zvýší pravděpodobnost, že daný návštěvník utrpí zranění. Z důvodu lepšího využití času (žádný čas stráveny na opouštění areálu) se také dle očekávání zvýšil celkový počet sjezdů.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Maximální počet sjezdů na agenta'''
 +
!| Vlastnost || ski_max_global = 3 || speed_tow = 15
 +
|-
 +
| people_ski_count || 5550|| 6743
 +
|-
 +
| people_total || 2481|| 1296
 +
|-
 +
| people_injured_ski% || 24.18|| 66.51
 +
|-
 +
| people_injured_ski_env% || 7.9|| 13.97
 +
|-
 +
| people_injured_nonski% || 0 || 0
 +
|-
 +
 +
|}
 +
 +
 +
==Maximální počet lidí v areálu==
 +
 +
Při zvýšení počtu lidí v areálu se dle očekávání zvýší pravděpodobnost srážky s jiným návštěvníkem, celkový počet návštěvníků a úspěšný počet sjezdů.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Maximální počet lidí v areálu'''
 +
!| Vlastnost || people_max = 50 || people_max = 200
 +
|-
 +
| people_ski_count || 3422|| 7986
 +
|-
 +
| people_total || 676|| 2477
 +
|-
 +
| people_injured_ski% || 28.11|| 61.77
 +
|-
 +
| people_injured_ski_env% || 11.09|| 10.46
 +
|-
 +
| people_injured_nonski% || 0 || 0
 +
|-
 +
 +
|}
 +
 +
 +
==Rychlost sjezdu agenta==
 +
 +
Na rozdíl od předchozích porovnání, v tomto případě všechny 3 typy agentů projížděli tratí najednou. Nejpomalejší lyžaři měli největší šanci nedokončit trať a největší šanci srážky s hranicí trati, což je způsobeno nejspíše největší četností změny směru, kdy je možné, že lyžař 'zabloudí' do místa odkud si neví rady. Překvapením je, že středně rychlí lyžaři měli nejmenší šanci srážky a tedy i nejvíce úspěšných sjezdů, ačkoli jim sjezd trvá déle než nejrychlejěím lyžařům.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Rychlost sjezdu agenta'''
 +
!| Vlastnost || speed_ski = 0.5 || speed_ski = 1 || speed_ski = 2
 +
|-
 +
| people_ski_count || 1627 || 2591 || 2269
 +
|-
 +
| people_total || 609 || 596 || 631
 +
|-
 +
| people_injured_ski% || 58.62 || 44.3 || 62.92
 +
|-
 +
| people_injured_ski_env% || 20.53 || 7.38 || 5.23
 +
|-
 +
| people_injured_nonski% || 0 || 0 || 0
 +
|-
 +
 +
|}
 +
 +
==Četnost zatáčení agenta==
 +
 +
Stejně jako v případě rychlosti (nejmenší rychlost - nejvíce změn směru), agenti s nejvíce změny směru mají největší šanci se srazit s okolní krajinou. Tito lyžaři se ale naopak ukazují lepší ve vyhýbání ostatním lyžařům, jejich celková pravděpodbnost srážky je ale i tak vyšší než v případě rozhodnějších agentů.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Četnost zatáčení agenta'''
 +
!| Vlastnost || turn_ski = 5 || turn_ski = 10 || turn_ski = 20
 +
|-
 +
| people_ski_count || 2302|| 2671|| 2662
 +
|-
 +
| people_total || 478|| 502|| 511
 +
|-
 +
| people_injured_ski% || 16.74 || 26.79 || 26.03
 +
|-
 +
| people_injured_ski_env% || 23.22 || 7.97 || 8.41
 +
|-
 +
| people_injured_nonski% || 0 || 0 || 0
 +
|-
 +
 +
|}
 +
 +
==Rychlost pohybu agenta mimo sjezdovku==
 +
 +
Největším překvapením jsou vyýsledky v závilosti na parametru, který by měl mít nejmenší vliv. Lyžaři s nejpomalejším pohybem mimo sjezdovku mají výrazně menší pravděpodobnost srážky s okolím a největší šanci, že úspěšně dokončí sjezd. V tomto průběhu simulace se také v některých případech stalo, že agenti se navzájem zaseknou (mimo trať) a nedokážou se sami zkovu rozejít. Vzhledem k tomu, že se to stávalo pouze v tomto nastavení je to nejspíše způsobeno různými rychlostmi pohybu agentů mimo sjezdovku.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Rychlost pohybu agenta mimo sjezdovku'''
 +
!| Vlastnost || speed_normal = 0.3 || speed_normal = 0.6 || speed_normal = 0.9
 +
|-
 +
| people_ski_count || 2555|| 2389|| 2192
 +
|-
 +
| people_total || 509|| 512|| 530
 +
|-
 +
| people_injured_ski% || 27.9 || 25.39 || 21.51
 +
|-
 +
| people_injured_ski_env% || 7.86 || 20.31 || 31.51
 +
|-
 +
| people_injured_nonski% || 2.36 || 0.2 || 3.96
 +
|-
 +
 +
|}
 +
 +
=Kód=
 +
 +
Zdrojový kód simulace: [[File:skiing.nlogo]]

Latest revision as of 21:01, 16 June 2019

Zadání

Název simulace: Simulace sjezdovky

Autor: Michal Pokorný

Typ modelu: Multiagentní

Modelovací nástroj: NetLogo

Popis Modelu: Simulace pohybu lyžařů/snowboardistů na svahu. Účastníci simulace jsou nejdříve vyvezeni vlekem/ky na vrcholek svahu a následně v závislosti na svojí strategii sjedou svah dolů. Simulace by řešila průchodnost tratě a počet nehod v závislosti na počtu účastníků, tvaru trati a porovnání jednotlivých strategií účastníků (jejich rychlosti lyžování, četnosti zátačení a rychlosti mimo sjezdovku) s pravděpodobností jejich srážky s jiným účastníkem.

Metoda

Model je vytvořen v softwaru NetLogo, který je určen především pro modelování multiagentních systémů. Lze v něm pomocí různých způsobů inputů měnit vlastnosti modelu v průběhu simulace. Stejně tak lze pomocí monitorovacích objektů sledovat klíčové hodnoty probíhající simulace a sledovat jejich průběh v čase pomocí grafů. Model sjezdovky vychází ze skutečníé sjezdovky nacházející se ve ski areálu Pec pod Sněžkou - Černá Hora, Jarov, 1b. Tato sjezdovka je obsluhována jedním vlekem.

Model

Vlastnosti Modelu

Globální Vlastnosti Modelu

Entry_x: X souřadnice vstupu, Y souřadnice je 0 (úpatí svahu)

Exit_x: X souřadnice vstupu, Y souřadnice je 0 (úpatí svahu)

Tow_x: X souřadnice vleku

Nastavitelné Vlastnosti Modelu

People_max: Maximální počet lidí v areálu

Speed_tow: Rychlost vleku

Width_env: Šířka hranice sjezdovky, nastavitelná pouze před vygenerováním modelu

Ski_max_global: Maximální počet sjezdů

Monitorované vlastnosti modelu

People_ski_count: Počet úspěšných sjezdů lyžaři (pro každou skupinu)

People_total: Celkový počet lidí, kteří vstoupili do areálu (pro každou skupinu)

People_injured_nonski: Počet lidí, kteří se zasekli (zranili) při jiné činnosti než je lyžování (pro každou skupinu)

People_injured_ski: Počet lidí, kteří se srazili s jinými lidmi (pro každou skupinu)

People_injured_ski_env: Počet lidí, kteří se srazili s hranicemi sjezdovky (Borders) (pro každou skupinu)

Agenti

People: Lidé přicházející na sjezdovku a využívající jejích služeb

Borders: Hranice sjezdovky, omezující pohyb lyžařů. Jejich jedinou vlastností jsou souřadnice, kde se nácházejí.

Životní Cyklus People

Appear: Agenti se náhodně vytvářejí na startovní pozici. Náhodně se jim přiřadí jedna ze 3 skupin a podle této skupiny se jim přiřadí vlastnosti. Jejich další akci je tow-want

Tow-want: Agent se snaží dostat k vleku. Další akcí je tow

Tow: Agent je vynesen na vrcholek vleku. Na vrcholku vleku má šanci vlek opustit předčasně. Další akci je ski-want

Ski-want: Agent si náhodně vybere místo na vrcholku a snaží se k němu dostat. Další akcí je ski

Ski: Agent lyžuje směrem dolů ze svahu. Agent lyžuje směrem dolů pod úhlem 45 stupňů a náhodně mění směr v závislosti na svých vlastnostech. Agent se snaží vyhýbat ostatním agentům (People a Borders). V případě, že se dva agenti nacházejí na stejném místě, srazí se, zvýší statistiky o srážkách a zmizí. Pokud se agent dostane na konec svahu, rozhodne se podle počtu svých sjezdů jestli jeho další akce bude tow-want nebo leave

Leave: Agent se snaží dostat k východu.

Nastavitelné Vlastnosti People

Speed_ski: Rychlost při lyžování (pro každou skupinu)

Turn_ski: Jak často se rozhoduje o změně směru (vyšší číslo = méně často) (pro každou skupinu)

Speed_normal: Rychlost v nelyžařských prostorech (pro každou skupinu)

Ski_max: Maximální počet sjezdů před opuštěním areálu

Pomocné Vlastnosti People

Action: Aktuální akce životního cyklu

Group: Skupina do které daný člověk patří, vlastnosti členů skupiny lze nastavovat globálně. Každému člověku je přiřazena skupina náhodně při jeho vstupu do areálu

Stuck_check_x, Stuck_check_y, Confused: Vlastnosti pro kontrolování zaseknutí se v nelyžařských prostorech

Crashed, Crashed_environment: Vlastnosti pro kontrolování srážky s jinými agenty

Obrázky

Simulaze za chodu s možnými nastaveními

Vysvětlivky

Bílá: Sjezdovka

Světle modrá: Pohyb mezi sjezdovkou a Vlekem

Tmavě modrá: Vlek

Modrá: Konec vleku

Zelená: Hranice sjezdovky (Stromy)

Žlutá: Vstup do areálu

Červená: Východ z areálu

Výsledky

Výsledný model je velkým zjednodušením reality, agenti nemohou v průběhu sjezdu měnit svou rychlost a mohou lyžovat pouze jedním ze 3 směrů a pouze v diskrétních intervalech. Z těchto důvodů docházi k velmi četným srážkám i přez svoji snahu vyhýbat překážkám a jiným agentům (Před každou změnou směru se agent podívá na obě strany a vybere si tu kde nevidí žádnou překážku, případně jede přímo dolů). Hlavním přínosem modelu je tedy především porovnání jednotlivých nastavení agentů a modelu mezi sebou a nikoli absolutní čísla o zraněných lyžařích (Protože se jedná spíše o Free for All Battle Royal v tomto případě)

V tabulce níže jsou hodnoty parametrů modelu použité pro všechny vlastnosti které nejsou explicitně porovnávány v dané simulaci. V podkapitolách níže jsou výsledky simulací porovnávájící různé hodnoty zkoumané vlastnosti. Simulace byly v těchto případech omezeny na 50 000 ticků.

Základní nastavení nezkoumaných vlastností
Vlastnost Hodnota Skupina 0 Skupina 1 Skupina 2
speed_tow 1
ski_max_global 7
people_max 100
width_env 20
speed_ski 0.5 1.0 1.5
speed_normal 0.5 0.5 0.5
turn_ski 7 7 7

Minimální hranice X Široké hranice

V případě minimálního nastavení hranic nejsou na trati žádně překážky a hranice jsou naprosto rovné. V případě nejširších hranic je na trati zig-zag vzor viditelný na přiloženém obrázku.

Široké hranice (a související členitost tratě) podle očekávání zvyšují pravděpodobnost srážky s okolním prostředí. Z tohoto důvodu se také snižuje pravděpodbnost srážky s jiným lyžařem, celková pravděpodobnost nedokončení trati je ale výrazně vyšší.

Minimální hranice X Široké hranice
Vlastnost Minimální hranice Široké hranice
people_ski_count 6746 4601
people_total 1505 2450
people_injured_ski% 47.18 30.49
people_injured_ski_env% 2.59 59.8
people_injured_nonski% 0 0.04


Rychlost vleku

V případě rychlejšího vleku se dle očekávání zvýší absolutní počet sjezdů a % srážek zůstava v rámci chyby stejné.

Rychlost vleku
Vlastnost speed_tow = 1 speed_tow = 2
people_ski_count 6549 7400
people_total 1695 1992
people_injured_ski% 50.38 55.87
people_injured_ski_env% 10.5 7.68
people_injured_nonski% 0 0.05


Maximální počet sjezdů na agenta

V případě vytrvalejších návštěvíků areálu se dle očekávání sníží celkový počet návštěvníků (z důvodu limitu návštěvníků v areálu) a zvýší pravděpodobnost, že daný návštěvník utrpí zranění. Z důvodu lepšího využití času (žádný čas stráveny na opouštění areálu) se také dle očekávání zvýšil celkový počet sjezdů.

Maximální počet sjezdů na agenta
Vlastnost ski_max_global = 3 speed_tow = 15
people_ski_count 5550 6743
people_total 2481 1296
people_injured_ski% 24.18 66.51
people_injured_ski_env% 7.9 13.97
people_injured_nonski% 0 0


Maximální počet lidí v areálu

Při zvýšení počtu lidí v areálu se dle očekávání zvýší pravděpodobnost srážky s jiným návštěvníkem, celkový počet návštěvníků a úspěšný počet sjezdů.

Maximální počet lidí v areálu
Vlastnost people_max = 50 people_max = 200
people_ski_count 3422 7986
people_total 676 2477
people_injured_ski% 28.11 61.77
people_injured_ski_env% 11.09 10.46
people_injured_nonski% 0 0


Rychlost sjezdu agenta

Na rozdíl od předchozích porovnání, v tomto případě všechny 3 typy agentů projížděli tratí najednou. Nejpomalejší lyžaři měli největší šanci nedokončit trať a největší šanci srážky s hranicí trati, což je způsobeno nejspíše největší četností změny směru, kdy je možné, že lyžař 'zabloudí' do místa odkud si neví rady. Překvapením je, že středně rychlí lyžaři měli nejmenší šanci srážky a tedy i nejvíce úspěšných sjezdů, ačkoli jim sjezd trvá déle než nejrychlejěím lyžařům.

Rychlost sjezdu agenta
Vlastnost speed_ski = 0.5 speed_ski = 1 speed_ski = 2
people_ski_count 1627 2591 2269
people_total 609 596 631
people_injured_ski% 58.62 44.3 62.92
people_injured_ski_env% 20.53 7.38 5.23
people_injured_nonski% 0 0 0

Četnost zatáčení agenta

Stejně jako v případě rychlosti (nejmenší rychlost - nejvíce změn směru), agenti s nejvíce změny směru mají největší šanci se srazit s okolní krajinou. Tito lyžaři se ale naopak ukazují lepší ve vyhýbání ostatním lyžařům, jejich celková pravděpodbnost srážky je ale i tak vyšší než v případě rozhodnějších agentů.

Četnost zatáčení agenta
Vlastnost turn_ski = 5 turn_ski = 10 turn_ski = 20
people_ski_count 2302 2671 2662
people_total 478 502 511
people_injured_ski% 16.74 26.79 26.03
people_injured_ski_env% 23.22 7.97 8.41
people_injured_nonski% 0 0 0

Rychlost pohybu agenta mimo sjezdovku

Největším překvapením jsou vyýsledky v závilosti na parametru, který by měl mít nejmenší vliv. Lyžaři s nejpomalejším pohybem mimo sjezdovku mají výrazně menší pravděpodobnost srážky s okolím a největší šanci, že úspěšně dokončí sjezd. V tomto průběhu simulace se také v některých případech stalo, že agenti se navzájem zaseknou (mimo trať) a nedokážou se sami zkovu rozejít. Vzhledem k tomu, že se to stávalo pouze v tomto nastavení je to nejspíše způsobeno různými rychlostmi pohybu agentů mimo sjezdovku.

Rychlost pohybu agenta mimo sjezdovku
Vlastnost speed_normal = 0.3 speed_normal = 0.6 speed_normal = 0.9
people_ski_count 2555 2389 2192
people_total 509 512 530
people_injured_ski% 27.9 25.39 21.51
people_injured_ski_env% 7.86 20.31 31.51
people_injured_nonski% 2.36 0.2 3.96

Kód

Zdrojový kód simulace: File:Skiing.nlogo