Zoeken

SUMO netwerk bouwen voor CCOL

Deze tutorial omschrijft hoe met het open source simulatie paket SUMO een netwerk kan worden opgebouwd dat geschikt is om te koppelen met een CCOL regeling. Een andere tutorial gaat in op de wijze waarop die koppeling moet worden opgebouwd.

Inhoud:

Introductie

SUMO is een uitgebreid paket waarmee micro (en meso) verkeerssimulaties kunnen worden uitgevoerd. SUMO staat voor: Simulation of Urban Mobility en wordt ontwikkeld door het Institue of Transport Systems, wat hoort bij DLR (Deutschen Zentrums für Luft- und Raumfahrt). DLR is een academische organisatie die SUMO open source ontwikkelt. SUMO wordt dan ook veel gebruikt in de academische wereld, maar wordt ook daarbuiten steeds meer gebruikt.

In tegenstelling tot diverse andere (gesloten) producten voor het uitvoeren van (micro)simulaties, is SUMO niet één enkele applicatie, maar een verzameling tools waarmee diverse taken kunnen worden uitgevoerd die voor de simulatie van belang zijn. Hierdoor, alsook doordat veel tools werken via de command prompt, maakt dat SUMO aan het begin relatief moeilijk is om mee te werken: je moet vaak weten wat waar zit, of veel lezen in de (zeer uitgebreide en nuttige) wiki documentatie. Voor wie de weg kent kan met SUMO minstens even snel als met andere tools een simulatie worden opgebouwd. Deze tutorial beoogt daarbij een handje te helpen!

SUMO is nog volop in ontwikkeling. Dit betekent dat de software niet altijd even stabiel is, en soms vast zal lopen (dit gebeurt vrijwel zeker een keer). Daarom is het belangrijk tijdens het bouwen van een netwerk dit vaak op te slaan – SUMO biedt geen functionaliteit waarmee bij een crash een backup wordt opgeslagen.

Wordt deze tutorial volledig gevolgd, dan is het resultaat een volledig functioneel netwerk, waar ook voertuigen in kunnen rijden. Bij verder werken met SUMO is het evenwel mogelijk dat vragen de kop op steken. Er is een zeer actieve mailing list voor gebruikers van SUMO – vaak krijg je hier nog op dezelfde dag antwoord op vragen. De ontwikkelaars staan tevens zeer open voor suggesties voor verbeteringen.

Zie voor meer informatie over SUMO: http://sumo.dlr.de/.

SUMO installeren

Om SUMO te verkrijgen: ga naar http://sumo.dlr.de/. Hier is rechts in beeld een kopje ‘Downloads’, waar de setup voor de huidige versie gedownload kan worden. SUMO is ook beschikbaar als portable applicatie, via http://sumo.dlr.de/wiki/Downloads.

Merk op: wanneer de portable versie wordt gebruikt, is het handig de command prompt, wanneer nodig, te starten middels de batch file ‘start-command-line.bat’ die bij SUMO zit.

Merk ook op: ook de x64 versie van SUMO komt bij installatie terecht in de x86 applicatie map, bv ‘C:\Program Files (x86)\Sumo\bin’.

In de navolgende tekst wordt met ‘%sumo%’ gedoeld op het pad waar SUMO staat (na installatie of na uitpakken i.g.v. de portable versie).

Om het netwerk op te bouwen zullen we gebruik maken van een select aantal tools en applicaties uit het complete arsenaal dat SUMO te bieden heeft. Er zijn voor taken vaak diverse manieren (bv. Voor het genereren van verkeer); we kiezen er hier steeds één, die voor een reguliere simulatie goed functioneert.

Alle tools van SUMO zitten in de map %sumo%\bin. (Er is daarnaast een groot aantal tools beschikbaar als python scripts in map %sumo%\tools, waar wij echter geen gebruik van zullen maken.

De tools die we zullen gebruiken zijn:

  • NETEDIT – grafische omgeving voor het opbouwen van een netwerk
  • SUMO-GUI – grafische weergave van de simulaties
  • od2trips – tool om een HB-matrix te converteren naar ‘trips’ ofwel voertuigen, die tijdens de simulatie dynamisch hun route zullen bepalen

Een SUMO netwerk bestaat altijd uit meerdere bestanden. In elk bestand wordt voor bepaalde functionaliteit – zoals de structuur van netwerk, de ligging, lengte en functie van lussen, de input van voertuigen – de inhoud/data aangegeven. De bestanden worden door SUMO uiteindelijk als geheel gebruikt om de simulatie op te bouwen. De bestanden die we in deze tutorial zullen maken zijn:

    • testnewerk.net.xml – Het netwerk bestand: hierin komt de structuur van het netwerk terecht.
    • testnewerk.add.xml – Additionals bestand: hierin komen de detectoren, die we via NETEDIT maken, terecht.
    • testnetwerk_vehicle_types.xml – Een xml bestand met de specificatie van gebruikte voertuig typen
    • testnetwerk_trips_car_OS.xml, testnetwerk_trips_fts_OS.xml, testnetwerk_trips_vtg_OS.xml – De dynamisch toegedeelde ’trips’ (reizen) van ersp. personenauto’s, fietsers en voetgangers
    • testnetwerk_car.taz.xml, testnetwerk_fts.taz.xml, testnetwerk_vtg.taz.xml – Een specificatie van de herkomst en bestemming edges die disctricten vormen die t.b.v. het genereren van verkeer
    • testnetwerk.view.xml – Hierin slaan we de voor NETEDIT ingestelde weergave instellingen op; dit bestand heeft verder niets met de simulatie te maken
    • testnetwerk.sumocfg – Een overkoepelend bestand waarin instellingen voor de simulatie worden opgegeven, en wordt aangegeven welke andere xml files moeten worden gebruikt.

Opbouwen van een netwerk

Een netwerk kan worden opgebouwd in een grafische omgeving middels de tool “NETEDIT”.

  • Start NETEDIT middels een klik op het programma in het start menu (na installatie) of door te dubbel klikken op netedit.exe (portable versie).
  • Start een nieuw netwerk via menu File > New Network…
  • Schakel naar de ‘edit-mode’ door sneltoets E of een klik op het icoontje
  • Klik twee keer in het venster, zodat er een weg (SUMO term ‘edge’) ontstaat:
  • Sla dit netwerk op, bv. als “testnetwerk.net.xml”.
    • Merk op: het tekenen van deze willekeurige weg is belangrijk, omdat een volledig leeg netwerk na opslaan niet meer kan worden geopend in NETEDIT.

Toevoegen achtergrond afbeelding (bitmap)

In deze tutorial bouwen we het netwerk met de hand op, op basis van een achtergrondplaatje. Dit is relatief onhandig, omdat het plaatje momenteel binnen NETEDIT niet met de muis kan worden geschaald: dat moet handmatig. Het betreft evenwel een eenmalige actie. Het is ook mogelijk een export te maken van openstreetmap.org en die als basis te nemen; dit valt buiten de scope van deze tutorial.

Als eerste stap moeten we een bitmap (.bmg, .tif of .png) maken.

  • Maak (bijv.) een .png bestand van een kruispunttekening, bijv. met gebruik van de screen-capture applicatie Greenshot.
  • Bepaal hoeveel werkelijke meters het plaatje breed en hoog is.
    • Dit kan bijvoorbeeld door een referentie object (schaallijn of verticale/horizontale lus met bekende lengte) op te meten (bijv. in Irfanview of in Paint). Bijv.: 154 pixels komt overeen met 16 meter; dat is 9,625 pixels per meter. Het plaatje is 1741 pixels breed, in werkelijkheid is dit dus 180,88 meter. De hoogte is 926 pixels, ofwel 96,21 meter.
  • Zorg dat de .png beschikbaar is op de locatie waar het netwerk is opgeslagen.

Nu moeten het plaatje worden ingeladen in NETEDIT.

  • Klik nu in NETEDIT op het icoontje
  • Voer hier bij ‘picture file’ de naam van het bestand in, inclusief het volledige pad, bijv. “C:\temp\15030\SUMO\15030.png”
  • Voer bij width en height de hoogte en breedte in, in meters, zoals voorheen berekend. Dit kunnen ook getallen met cijfers achter de komma zijn.
    • LET OP! Binnen NETEDIT (en SUMO) wordt altijd gewerkt met een punt als scheidingsteken tussen hele getallen en fracties!
  • De waarden bij center x en center y zijn in ons geval arbitrair, omdat we het netwerk niet geo-positioneren.
  • Sla deze instellingen op, door bovenin het venster “Decals” aan te vinken, en vervolgens de floppy disk. Kies een naam, bijv. “15030.editview.xml”.
    • Merk op: de instellingen omtrnet het achtergrond plaatje zitten dus in een ander bestand, en moeten na openen van hetwerk in NETEDIT altijd apart worden ingeladen.
  • Als het goed is wordt het plaatje nu weergegeven als achtergrond in NETEDIT.

Instellen weergave in NETEDIT

Om het opbouwen van het netwerk in NETEDIT te vergemakkelijken wijzigen we een aantal default view instellingen:

  • Klik in NETEDIT op het icoontje
  • Ga naar het tabblad Streets
  • Dubbelklik op het zwarte vakje naar “road”
  • Ga naar het tweede tabblad, met de schuifjes voor Red, Green, Blue en Alpha
  • Stel Alpha in op bv 150: hierdoor kunnen we door de straten heen de achtergrond nog zien
  • Ga naar het tabblad Junctions
  • Stel “Exaggerate by” in op bijv. 0.2. Hierdoor worden “junctions” (plaatsen waar wegen aan elkaar vast zitten) kleiner weergegeven, wat het overzicht ten goed komt.
  • Sla deze instellingen op door bovenaan zowel “Viewport” als “Decals” aan te vinken, bijv. onder de naam “15030.editview.xml”.
  • Hieronder is het resultaat zichtbaar: het rode bolletje rechts in beeld is een junction:

Tekenen netwerk

We zijn nu klaar om het netwerk in te gaan tekenen.

Handig om te weten is hierbij:

  • Met sneltoets E wordt geschakeld naar de edit modus (icoontje
    )
  • Met sneltoets M wordt geschakeld naar de move modus (icoontje
    )
  • Met sneltoets S wordt geschakeld naar de selection modus (icoontje
    )
  • Met sneltoets I wordt geschakeld naar de inspection modus (icoontje
    )

Tekenen gaat als volgt:

  • Schakel naar de edit modus
  • Klik waar de weg start (de weg komt links te liggen van de plek waar wordt geklikt)
  • Klik waar de weg eindigt
  • Indien nodig: schakel naar de move modus
  • Klik en sleep met de rode bolletjes om de weg op de juiste plek te leggen.
  • Het resultaat is bijv.:
  • Om naar deze twee wegen later vanuit één punt verkeer te laten rijden, leggen we er nog een weg voor:
  • Nu moet deze weg worden verbonden met de andere twee
  • Schakel naar de selection modus
  • Selecteer de drie junctions, zodat ze blauw worden:
  • Voeg ze samen middels sneltoets F7, of via menu Processing > Join Selected Junctions
  • Druk op F5 om de weergave te verversen. Een samengevoegde junction wordt als vlak getekend. Het getekende vlak komt niet altijd overeen met het verloop van de verbindingen binnen dat vlak. In de Connection modus kunnen de connecties binnen een junction worden weergegeven (of in de Selection modus wanneer boven in (toolbar) “Show connections” is aangevinkt):

    Er zijn inderdaad twee verbindingen zichtbaar.


  • Degewenst kan de vorm van het kruisingsvlak worden aangepast:
    • Rechtermuisklik op het kruisingsvlak, selecteer “Set custom junction shape” in het menu
    • Wijzig de vorm zoals gewenst
    • Druk op enter om af te sluiten, dan op F5 om te verversene

Om meerdere rijbanen aan te leggen:

  • Leg een weg aan
  • Schakel naar de Inspection modus
  • Klik op de weg
  • Stel in het veld “namLanes” het aantal rijbanen in

Contreleren verbindingen

Controleer bij het verbinden van wegen na een join altijd of de gewenste verbindingen zijn gemaakt. Bijv.: in onderstaand plaatje is dit niet het geval:

Om dit op te lossen:

  • Schakel naar de Connection modus
  • Klik op de rijbaan zonder verbinding
  • Klik op de rijbaan waarmee verbonden moet worden (dat kan als deze donkergroen is)
  • Indien die rijbaan geel is: houdt de Control toets vast tijdens het klikken
  • Druk op enter om af te sluiten

LET OP! Om later te zorgen voor juist gedrag van voertuigen de naar deze junction rijden, moet bovenstaande junction op type “Zipper” worden ingesteld:

  • Schakel naar Inspect modus
  • Stel het type in

Systematische aanpak intekenen

Het is raadzaam bij het tekenen van het netwerk systematisch te werk te gaan. Bijvoorbeeld:

  • Leg eerst alle buitenste wegen aan
  • !!! Sla het netwerk op !!!
  • Het resultaat is bijvoorbeeld:
  • Leg nu alle buitenste fiets- en voetpaden aan

Voor fietspaden:

  • Leg eerst een ‘gewone’ weg aan
  • Schakel naar Inspection modus
  • Stel de breedte in
  • Stel via “allow” in dat alleen fietsers zijn toegestaan
  • Het is raadzaam en handig om dit direct voor meerdere fietspaden te doen:
    • Selecteer de betreffende wegen
    • Voer de instellingen door
    • Merk op: selecties kunnen desgewenst worden opgeslagen voor later hergebruik. Zie de wiki voor verdere info.s

Voor voetpaden:

  • Net als voor fietsers, echter met een ander type dat wordt toegestaan

Hieronder het netwerk met alle buitenste wegen (‘edges’):

Voetgangers/fietsers oversteken modelleren

We moeten nu de “binnenkant” van de kruising opbouwen. Het is handig voetgangersoversteken en fietsoversteken als aparte “kruising” te modelleren.

Hieronder is een oversteek zichtbaar, waarvoor alle benodigde wegen zijn aangelegd. Let op: Bij het samenvoegen van de junctions worden korte wegdelen soms zo kort dat ze niet meer goed zichtbaar zijn. Gebruik “Set custom junction shape” na het samenvoegen om dit op te lossen. Dit vergt mogelijk enige oefening, en is voor complexere kruispunten soms even puzzelen.

Selecteer nu alle junctions rond een oversteek

Druk F7, dan F5: de junction ziet er niet fraai uit nu:

Wijzig de shape, en druk opnieuw F5:

Wijzig nu de connecties in de Connection modus.

Let op dat verbindingen voor voetgangers handmatig moeten worden toegevoegd. SUMO zal later tijdens het simuleren waarschuwingen afgeven over de voetgangers, omdat die op deze wijze als “voertuigen” in de simulatie zitten. Ze lopen ook achter elkaar, en maken een rij bij de verkeerslichten. Dit kan worden verholpen door de voetgangers anders te modelleren, en voetgangersoversteken als zodanig in te bouwen. Hiervoor is hier niet gekozen omdat het vrij lastig en tijdrovend is dit correct in het model te krijgen. Bovendien activeren voetgangers “als voetganger” geen detectoren, wat lastig is voor de koppeling met CCOL. Voor een reguliere simulatie is de huidige opzet zeker voldoende.

LET OP! Er zaten bugs in NETEDIT 0.32.0 waardoor bij sommige acties ingesteld connecties worden gereset. Het veiligst is de connecties pas te doen wanneer alle junctions zijn gemaakt (met join). Deze bugs zijn in de huidige versie (1.x) mogelijk verholpen.

Merk op: het wijzigen van de shape is in dit geval direct een goede manier om te zorgen dat de stopstrepen op de juiste plek komen te liggen. Deze komen, wanneer we later verkeerslichten toevoegen, te liggen op de plek waar het wegvak ophoudt en de junction begint.

Modelleren kruisingsvlak

Als laatste moet de kruising zelf worden gemaakt. Belangrijk is goed te kijken dat alle relevante junctions worden geselecteerd voordat middels F7 een join wordt uitgevoerd.

Het netwerk vooraf aan deze stap:

Het netwerk na een join van alle junctions middels F7:

Het netwerk na opschonen van alle connections (zoals aangegeven: dit kan het beste gebeuren na aanleggen van alle ‘joined’ junctions!).

Nu het netwerk in de basis is opgebouwd kunnen de overige benodigde elementen worden toegevoegd.

Aanleggen van detectie

In SUMO bestaan een drietal verschillende vormen van detectie. Het type “d2” is het meest geschikt voor een VA regeling, omdat hiervan de lengte instelbaar is, en binnen de CCOL regelaar de bezetting is af te lezen.

Detectoren van type “d1” zijn handig als selectieve detectie; dit komt later aan de orde.

Detectoren vallen binnen SUMO onder “Additionals”, ofwel extra toegevoegde elementen. Deze worden opgeslagen in een apart bestand. Dit betekent dat ze ook apart moeten worden ingeladen in NETEDIT (voor de simulatie is dat niet zo).

Bij het toevoegen van de eerste detector hoeft er niets extra te worden gedaan. Dit gaat als volgt:

  • Selecteer de “additionals” mode middels sneltoets A of knop 
    op de toolbar.
  • Selecteer het type “e2detector” in de lijst:
  • Handig kan zijn eerst alle detectoren van 1 meter lang aan te leggen, dan van 20 en dan de rest. Dan hoeft dit niet per detector achteraf ingesteld te worden.
  • Klik met de muist op het wegvak waar de detector komt te liggen. Let op: de plek waar wordt geklikt is de plek vanaf waar de detector in de rijrichting wordt aangelegd.
    • Detectoren kunnen niet binnen junctions worden aangelegd (dit kán in feite wel, maar het vergt veel en lastige handmatige aanpassingen)
    • Detectoren die over de stopstreep gaan worden automatisch korter gemaakt in de weergave. Hun lengte instelling blijft wel gelijk.
    • Let op! Wanneer de lengte van een wegvak (edge) wordt gewijzigd, wijzigt SUMO ook de lengtes van de daarop aanwezige detectoren (indien ingeladen). Dit is meestal niet gewenst, dus in dit geval moet de detectie nadien worden bijgewerkt.
    • In SUMO kan slechts één lus per rijstrook worden aangelegd. Wanneer er lussen zijn over meerdere rijstroken lopen, moeten hiervoor meerdere lussen worden aangelegd. In de koppeling met CCOL kan hiermee – tot een maximum van 3 stroken – rekening worden gehouden.
  • Na aanleggen van de detectoren moeten die, t.b.v. de koppeling met CCOL, de juiste naam toegewezen krijgen:
    • Selecteer de Inspection modus
    • Klik op de detector
    • Stel bij “id” de gewenste waarde in:
    • Let op: elke detector binnen SUMO moet een unieke naam hebben. Bij detectoren die eigenlijk één detector zijn, zoals een detector over meerdere rijstroken, hebben die binnen SUMO dus alle een andere naam (bv 013a, 013b, etc)

Sla de additionals regelmatig op via het menu File > Save Additionals.

Let op! Bij het inladen van een netwerk in NETEDIT moet de additionals file apart worden ingeladen, via het menu File > Load Additionals… Desgewenst kan gebruik worden gemaakt van een .netcfg bestand waarin wordt aangegeven welke xml files geladen moeten worden; dit valt buiten deze tutorial.

Toevoegen van verkeerslichten

Een laatste stap in het opbouwen van het netwerk is het toevoegen van verkeerslichten.

  • Selecteer de Traffic light modus met sneltoets T of knop 
    op de toolbar
  • Klik op een junction, en vervolgens op de knop “Create TLS”:
  • Dit moet voor alle junctions waar verkeerslichten moeten komen op één of meer van de connections.
  • Indien er meerdere junctions zijn die bij de geregelde kruising horen (wat meestal zo is, zeker wanneer er voetgangers of fietsoversteken aanwezig zijn), moet de verkeerslichten gecombineerd worden tot één TLS:
    • Selecteer de inspection modus
    • Klik op een geregelde junction
    • Vul een gewenste, unieke waarde in bij “tl”
    • Vul bij elke betrokken junction dezelfde waarde in
    • Onthoudt deze waarde, die wordt later gebruikt voor de koppeling met CCOL

Genereren verkeer: dynamische toedeling

Het netwerk is in feite geschikt voor het simuleren van verkeer, echter moet we nog zorgen dat er ook voertuigen gaan rijden. We zullen hiertoe gebruik maken van de mogelijkheid voor synamische toedeling van verkeer. Binnen SUMO werkt dit als volgt:

  • Vooraf aan de simulatie worden middels een command line tool alle trips aangemaakt voor alle voertuigen van een bepaalde type. Een trip is een omschrijving in XML vorm in de vorm “een voertuig van type X vertrekt om Y van A naar B”.
  • De route die het voertuig zal nemen tijdens de simulatie wordt in realtime bepaald op basis van de staat van het netwerk.

Voor de generatie van trips maken we gebruik van de tool OD2TRIPS zoals hier omschreven: http://sumo.dlr.de/wiki/Demand/Importing_O/D_Matrices.

Merk op: SUMO kent een veelheid aan mogelijkheden voor het genereren van verkeer, waarvan dit er één is. Zie hiervoor verder de wiki van SUMO zelf.

Opstellen HB matrix

De eerste stap is het aanmaken van een OD/HB matrix, in de stijl van een “fma” file zoals die vroeger door de applicatie PTV VISSIM konden worden gebruikt. Bv:

$VMR
* vehicle type
4
* From-Time To-Time
7.00 8.00
* Factor:
1.25
*
* Number of districts:
4
* Names:
1 2 3 4
* Data:
  0  70 400  80
 68   0 390  49
380  96   0  27
 40  30  70   0

Hierbij de volgende opmerking: het “verhicle type” moet hier per type voertuig, dus per HB matrix, uniek zijn. Dit wordt later gebruikt voor het koppelen van trips aan een bepaalde voertuig type, zodat de juiste voertuigen in het netwerk worden gezet.

Koppelen SUMO aan OD/HB districten

De OD/HB data vormt de input van de OD2TRIPS tool, die echter ook moet weten wat “district 1” is binnen het SUMO netwerk. Een disctrict wordt binnen SUMO een “TAZ” genoemd, voor “Traffic Analysis Zone”, en wordt gevormd door een herkomst edge en een bestemming edge.

Nemen we ons test netwerk, dan kunnen we voor autoverkeer een viertal districten aanwijzen. Voor elk district moeten we bepalen waar, dat wil zeggen op welke edge, het verkeer het netwerk binnen moet komen; normaal gesproken is dat de buitenste edge. Gebruik de Inspection modus in NETEDIT om voor de betrokken edges de id’s te bepalen, en bouw daarmee een TAZ file op, als volgt:

<tazs>
  <taz id="1">
    <tazSource id="gneE54" weight="1"/>
    <tazSink id="gneE53" weight="1"/>
  </taz>
  <taz id="2">
    <tazSource id="gneE47" weight="1"/>
    <tazSink id="gneE48" weight="1"/>
  </taz>
  <taz id="3">
    <tazSource id="gneE49" weight="1"/>
    <tazSink id="gneE50" weight="1"/>
  </taz>
  <taz id="4">
    <tazSource id="gneE58" weight="1"/>
    <tazSink id="gneE57" weight="1"/>
  </taz>
</tazs>

Hierbij geldt:

  • Het id in “<taz id=”#”>” refereert aan de district naam uit de OD file
  • tazSource is een herkomst edge, id moet dus refereren aan een edge waar het verkeer vandaan komt
  • tazSink is een bestemming edge, id moet dus refereren aan een edge waar het verkeer naar toe gaat
  • weight kan altijd op 1 blijven staan (zie de wiki van SUMO voor meer informatie).

Maak op deze wijze voor alle typen verkeer een TAZ bestand aan.

Genereren trips

We hebben nu alle data om trips aan te kunnen maken. Aanmaken van trips gaat vervolgens middels de command line tool OD2TRIPS. Wanneer SUMO is geinstalleerd is er een start menu entry in Windows “SUMO Command line”. Gebruik dit om een command venster te openen waarin de paden van SUMO juist zijn ingesteld, en geef het volgende commando in:

od2trips --taz-files testnetwerk.car.taz.xml --prefix car -d testnetwerk_car_OS.fma -o testnetwerk_trips_car_OS.xml

Dit moet voor elk type voertuig dat op deze wijze gesimuleerd zal worden, wat natuurlijk een hoop getyp oplevert. Een alternatief is werken met een batch file die kan worden geplaatst in de map waar de fma files en taz files staan, bv. in de vorm van:

"C:\Program Files (x86)\Sumo\bin\od2trips" --taz-files testnetwerk.car.taz.xml --prefix car -d testnetwerk_car_OS.fma -o testnetwerk_trips_car_OS.xml
"C:\Program Files (x86)\Sumo\bin\od2trips" --taz-files testnetwerk.fts.taz.xml --prefix fts -d testnetwerk_fts_OS.fma -o testnetwerk_trips_fts_OS.xml
"C:\Program Files (x86)\Sumo\bin\od2trips" --taz-files testnetwerk.vtg.taz.xml --prefix vtg -d testnetwerk_vtg_OS.fma -o testnetwerk_trips_vtg_OS.xml
pause

Hierbij geldt:

  • –prefix is belangrijk, want dit zorgt ervoor dat elke trip een uniek id heeft. Bij weglaten van deze optie krijgt elke trip slechts een nummer, wat overlap oplevert en tot foutmeldingen leidt.

Uitvoeren van dit commando levert een xml file op met trips. Al naar gelang de hoeveelheid verkeer die gegenereerd moet worden zal dit langer of korter duren.

Aanmaken voertuig typen

We hebben nu bruikbare xml bestanden met trips, echter moet SUMO nog weten welk voertuigtype bij een trip hoort. Dit gaat op basis van het “vehicle type” dat in de fma file (HB matrix) was opgegeven. Maak hiertoe een bestand aan, bv. met de naam “testnetwerk_vehicle_types.xml” met de volgende inhoud:

<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">
    <vTypeDistribution id="4">
        <vType carFollowModel="Krauss" vClass="passenger" id="vehDistCar0" length="4.801" sigma="0.751" tau="0.825"/>
        <vType carFollowModel="Krauss" vClass="passenger" id="vehDistCar1" length="4.705" sigma="0.613" tau="0.786"/>
        <vType carFollowModel="Krauss" vClass="passenger" id="vehDistCar2" length="5.248" sigma="0.435" tau="0.683"/>
    </vTypeDistribution>
    <vType carFollowModel="Krauss" vClass="pedestrian" id="7" length="1" sigma="0.751" tau="0.825"/>
    <vType carFollowModel="Krauss" vClass="bicycle" id="6" length="2" sigma="0.751" tau="0.825"/>
</routes>

Zie http://sumo.dlr.de/wiki/Definition_of_Vehicles,_Vehicle_Types,_and_Routes#Route_and_vehicle_type_distributions voor meer uitleg over voertuig typen, alsook typen distributies. Het is, zeker voor wat betreft autoverkeer, raadzaam te werken met een distributie van typen, met bijvoorbeeld 20 of meer typen erin, zodat een zekere willekeur/spreiding ontstaat ni het gedrag van de voertuigen in de simulatie.

Simuleren

We hebben nu alles klaar om daadwerkelijk te simuleren. In eerste instantie zullen we simuleren zonder koppeling met CCOL, om te controleren of alles in orde is, de simulatie draait en er verkeer gaat rijden.

Opbouwen netwerk configuratie

De laatste stap voordat we het netwerk daadwerkelijk kunnen simuleren, is het opzetten van een configuratie bestand voor de GUI van SUMO. Zie ook hier [http://sumo.dlr.de/wiki/SUMO-GUI#Configuration_Files] voor details over de beschikbare opties binnen dit bestand. Zoals op de SUMO wiki omschreven: middels een .sumocfg bestand kunnen precies dezelfde opties worden opgegeven als wanneer SUMO via de commandline wordt aangeroepen, echter dan in een leesbaar en herbruikbaar XML formaat.

Maak een bestand aan met de extensie .sumocfg, bv. testnetwerk.sumocfg. Hieronder een voorbeeld voor het netwerk dat we tot nu toe hebben opgebouwd:

<?xml version="1.0" encoding="iso-8859-1"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.sf.net/xsd/sumoConfiguration.xsd">
    <input>
        <net-file value="testnetwerk.net.xml"/>
        <additional-files value="testnetwerk.add.xml" />
        <route-files value="testnetwerk_vehicle_types.xml,testnetwerk_trips_car_OS.xml,testnetwerk_trips_fts_OS.xml,testnetwerk_trips_vtg_OS.xml"/>
    </input>
    <time>
        <begin value="25200"/>
        <end value="28800"/>
    </time>
    <step-length value="0.1" />
</configuration>

We geven hier als opties de bestanden op, die we eerder hebben gemaakt: het netwerk, de additionals (in ons geval uitsluitend detectoren), en de trips met vehicle types.

Bij <time> moet de tijd in seconden vanaf 00:00 worden opgegeven: hier dus 7 * 3600 = 25200 tot 8 * 36 = 28800, ofwel van 7:00 tot 8:00.

De variabele <step-length> is belangrijk, zeker wanneer we later een CCOL regelaar gaan koppelen: hier wordt de lengte van een simulatie step opgegeven, in seconden. In dit geval dus 1/10e seconde. Dit moet afgestemd zijn op CCOL, zodat alles later correct verloopt.

Starten en bekijken van de simulatie

Simuleren is nu een kwestie van openen van het .sumocfg bestand in SUMO-GUI, en op de play knop drukken. De simulatie zal niet heel fraai verlopen, omdat die nu zal draaien met door SUMO autoamtisch gegenereerde verkeerslichten.

Het is niet ondenkbaar dat er fouten optreden bij de eerste keer dat de simulatie wordt gestart; de log in de GUI van SUMO geeft informatie over het type fouten dat is opgetreden. Deze kunnen dan via NETEDIT worden verholpen.

Inhoudsopgave