MATSim labor - mérési feladatok

MATSim mérési feladatok

A mérés során a forgalom-szimulátor alapvető funkcióival fog megismerkedni. A mérésre készüléshez olvassa el a segédletet.

A mérés első szakaszában a felhasználói felület segítségével fog az előre elkészített konfigurációs file-ok alapján hálózati forgalmat szimulálni. Megismeri a MATSim kimeneti formátumát, a különböző származtatott eredményeket. A szimuláció menetét a Via vizualizációs eszközzel is követi.

A második szakaszban megtanulja, hogyan kell fejlesztőkörnyezetből futtatni a MATSim rendszert. Ezek után hálózati file-t fog előállítani az Open Street Map adatbázisából, és elkészíti az első forráskódból generált populációt.

Végül a mérés harmadik szakaszában megismerkedik a stratégiákkal, és a tervválasztással.

A kérdések megválaszolásakor válaszát indokolja. Ne feledje el megjelölni a válasz forrását (konfigurációs file, kimeneti könyvtár/file)!

A jegyzőkönyvben a feladatok megoldását képernyőfotókkal is illusztrálja!

A jegyzőkönyvhöz mellékelje a konfigurációs file-ok tömörített könyvtárát!

 

0. Virtuális környezet

A MATSim méréshez az előre elkészített virtuális gépet kell használni, ez a labor gépeken indításkor a MATSim opció választásával érhető el.

A virtuális gépen Java 11, MATSim 13.0, Via 22.1 és Eclipse 4.22 van telepítve.

A MATSim és Via programok, valamint a konfigurációs file-ok a /home/matsim/Work könyvtárban érhetőek el.

Az Eclipse a /home/matsim/eclipse könyvtárban érhető el.

A programok elindíthatók a file kezelőből a megfelelő .jar-ra dupla kattintással, vagy a terminál programból java -jar [program].jar paranccsal.

A Via programmal lehet a MATSim futási eredményeit vizualizálni. Ehhez mindenkinek saját licencre lesz szüksége, amit a licenses oldalról lehet igényelni (a baloldali free license kell nekünk). A név és a szervezet mindegy. Az email-ben kapott license.xml.zip állományt le kell tölteni a VM-be, és amikor először indítjuk a Via-t, akkor ezt megadni neki a dialógus ablakban, majd alul a Close gombra kattintani. A Via program használatához olvassa el a mérési segédletben található leírást.

1. Ismerkedés a MATSim programmal

A mérés első szakaszában a bináris disztribúciót fogja használni a szimuláció menetének megismeréséhez.

1.1. Hello World!

Mérési feladat

  1. A MATSim alkalmazásba töltse be és indítsa el a config_01_01.xml szimulációt!
  2. Vizsgálja meg a konfigurációs file-okat és a kimeneti könyvtár-struktúrát (a kimeneti könyvtárat a config file-ban állíthatja be, a config file betöltésekor megjelenik a MATSim felületen)!
  3. Az alábbi kérdések megválaszolásakor azt is adja meg, hogy melyik file-ból olvasta ki a kérdéses információt.

Kérdések

  1. Hány felhasználót modellez a mérés?
  2. Hány iteráción át fut a mérés?
  3. Milyen pontszámot ért el a felhasználó?
  4. Mennyi idővel töltött többet a munkahelyén, mint tervezett?
  5. Mekkora távolságot tett meg összesen a nap folyamán?
  6. Mennyivel volt hosszabb a hazaútja, mint a munkába vezető útja? Miért?
  7. Töltse be a Via programba a kimeneti hálózatot és eredményeket (lsd. segédlet), majd játssza vissza a napi eseményeket! Milyen útvonalon haladt a felhasználó? Miért ezt az útvonalat használta?
  8. Milyen hibát kap, ha újra futtatja a szimulációt?
  9. Biztosítsa, hogy a szimuláció újra futtatható legyen, és növelje meg húszra az iterációk számát! Milyen hibát tapasztal a szimuláció futtatásakor?

1.2. Útválasztás

Mérési feladat

  1. Töltse be és indítsa el a config_01_02.xml szimulációt!
  2. Vizsgálja meg a konfigurációs file-okat, és a kimeneti file-okat! Használja a Via programot is a felhasználó mozgásának követésére!
  3. Készítsen alternatív hálózati file-t square_02_diagonal.xml néven. A hálózat tartalmazzon egy kétirányú gyorsforgalmi utat (130km/h-s sebességűt) a négyzet lakóhelyhez közeli és munkahelyhez közeli csúcsa közt (a szimulátornak m/s mértékegységben kell megadni!). A gyorsforgalmi út hossza egyezzen meg a négyzet átlójának hosszával. Készítsen konfigurációt config_02_diagonal.xml néven, mely az alternatív hálózatot használja.
  4. Futtasson szimulációt ezzel az alternatív konfigurációval!
  5. Változtassa meg a gyorsforgalmi út hosszát úgy, hogy már ne érje meg a felhasználónak az átlót választania!

Kérdések

  1. Miben tér el a topológia az előző méréshez képest? Hogyan befolyásolja ez a szimuláció futását?
  2. Mennyivel növeli meg a felhasználó napjának hasznosságát (score) a gyorsforgalmi út?
  3. Milyen hosszúság fölött nem éri meg a gyorsforgalmi út használata?
  4. Ha a gyorsforgalmi út hosszának a növelése helyett a megengedett sebességet csökkentjük, mekkora sebesség alatt nem éri meg azt használni?

2. MATSim programozása

Eddig a MATSim-et mint egy alkalmazást futtatta. A mérésnek ebben a szakaszában meg fogja ismerni, hogyan kell programkönyvtárként használni a MATSim-et. Ehhez az alábbi előkészületekre lesz szüksége.

2.0. Előkészületek

Mérési feladat

  1. Indítsa el az Eclipse fejlesztőkörnyezetet!
  2. A matsim projekt már létre van hozva, és a Maven csomagkezelő letöltötte hozzá a MATSim könyvtárat annak a függőségeivel (ezek a pom.xml-ben vannak specifikálva). Nekünk csak a megfelelő forrásfile-okat kell majd megnyitni és szerkeszteni.
  3. Indítsa el a MATSim felhasználói felületet, most már Eclipse alól!
    Run > Run Configurations... > Java Application > New launch configuration
    Project: matsim, Main class: org.matsim.run.gui.Gui
  4. Futtassa le valamelyik konfigurációt próbaképpen!

2.1. Térkép file létrehozása OSM térképből

Mérési feladat

  1. Az openstreetmap.org/export oldalról töltse le az egyetem környékét ábrázoló térképrészletet (például Móricz - Lágymányosi híd budai hídfő). Használja az Export funkciót a fenti menüben. Fontos, hogy ne legyen túl kicsi a térképrészlet, legyenek rajta alternatív útvonal lehetőségek majd a szimulációban.
  2. Nyissa meg a RunPNetworkGenerator osztályt a fejlesztőkörnyezetben. Ez a MATSim könyvtár segítségével át tudja konvertálni az OSM formátumú térképrészletet a szimulátor által használt formátumba. Ez az osztály amúgy innen származik.
  3. Igazítsa az osm mezőt a letöltött file-hoz, és a NetworkWriter write metódusának paraméterét az elvárt kimeneti könyvtárhoz. A kimeneti file neve maradjon network.xml. Ha az elérési út ponttal kezdődik, az az aktuális könyvtárhoz képest értendő, ami akárhol lehet az Eclipse munkaterületben, szóval ezt érdemes elkerülni.
  4. Futtassa le a programot! Hozzon létre egy új futási konfigurációt az Eclipse-ben, amiben a RunPNetworkGenerator osztály adja a main metódust.
  5. Hozzon létre egy új populációs file-t amiben egy magányos egyetemista jár be reggeltől estig tanulni az egyetemre! Az OSM-ből importált térképen válaszon neki otthoni és munkahelyi pozíciót. A szükséges koordinátákat le lehet olvasni a jobb felső sarokban, ha az OSM-ből generált hálózatot megnyitja Via-ban.
  6. Készítsen egy új MATSim konfigurációt, amiben az OSM-ből importált térkép a hálózat és az 5. pontban létrehozott felhasználó a populáció. Futtassa ezt a szcenáriót és tanulmányozza a kimenetet!

2.2. Populáció létrehozása programkódból

Ennek a feladatnak a során programkódból fogja felépíteni a felhasználók napi tervét.

Mérési feladat

  1. Nyissa meg a RunPCreateDrivingAgents osztályt a fejlesztőkörnyezetben. Ennek a segítségével tömegesen tudunk felhasználókat létrehozni. Ez az osztály amúgy innen származik.
  2. Ezt az osztályt módosítsa úgy, hogy, az létrehozzon 499 felhasználót (ennyit enged vizualizálni a Via az ingyenes licenccel) az alapértelmezett napi tervvel!
  3. Az otthon és munkahely pozícióit akárhova helyezheti a térképen.
  4. A bemeneti és kimeneti könyvtárat állítsa be a megfelelő értékekre. Érdemes a kimenetet egy új, üres könyvtárba irányítani.
  5. Futtassa le a szcenáriót és tanulmányozza a kimenetet!
  6. Futtassa a 2.1 feladat végén létrehozott szcenáriót ezzel az új populációval!

3. Több iterációs szimulációk

Most megismerkedünk a MATSim igazi erősségével: az evolúciós modellel. A keretrendszer a megadott stratégia szerint fogja optimalizálni a szereplők napját iterációról iterációra.

3.1. Egyszerű evolúció

Mérési feladat

  1. Töltse be és indítsa el a config_03_01.xml szimulációt!

Kérdések

  1. Milyen evolúciós stratégiát használ a konfiguráció?
  2. Milyen paramétereket változtat ez az evolúciós stratégia?
  3. Milyen mértékű javulást ért el a felhasználó a hasznosságban (score) a futások során?
  4. Hányadik iteráció után éri el a felhasználó az optimumot? Ehhez lehet, hogy növelni kell az iterációk számát.
  5. A szimulátor mely paraméter állítgatásával érte el az optimumot? Elő tudjuk kézzel állítani az optimális napi tervet?

3.2. Hasznosságfüggvény

Mérési feladat

  1. Töltse be és indítsa el a config_03_02.xml szimulációt!

Kérdések

  1. Milyen evolúciós stratégiát használ a konfiguráció? Hogyan optimalizálja a felhasználó napi tervét?
  2. Értelmezze a pontozásban meghatározott paramétereket!
  3. Vizsgálja meg, hogy milyen közel került az optimumhoz a felhasználó terve az iterációk alatt!
  4. Készítse el az optimális tervet, és futtassa újra a szimulációt! Milyen hasznosságot tapasztal?
  5. Becsülje, majd mérje meg, hogy hány iteráció lenne szükséges ennek az optimumnak az eléréséhez az eredeti tervből kiindulva. Becslését indokolja!

3.3. A legjobb nap

Térjen vissza az egyetemi térképhez és a 499 egyetemista napi tervéhez, amiket a 2.2 feladatban előállított.

Mérési feladat

  1. Készítsen egy konfigurációs file-t, mely különböző evolúciós stratégiákat használ (lsd. mérési segédlet)!
  2. Hozza létre az egyetemisták hasznosságfüggvényének megfelelő pontozást!
  3. Futtassa a szimulációt, nézze meg, hogy mi a legjobb terv!
  4. Ha túl lassan fut a szimuláció, akkor csökkentheti a felhasználók számát.

Kérdések

  1. Milyen evolúciós stratégiákat használt?
  2. Milyen optimum alakult ki?
  3. Hány lépésben érhető el az optimum?