SUMO

Innen: GIS Wiki

A SUMO (Simulation of Urban MObility) 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, illetve teszteléséhez. Lehetőséget nyújt úgynevezett online szimulációhoz, vagyis a szimuláció közben az adatok változtatására, úgymint úthálózat (pl. baleset előidézése), forgalmi lámpák (pl. napszaktól függő lámaváltás, detektorok használata). A szoftverben a mikro modellt ágens alapú szimuláció valósítja meg, amely járműszinten szimulálja a forgalmat.

A SUMO széles körben használt út hálózat tervezéshez, menetrend készítéshez. Kedvelt ingyenes mivolta miatt akadémiai körökben. A felhasználására jó példa többek közt a TurboTraffic. Ahol ugyan saját felhasználói felületet használnak hozzá, de a szimulációt a SUMO biztosítja.


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

Elérhető Windowsra, Suse Linuxra, Fedorára, Scientific-re és Ubuntura is. Nyílt forráskódú jellegéből következik, hogy buildelhető tetszőleges környezetben, természetesen ehhez szükséges Qt és Python támogatás.

Architektúra

A SUMO alapvetően C++-ban írt szoftver, a hozzá tartozó kiegészítő eszközök Pythonban írt szkriptek. A grafikus felülete Qt-ban íródott.

A szoftver objektumorientált megvalósítású, modularizált szerkezetű, jól elkülönítve a szakértői területeket. Érdekessége viszont, hogy a különböző modulok nem minden esetben vannak össze integrálva. A rendszert felépítő modulok a következők.

  • microsim: A szimuláció futtatását biztosító modul, tartalmazza többek között a járművek jármű típusok definícióját.
  • netgenerate: Absztrakt úthálózatok generálását teszi lehetővé.
  • netbuild: Az útvonal hálózat gráfjának elkészítését, és módosítását valósítja meg szimuláció könnyű fútatásához (pl. hurokélek transzformálása).
  • netimport: Úthálózat importálását biztosítja.
  • od2trips: OD mátrixból történő útgenerálást biztosít.
  • router: Az alapértelmezett útvonal kereső modell.
  • daurouter: Legrövidebb útvonal keresése.
  • dfrouter: Útvonal tervezés ciklussal indukálva.
  • jtrrouter: Útvonal tervezés "junction swiching" módszerrel.
  • polyconvert: Az úthálózaton felülei tértképi elemek ábrázolását teszi lehetővé.
  • GUI: A grafikus felhasználói felület modulja Qt-ban.
  • GUInetloader: Úthálózat megjelenítése.
  • GUIsim: Szimuláció megjelenítése.
  • foreign: külső csomagok egységes felületét biztosítja (pl. R-fa, OpenGL támogatás).
  • utils: globális segédfunkciók gyűjteménye.


Matematikai háttér

A SUMO matematikai modellek segítségével kezeli a járműveket és a forgalmat, így például a járművek haladási sebességét.

Krauss modell

A Krauss modell a biztonságos sebességet adja meg, és 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 agresszív és a kevésbé jártas 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.

Wiedemann modell

A Wiedermann modellnek két változata is létezik, a 74-es és a 99-es. Utóbbival 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 leírható a következő lineáris összefüggéssel:

ahol

  • a sebesség,
  • a biztonságos távolság,
  • a biztonságos távolsági komponens,
  • paraméter 0 és 1 közti érték, általában 0.5,0.15-ös standard eltérés mellett. Ha determinisztikus modellre van szükség, akkor a választást használják.

Az első lökhárítók közti távolság az képlettel írható le, ahol a nyugalmi távolságuk, vagyis , ahol kalibrációs paraméter, pedig a követett jármű hossza. A és a értékek 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.

Használata

A szimuláció futtatásához meg kell adnunk egy konfigurációs fájlt, ami leírja a szimuláció paramétereit.Ebben kell meghivatkozni a további bemeneti fájlokat. A legfontosabb fájlok a hálózat és az útvonal választás, amelyek önmagukban elegendők a konfiguráció elkészítéséhez. A konfigurációs fájlban adhatjuk meg az ütemek számát (szimuláció hosszát), illetve a kimenet típusát. Egy lehetséges konfiguráció:

<configuration>
   <input>
       <net-file value="example.net.xml"/>
       <route-files value="example.rou.xml"/>
   </input>
          <output>
 	…
          </output>
   
</configuration>

Az útvonal választási fájl tartalmazza a járművek leírását, pl.:

 <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>

A járművekre 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. További paraméterek is megadhatók opcionálisan, például a kezdeti sebesség.

A szimuláció futtatása a sumo -c <konfigurációs fájl>.sumocfg utasítással történik. Amennyiben vizualizálni is szeretnénk a szimulációt, a sumo-gui -c <konfigurációs fájl>.sumocfg utasítást használhatjuk.

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, ami online szimuláció esetén érdekes.

Tömegközlekedés

A SUMO képes tömegközlekedést is szimulálni a menetrend és megállók megadásával. Pl.:

 <routes>
   <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>
 </routes>

Grafikus felület

A SUMO grafikus felülete független program a többi modultól, ő is csak a sumo parancsot hívja. Alkalmas arra, grafikus visszajelzést adjon a szimuláció aktuális állapotáról. A kirajzolása nem látványos, de könnyen értelmezhető. Lehetőséget ad a szimuláció szüneteltetésére, a forgalom megváltoztatására szimuláció közben (pl. dugó miatt az emberek későbbre halasztják a bevásárlást), illetve megadhatjuk a szimuláció sebességét. 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. Nem biztosít lehetőséget a beállítások megváltoztatására, arra csak XML fájlban van lehetőség, pl. a színezés és a jármű alakzatok megadására, továbbá helyezhetünk műholdas, vagy légifelvételt is a szimuláció mögé. A moduláris felépítése lehetővé teszi a bővítést, és új menüpontok könnyű felvételét.

Kiegészítő eszközök

A grafikus felületű szimulációs alkalmazás mellett a SUMO cosmagjai között találunk számos konzolos segédalkalmazást, amely elsősorban az adatokat szolgáltatják a szimuláció számára.

Hálózat generátor

A hálózat építést a netconvert modul végzi, amely XML fájlok alapján tudja felépíteni a gráfot. Ehhez három bementi fájl szükséges.

  • A csúcsok leírása, ahol a <nodes> elemben kell megadni <node> elemek sorozatát. Minden elem tartalmaz egy azonosítót (id), illetve egy X és egy Y koordinátát. Pl.:
 <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>
  • Utak leírása, ahol a <edges> elemben kell megadni <edge> elemek sorozatát. Minden elem tartalmaz egy azonosítót (id), forrás (from) és cél (to) csúcs azonosítókat, valamint típust (type).
 <edges>
   <edge from="1" id="1to2" to="2" type=”highway.motorway” />
   <edge from="2" id="out" to="3"  type=”highway.residential”/>
 </edges>
  • Úttípusok leírása leírása, amely tartalmazza minden azonosítóhoz (id) az út prioritását (from, a magasabb prioritású utakat előnyben részesíti az útvonal tervező), a sávok számát (numLanes, ami legalább 1), használhatóságát (allow, disallow, amellyel korlátozhatjuk a forgalmat), egyirányúsítást (oneway), valamint a maximális sebességet (speed).
 <types>
    <type id="highway.motorway" priority="13" numLanes="2" speed="44.0" />
    <type id="highway.residential" priority="4" numLanes="1" speed="13.889" />
 </types>

A három fájlból a netconvert egy közös úthálózatot állít elő, pl.: netconvert --node-files=example.nod.xml –type-files=example.typ.xml --edge-files=example.edg.xml --output-file=mynetwork.net.xml

A netconvert alkalmas arra is, hogy más formátumokból töltsünk be úthálózatot, úgymint OpenStreetMap, pl.: netconvert --osm-files asd.osm -o mynetwork.net.xml

Térkép megjelenítés

A polyconvert alkalmazás lehetővé teszi az importált térképek megjelenítésének hozzáadását a hálózathoz. Pl.: polyconvert --net-file example.net.xml --osm-files map.osm --type-file typemap.xml -o mymap.poly.xml

Forgalom generálás

Amennyiben a hálózatunk már rendelkezésre áll, az alábbi módokon generálhatunk hozzá forgalmat.

  • Útvonalak megadásával (trip definitions): megadjuk a kezdeti és a végcsúcsot, illetve az indulási időt, a duarouter képes az útvonalakat utakká konvertálni, használata: duarouter --flows=<FLOW_DEFS> --net=<SUMO_NET> --output-file=MySUMORoutes.rou.xml.
  • Forgalom folyam megadásával (flow definitions), amely lényegében megegyezik az útvonal megadásával, azonban itt a két pont között nem egy, hanem több jármű fog közlekedni.
  • Véletlenszerű (randomization) a leggyorsabb módja, ha forgalmat akarunk generálni, de természetesen valószerűtlen szituációkat okozhat. A véletlenszerű generálást a Tools/Trip#randomTrips.py fájllal végezhetjük.
  • OD mátrixok (OD-matrices) alapján, amelyek gyakran elérhetőek forgalmi hatóságoktól. Az OD mátrix egy eleme azt reprezentálja hogy jármű megy zónából zónába. A mátrixot használat előtt át kell konvertálni útvonalakká az od2trips modullal, használata: od2trips -n <NET> -d <MATRIX> -o <TRIP_DEFS>.
  • Forgalmi folyam és kanyarodási szándék megadásával a kereszteződésekben. A jtrrouter alkalmazásban megadjuk a járművek haladási szándékát, illetve kanyarodási irányukat minden kereszteződésnél.
  • Detektorok (detector data) és mérési pontok (observation points) használatával. Indukciós hurok és egyéb eszközökkel gyakran vizsgálják a forgalmat, amely adatok alapján a dfrouter egy megfelelő forgalmat generál. Ez önmagában a gyakorlatban csak igen kis területre ad valósághű eredményt. Használata: dfrouter --net-file <asdad> --detector-files <DETECTOR_FILE>, ahol a forrásfájl egy XML állomány, ami leírja a detektorokkal mért értékeket.
  • Népesség statisztikák alapján, amihez utcaszintű statisztikák szükségesek. Az activitygen alkalmazással képes népességi statisztikákból forgalmat generálni. Itt olyan adatokra kell gondolni, hogy egy utcában hány háztartás van és hány munkahely, az emberek átlagosan milyen messze és mikor 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. Emellett meg kell adni a városból kimenő és a városba érkező forgalmat (többnyire városra vagy kerületre értelmes). Ezekhez városkapukat is definiálnunk kell, ezeken keresztül megy ki és érkezik be a forgalom. Használata: activitygen --net-file <NET> --stat-file <STATISTICS> --output-file <ROUTES> --random
  • Kézzel, vagyis mi írjuk le pontosan a forgalmat.

Kapcsolódó szócikkek

Szakirodalom

Külső hivatkozások