SUMO
A SUMO egy közúti, tömegközlekedési és vasúti mikroszimulációs nyílt forráskódú szoftver. Felhasználását tekintve alkalmas kereszteződések, lokális úthálózatok, lámpabeállítások, menetrendek tervezésének támogatásához. Pontosabban ezek teszteléséhez. Lehetőséget nyújt úgynevezett online szimulációhoz, ami azt jelenti, hogy szimuláció közben megváltoztathatjuk az úthálózat adatait, például egy balesetet szimulálhatunk. Illetve a lámpa beállításokat is megváltoztathatjuk szimuláció közben, ezzel pl.: napszak vagy detektor alapú lámpabeállításokat is tesztelhetünk. A szoftver mikró modellt használ, azaz ágens alapú, de járműszinten szimulálja a forgalmat.
Tartalomjegyzék
Története
A SUMO-t 2000-ben kezték el írni, GPLv3-el. Az első verzió 2009-ben készült el. Jelenleg 0.13.0-ás verzió a legújabb. Célja a közúti forgalom kutatások támogatása.
Telepítés
A telepítendő bináris ezen linken érhető el. Elérhető Windowsra, Suse Linuxra, Fedorára, Scientific-re és Ubuntura is. Open Source jellegéből következik, hogy buildelhető tetszőleges környezetben, természetesen ehhez szükséges QT és pyton támogatás
Technológiai Leírása
A SUMO alapvetően c++-ban írt szoftver, a hozzá tartozó kiegészítő eszközök pytonban írt scriptek. A grafikus felülete Qt-ben íródott. A szimulációhoz használt matematikai modell jól elkülönített modulban helyezkedik el.
Matematikai háttér
A SUMO-ban beállítható minden jármű típushoz tartozó követési modell. A követési modell azt határozza meg, hogy egy jármű milyen sebességgel haladjon.
Wiedemann
Ennek a modellnek két változata is létezik, a 74-es és a 99-es. Előbbi kevesebb paraméterrel dolgozik, második viszont 10 paraméterrel, így különböző sebesség tartományokban más-más viselkedéssel ruházhatjuk fel a járműveket, ezzel alkalmassá válik országúti forgalom modellezésére, de a városi forgalom esetén a túl sok paraméter miatt nehézkes a paraméterezése. A modell egyszerű nulladrendű képlettel adja meg a kívánt követési távolságot. Ennek kiértékelése során kell eldönteni, hogy az adott jármű, hogyan változtassa a sebességét. Erre is ad kiszámítási módot a modell.
A modell egyetlen lineáris összefüggéssel leírható: bx= (bx_add+bx_Multi*z)* √v, a hol a bx a biztonságos távolság, v a sebesség, bx_add a biztonságos távolsági komponens, z paraméter 0 és 1 közti érték, általában 0,5 , 0,15-ös standard eltérés mellett. Tehát az első lökhárítók közti távolság az ax+bx, ax pedig a nyugalmi távolságuk, azaz ax = L(n-1) +AXadd. Ahol az AXadd kalibrációs paraméter. A bx_add és a bx_multi becsülhetők a kapacitás mértékéből. A modell a szükséges követési távolságot határozza meg, tehát a sebesség meghatározása további számításokat igényel.
Bizonyos implementációkban az additív kalibrációs paramétert elhagyják, a SUMO-ban, pedig fixen 1. Ha determinisztikus modellre van szükség, akkor a z=1 választást használják. Az első lökhárítók közti távolság az ax+bx, ax pedig a nyugalmi távolságuk, azaz ax = L(n-1) +AXadd. Ahol az AXadd kalibrációs paraméter, az L(n-1) pedig a követett jármű hossza. A bx_add és a bx_multi becsülhetők a kapacitás mértékéből. Ennek módja a kalibráció fejezetben található. A bx értéke alapján el kell dönteni, hogy hogyan változzon a jármű sebessége, ehhez meg kell határozni jelenlegi távolság alapján. Ennek a döntésnek a meghozatalához a további mutató számokat kell meghatározni, ezek alapján lehet eldönteni, hogy követésre, közelítésre, vészfékezésre, vagy intenzív gyorsításra van szükség. Ilyen felosztásra látható példa az alábbi diagramon. Vegyük észre,hogy az ezen lévő értéken nem a számunkra rendelkezésre álló értékek, azokat ki kellene számítani. Implementációkor viszont inkább használt stratégia ezen elv visszavezetése a rendelkezésre álló értékekre.
A modell tovább fejlesztett változatának (Wiedemann 99) 10 paramétere van. Ez inkább az autópályák forgalmára van kifejlesztve.
Krauss
A SUMO a Krauss modelt használja alapértelmezésként. Ez a modell a biztonságos sebességet adja meg. Itt a modell közvetlenül megadja az új sebességet. Előnye, hogy jól paraméterezhető, akár különböző forgalmi szituációkra különböző viselkedést is definiálhatunk. Sőt a SUMO képes különböző járművek esetén is különböző paraméterezést használni. Ezzel szimulálva az agrasszív és a "szőke" vezetőket is. Az útviszonyok is ezen paraméterek beállításával történhet. Bár a SUMO ezt nem támogatja közvetlenül.
Modul szerkezet
A modul szerkezet kialakításánál a funkciók elkülönítését tartották szemelőtt. A nyílt forráskód miatt ez igen hasznos. Két szemszögből is, az egyik, hogy az egyikben vétett hiba a másikban nem jelentkezik. A másik, hogy így szakértői területek szerint is tagolódik. Érdekessége viszont, hogy a különböző modulok nem minden esetben vannak össze integrálva.
A szoftver rendszer az alábbi modulokból áll:
- DFRouter: Utvonal készítés ciklussal indukálva
- Daurouter: Legrövidebb út választása
- Foreign: külső packagek interfészelése, úgy mint R fa, openGl stb…
- GUI: graphical itnerface in Qt
- GUInetLader: Hálózat megjeleníítése
- GUISim: Szimuláció megjelenítése
- jtrrouter: Útvonal készítés junction swichelési módszerrel
- microsim: A simuláció futatása, ez tartalmazza pl a járművek jármű típusok definícióját
- netbuild: Az útvonal hálózat gráfjának elkészítése, és módosítása szimuláció könnyű futatásához, pl hurokélek transzformálása
- netgen: absztrakt network
- netimport: Úthálózat importálása
- od2trips: OD mátrixból generál utakat
- polyconvert: A „tájat” adja hozzá a hálózathoz, tehát a térkép szinezését végzi
- router: alapértelmezett útválasztóó modell
- utils: globális segéd osztályok gyüjteménye
Projekt szervezés
A SUMO egy open source szoftver, tehát nyilt repozitorival kell, hogy rendelkezzen. A ticketing rendszere is nyílt. A projekt szervezéséhez a Trac nevű eszközt használják, ez wikioldalt, ticketing rendszert és verzió kontrolt is tartalmaz.
Használata
Kiegészítő Eszközök
Hálózat generátor
A hálózat építést a netconvert nevű program végzi. Három inputra van szüksége:
- Csúcsokat leíró xml file, pl.: hello.nod.xml
<nodes> <node id="1" x="-500.0" y="0.0" /> <node id="2" x="+500.0" y="0.0" /> <node id="3" x="+501.0" y="0.0" /> </nodes>
- Utakat leíró xml file, pl: hello.edg.xml
<edges> <edge from="1" id="1to2" to="2" type=”a” /> <edge from="2" id="out" to="3" type=”b”/> </edges>
- kereszteződéseket leíró xml file
<edges> <edge from="1" id="1to2" to="2" type=”a” /> <edge from="2" id="out" to="3" type=”b”/> </edges>
- kereszteződéseket leíró xml file
<types> <type id="a" priority="3" numLanes="3" speed="13.889"/> <type id="b" priority="3" numLanes="2" speed="13.889"/> <type id="c" priority="2" numLanes="3" speed="13.889"/> </types>
Az utakhoz rendelhetünk prioritást, és funkcionalitást. Az utat sávokra oszthatjuk. Pontosabban minden élhez kell, hogy tartozzon egy vagy több sáv.
Alább látható egy példa a netconvert használatára, ennek az outputja a generált hálózat, példánkban a hello.net.xml
netconvert --node-files=hello.nod.xml –type-files=hello.typ.xml --edge-files=hello.edg.xml --output-file=hello.net.xml
A netconvert nem csak általunk definiált hálózat készítésére alkalmas. Ez igen hasznos funkció, mert általában egy létező topológiát akarunk használni. Azaz importálhatunk hálózatot más formátumokból. Például open streat map export fájlt a következő képen használhatjuk SUMO hálózat építésére
netconvert --osm-files asd.osm -o asd.net.xml
Táj színezés
Kevésbé fontos, de látványos eszköz a polyconverter, mellyel az importált térkép színezését is hozzá adhatjuk a hálózatunkhoz. Alább láthatunk példát a használatára
polyconvert --net-file bartok.net.xml --osm-files map.osm --type-file typemap.xml -o bartok.poly.xml
Forgalom Generáslás
Ha megvan a hálózatunk (net), akkor sokféleképpen generálhatunk forgalmat az adott hálózatra. Ez a következő képen történhet:
- útvonalak megadásával (trip definitions) : megadjuk a kezdeti és a végcsúcsot, és az indulási időt. A DUAROUTER képes az útvonalakat utakká konvertálni.
- forgalom folyam megadásával (flow definitions): ugyanolyan mint az útvonal megadása (xml file), csak itt A-ból B-be egy jármű halmaz halad.
- véletlenszerű (Randomization): ez a leggyorsabb módja, ha forgalmat akarunk generálni, de természetesen nagy valószínűtlenséget okozhat. Tools/Trip#randomTrips.py
- OD mátrixokkal: (OD-matrices) : gyakran elérhetőek forgalmi hatóságoktól. Az OD mátrix egy i,j eleme azt reprezentálja hpgy jármű megy i. zónából j.zónába. A mátrixot át kell konvertálni útvonalakká a OD2TRIPS modullal.
- forgalmi folyam és kanyarodási szándék a kereszteződésekben (JTRROUTER eszközzel): megadjuk a járművek haladási szándékát, és hogy merre kanyarodjanak minden kereszteződésnél.
- Detektorok, mérési pontok használatával (detector data, observation points) :
Indukciós hurok és egyéb eszközökkel gyakran vizsgálják a forgalmat. A DFROUTER modul képes ezekből az adatokból forgalmat generálni.
- Kézzel: mi generáljuk le a forgalmat.
- Népesség statisztikák alapján: Az ACTIVITYGEN modul képes népességi statisztikákból forgalmat generálni. Ehhez utca szintű statisztikák kellenek. Itt olyanra kell gondolni, hogy egy utcában hány háztartás van és hány munkahely, az emberek átlagosan milyen messze járnak dolgozni, stb. Tehát ilyen hipotézisek szerint dolgozik, az emberek dolgozni, vásárolni járnak, gyereket visznek az iskolába stb.
Szimuláció
A szimuláció futtatásához meg kell adnunk egy konfigurációs fájlt. Ez a fájl írja le a szimuláció paramétereit. Ebben kell meghivatkozni a további input fájlokat, például az útvonal választási fájlt.
Az útvonal választási fájl tartalmazza a jármű típusokat is például:
<routes> <vType accel="1.0" decel="5.0" id="Car" length="2.0" maxSpeed="100.0" sigma="0.0" /> <route id="route0" edges="1to2 out"/> <vehicle depart="1" id="veh0" route="route0" type="Car" /> </routes>
Itt megadhatjuk a kategória méretét, gyorsulási és fékezési kapacitását. Illetve a hozzá tartozó jármű követési modellt és annak paramétereit. Lehetőség van a grafikus megjelenítés módosítására is. Láthatjuk, hogy egy jármű valójában egy jármű típus és a hozzá tartozó útvonal. Természetesen további paraméterek adhatók meg neki, például a kezdeti sebesség.
Azt már bemutattuk, hogyan kell hálózatot generálni, tehát a legfontosabb fájlok a hálózat és az útvonal választás. Ezek elegendők a konfiguráció elkészítéséhez. Itt meg kell adni hány virtuális ütemnyit szeretnénk szimulálni. Illetve, hogy milyen típusú outputot várunk. Egy példa konfiguráció:
<configuration> <input> <net-file value="hello.net.xml"/> <route-files value="hello.rou.xml"/> </input> <output> … </output> </configuration>
Ekkor lefuttathatjuk a szimulációt az alábbi parancssal sumo -c <konfigurációs fájl>.sumocfg Ha vizualizációt is szeretnénk akkor sumo-gui -c <konfigurációs fájl>.sumocfg
Tömegközlekedés
A SUMO képes tömegközlekedést is szimulálni a menetrend és megállók megadásával. Például a következő módon:
<vtype id="BUS" accel="2.6" decel="4.5" sigma="0.5" length="15" maxspeed="70" color="1,1,0"/>
<vehicle id="0" type="BUS" depart="0" color="1,1,0"> <route edges="2/0to2/1 2/1to1/1 1/1to1/2 1/2to0/2 0/2to0/1 0/1to0/0 0/0to1/0 1/0to2/0 2/0to2/1"/> <stop busStop="busstop1" duration="20"/> <stop busStop="busstop2" duration="20"/> <stop busStop="busstop3" duration="20"/> <stop busStop="busstop4" duration="20"/> </vehicle>
Kimenet
A szimulációt sokféle célból tehetjük, mindegyik más és más analizálási módszert követel meg. Ezért a SUMO többféle kimenet típust is támogat.
- VTK format : Minden jármű sebességét és pozíciójából készít fájlokat VTK formátumban.
- FCD Floating Car Data): Minden szimulációs ütemben, minden jármű neve, típusa, sebessége, és iránya pozíciója tárolódik.
- Detektoros mérés : Lehetőségünk van induktív hurokdetektorok és azonnali induktív hurokdetektorok elhelyezésére a hálózaton. Előbbi folyam adatokat is tud mérni, például a forgalom eloszlása időben.
- Jármű utazásokról információ : Az egyes járművek által kibocsátott káros anyag, vagy elhasznált üzemanyag adatait kaphatjuk meg.
- információk a szimuláció jelenlegi állásáról: ez nyílván online szimuláció esetén érdekes.
Grafikus Interfész
A SUMO grafikus interfésze független program a többi modultól, ő is csak a sumo parancsot hívja. Sajnos az xml szerkesztéstől sem óv meg, nem lehet benne konfigurációt szerkeszteni. Csak grafikusan adhatjuk meg a konfigurációs fájl nevét. Viszont alkalmas arra, hogy grafikus visszajelzést adjon a szimuláció aktuális állapotáról. A kirajzolása nem látványos, de könnyen értelmezhető. Az xmlben megadott színezéseket és jármű alakokat jól kezeli (ezek felül definiálhatók). Továbbá képeket is elhelyezhetünk a vizualizációba a koordináták megadásával. Például műhold vagy légi felvételt tehetünk a szimuláció mögé.
Jelentős hibája, hogy mindig kirajzolja a teljes látható szimulációs területet, még akkor is ha a felbontás miatt nem is lehet látni a járműveket. Ez jelentős korlátot szab a SUMO-ban a vizualizált szimuláció futtatására.
Lehetőség van a szimuláció szüneteltetésére is, illetve megadhatjuk a szimuláció sebességét is. A gui lehetőséget biztosít a forgalom szimuláció közbeni változtatására, például a dugó miatt az emberek későbbre halasztják a bevásárlást.
A modul felépítése lehetővé teszi, új menüpontok könnyű felvételét.
Források
- SUMO-SIM
- G�abor Pot�ari, Zolt�an Vincell�er, Zolt�an �Acs, A method for real-time adaptation of weather conditions within a tra�c simulation, ICAI Conference Prezentation, 2014