Dopravní situace ve Vietnamu

From Simulace.info
Revision as of 19:13, 12 June 2012 by Xskaf03 (talk | contribs) (Rozmisťování dopravních prostředků)
Jump to: navigation, search

Úvodní odstavec

Definice problému

Předmětem simulace je křižovatka ve tvaru X v centru vietnamského velkoměsta, kde řidiči nedodržují žádné dopravní předpisy, většina řidičů jezdí po pravé straně, ale v rámci zkrácení si cesty je běžné jezdit i vlevo, proti proudu ostatních vozidel. Na silnici jezdí převážná většina motocyklů, ale také automobily, autobusy, nákladní vozidla, jízdní kola. Rychlostní limity se pohybují mezi 30 a 40 km/h, ale běžně jsou ignorovány. Počet jízdních pruhů je neomezený, závisí na šířce současně jedoucích vozidel. Dopravní nehody jsou na denním pořádku a denně na jejich následky zemře nejméně 30 lidí, většinou chodců. Cílem je nasimulovat přechod chodců přes ulici (mohou přecházet kdekoliv) a ověřit tvrzení, že nejbezpečnější strategií pro přechod ulice je plynulá chůze, kdy řidiči chodce objedou zleva či zprava, a zvolit její nejvhodnější rychlost. http://www.youtube.com/watch?v=LlyOom0bwwY http://www.youtube.com/watch?v=_RmDhlq9yrk

Metoda

Model

Simulační model je vytvořen v prostředí NetLogo 5.0.1. Základem je čtvercový svět o rozměru 51x51px (max. pxcor a pycor je 25), v němž je bílou barvou vyznačena křižovatka ve tvaru x.


Druhy agentů a jejich atributy

Svět obsahuje následující druhy agentů:

  • motorcycles
  • bicycles
  • cars
  • trucks
  • buses
  • pedestrians

Agenti motorcycles, bicycles, cars, trucks a buses představují jednotlivé typy dopravních prostředků vyskytujících se v křižovatce. Mají atributy speed (okamžitá rychlost), speed-limit (maximální rychlost), cilheading (daný směr jízdy) a turn (příznak zda dopravní prostředek uprostřed křižovatky zatočil) Tyto typy agentů se liší pouze rychlostí, tvarem a velikostí; souhrnně jsou označovány jako traffic.

Agenti pedestrians představují chodce, kteří přecházejí přes křižovatku. Kromě atributů speed, speed-limit a cilheading mají navíc atribut wait-before-go, který označuje čas před vkročením do křižovatky.



Simulační model v prostředí NetLogo

Nastavení počátečního stavu

Pro nastavení počátečního stavu simulace je vytvořeno tlačítko setup volající stejnojmennou proceduru. Tato procedura vymaže předchozí data a počítadlo ticků a spustí proceduru setup-road pro vykreslení silnice a dále procedury pro vytvořejí jednotlivých typů agentů a nastavení jejich počátečních dat.

Počty vytvořených agentů je možné nastavit pomocí posuvníků. Atributy speed a speed-limit agentů dopravních prostředků sou nastaveny podle následující tabulky:

Maximální rychlosti dopravních prostředků a chodců v modelu

Název Rychlost v km/h Rychlost v m/s Rychlost v NetLogu
Motocykl 72 km/h 20 m/s 2 steps/tick
Automobil 61 km/h 17 m/s 1,7 steps/tick
Autobus 54 km/h 15 m/s 1,5 steps/tick
Nákladní automobil 36 km/h 10 m/s 1 step/tick
Jízdní kolo 18 km/h 5 m/s 0,5 steps/tick
Chůze 5,4 km/h 1,5 m/s 0,15 steps/tick


Nejedná se však o stejnou hodnotu pro každého agenta. Rychlost je vždy počítána náhodně z intervalu maximální hodnoty a hodnoty snížené o 0,5 steps/tick (u jízdních kol je interval 0,2 - 0,5 steps/tick).

U typu pedestrians je rychlost nastavována posuvníkem.


Po nastavení rychlosti je pro každého agenta volána procedura allocate-traffic, resp. allocate-pedestrians, která náhodně rozmisťuje dopravní prostředky a chodce do křižovatky podle následujících pravidel:

Rozmisťování dopravních prostředků

Vozidla jsou v počátečním stavu umístěna do všech čtyř krajů světa (na čtyři silnice vstupující do křižovatky). Většina vozidel je umístěna k pravé straně vozovky, ale menší část i vlevo (pojedou v protisměru). Může tedy nastat 8 situací (vždy 2 pro každou světovou stranu - s větší pravděpodobností bude vozidlo umístěno doprava, s menší doleva)

   let head random 20
   if head = 0 or head = 1 or head = 2 or head = 3 [set head 90 set cory random-interval -6 0 set corx random-interval -25 -20] 
   if head = 4 [set head 90 set cory random-interval 0 6 set corx random-interval -25 -20] 
   if head = 5 or head = 6 or head = 7 or head = 8  [set head 0 set corx random-interval 0 6 set cory random-interval -25 -20]
   if head = 9 [set head 0 set corx random-interval -6 0 set cory random-interval -25 -20]    
   if head = 10 or head = 11 or head = 12 or head = 13 [set head 270 set cory random-interval 0 6 set corx random-interval 20 25]
   if head = 14 [set head 270 set cory random-interval -6 0  set corx random-interval 20 25]   
   if head = 15 or head = 16 or head = 17 or head = 18  [set head 180 set corx random-interval -6 0  set cory random-interval 20 25]
   if head = 19 [set head 180 set corx random-interval 0 6 set cory random-interval 20 25]

Externí odkazy

Výsledky

Závěr

Kód