SUMO Simulation: From Network to Signal Optimization
Why start with the network
In SUMO every simulation begins with a network. The network's quality determines the credibility of all downstream timing, demand and analysis. I start from OSM, but OSM is built for navigation, not simulation—it carries lots of irrelevant detail and misses the lane counts and turning connections that simulation needs.
netconvert trade-offs
bashnetconvert --osm-files area.osm.xml \ --geometry.remove --roundabouts.guess \ --ramps.guess --junctions.join \ --tls.guess-signals --tls.join \ -o net.net.xml
Key flags:
--geometry.remove: merge redundant collinear nodes--ramps.guess: guess ramps so arterials are not downgraded--junctions.join: merge complex intersections into one node
A common pitfall
OSM often lacks lane counts; netconvert derives defaults from road class, which can be off by an order of magnitude. I validate via street-view sampling in Python and write corrections back to *.edg.xml.
First principle of simulation: garbage in, garbage out. Network validation is worth twice the time.
Next step
With the network ready, the next step is demand. In the next note I will cover generating flows with OD matrices and duarouter that match peak-hour shapes.