Dear friends and users,
we are happy to announce the release of SUMO version 1.22.0.
The download links are at https://sumo.dlr.de/Download.
If you cite the new release in your publications, please use the DOI
10.5281/zenodo.14796685 (https://doi.org/10.5281/zenodo.14796685 )
This release has been long in the making and is filled to the brim with features and fixes. Major features are a full rewrite of the rail simulation code to improve its speed, support deadlock-free train simulation and obtain additional outputs. Electric vehicles can now automatically find a charging station with the new stationfinder device. Many new Python tools were added and older tools upgraded.
We were humbled by the discovery of 2 regressions in the meso simulation which were impacting roundabouts and queue assignment for 5 years without being noticed. Please check whether your meso simulation results were impacted.
There are many more features and fixes in this release and the most important ones are listed below. For a full list of changes, as always see https://sumo.dlr.de/Changelog.
### Enhancements
- sumo
- Added new stationfinder device which reroutes electric vehicles to a chargingStation depending on it's state of charge
- GLOSA Device now looks several phases into the future and can also take queues into account
- Added new vType attributes jmAdvance and jmExtraGap to configure the behavior on junctions for crossing and merging streams of traffic
- Added new vType attribute lcStrategicLookahead for configuring the lookahead distance when computing strategic best lanes
- Added new insertion behavior departLane="best_prob" to increase throughput on multi-lane roads
- Traffic lights of type actuated can now use the next attribute to switch into fixed-duration phases (and the corresponding lanes will obtain detectors to trigger the switch)
- Traffic lights of type actuated can now react to a pedestrian crossing
- personTrip now supports geo-coordinates
- Added option --mapmatch.taz which works similar to --mapmatch.junctions but uses arbitrary TAZ definitions
- Battery device now includes info about total energy consumption in tripinfo
- railways
- Major improvement in railway simulation speed (simulation time reduced by ~50-75% depending on scenario size)
- Fixed various deadlocks
- The signal block information that is written by option --railsignal-block-output now includes information about the foe relationships between driveways / blocks
- The new option --railsignal-vehicle-output can be used to record entry and exit times of vehicles into signal blocks
- The new option --time-to-teleport.railsignal-deadlock can be used to detect signal based deadlocks
- The new option --time-to-teleport.remove-constraint can be used to resolve detected deadlocks which are caused by a signal constraint by deactivating a responsible
- constraint
- The new option --deadlock-output can be use to log detected deadlocks and also their method of resolution
- Logged deadlocks can be loaded as additional file to prevent them in a subsequent simulation
- netedit
- Undo-redo functionality can now optionally be disabled to improve operational speed
- Undo-redo functionality can now be temporary disabled while loading a file to improve loading speed
- Improved visibility of short edges
- The route for inspected vehicles is now highlighted
- Added 62 python tools to the menu
- sumo-gui
- The lane parameter dialog provide information on driveway/foes that prevent train insertion
- A selection file loaded with **--selection-file** will now cause vehicles, persons and containers to be selected as soon as they are loaded ,
- edge color legend now shows the used attribute/key
- netconvert
- Actuated pedestrian crossings are now actuated by pedestrians rather than vehicles
- Pedestrian crossings created by option **--crossings.guess** are now given priority. The old behavior can be obtained by setting option **--crossings.guess.roundabout-priority false**
- meso
- fcd-output can now be configured to include model attributes *segment, queue, entryTime, eventTime* and *blockTime*
- Vehicle attribute `insertionChecks="none"` can now force insertion
- duarouter
- The input file for ALT-landmarks can now be defined with geo-coordinates
- Option **--scale** can now be used for scaling traffic
- polyconvert
- Added option **--geosjon-files** for official geojson support
- TraCI
- Added `traci.parkingArea.setAcceptedBadges` and `traci.parkingArea.getAcceptedBadges`
- Function `person.appendStage` now supports type `STAGE_TRIP` (`stage.line` is interpreted a `modes` and `stage.intended` as `group`)
- Tools
- matsim_importPlans.py: Added options **-no-bikes** and **--no-rides** for filtering different modes of traffic.
- generateLandmarks.py: New tool for generating ALT-landmark input along the network rim
- randomTrips.py: Added option **--edge-type-file** for affecting probabilities by edge type
- randomTrips.py: Added option **--marouter** to write routes which take into account traffic load on the network
- randomTrips.py: option **--flows** can now be used together with **--pedestrians** or **--persontrips** to create personFlows
- randomTrips.py: Added option **--poisson** to generate poisson-distributed flows (with option **--flows**)
- routeSampler.py: Major increase in processing speed for long routes
- routeSampler.py: Added option **--depart-distribution** to distribute departures within the counting data intervals
- routeSampler.py: Added option **--init-input.remove-overflow** to downsample demand from a given route file where traffic exceeds counts (and keeping as many of the routes as possible)
- edgeDataDiff.py: Added option **--attributes** to allow comparing files with differing attribute names
- plotXMLAttributes.py: Added options **--split-x** and **--split-y** for plotting attributes with list values
- duaIterate.py: When loading trips with taz or junction-taz, vehicles may change their depart and arrival edge in each iteration
- filterDistricts.py: New options **--remove-ids** and **--remove-ids-file** allow filtering out explicit edges
- countEdgeUsage.py: New option **--subpart.via** allow filtering subparts with gaps (i.e. via edges)
- poly2edgedata.py: Added new tool to transform traffic data from polygons (i.e. from geojson) to edgedata (i.e. for routeSampler.py)
- edgeDepartDelay.py: New tool for edge-wise analysis of departDelay from tripinfo-output
- geoTrip2POI.py: New for visualizing geoTrips
- duaIterate_routeCosts.py: New tool to analyze route choice in a finished duaIterate run in an interactive manner
### Bugfixes
- sumo
- Fixed computation of electricity consumption with respect to radialDragCoefficient (regression in 1.8.0)
- Fixed platform specific taxi behavior related to pre-booking (regression in 1.20.0)
- Fixed crash involving pedestrians at pedestrian crossing (regression in 1.21.0)
- Fixed reduced simulation speed of pedestrians (~ factor 5) (regression in 1.21.0)
- Fixed bug that caused parkingAreaReroute to assigns an invalid route (regression in 1.21.0)
- Fixed various routing and route related errors
- Fixed various bugs related to vehicle-pedestrian collisions
- Fixed various deadlocks on junction
- Fixed various parking-related bugs
- Fixed invalid speedErr computation for carFollowModel *CACC*
- Actuated traffic light that use the `next` attribute to skip phases now work correctly if the targeted green phase serves no traffic but leads to a subsequent phase which does
- Fixed emergency braking at `allway_stop` in subsecond simulation
- Fixed invalid right-of-way when turning right-on-red and there is a pedestrian crossing
- netedit
- Fixed crash when moving a big selection (regression in 1.16.0)
- Fixed crash when loading a more than 20k vehicles. (regression in 1.19.0)
- Fixed crash when creating Calibrator flow (regression in 1.19.0)
- Fixed candidate edge coloring in pedestrian mode (regression in 1.19.0)
- E2 multilane detectors can be moved avain (regression in 1.20.0)
- Fixed invalid rectangle selection when zoomed out (regression in 1.20.0)
- Traffic light mode shows traffic light icons again when zoomed out (regression in 1.20.0)
- Fixed various crashes and slowdowns
- Fixed issues where clicks targeted the wrong elements
- "Show geometry point indices" option is now working
- Turnaround connections are now visible for bidi-rail edges
- Moving a junction now moves it's custom shape
- Can now load trips without from / to
- Attribute input by pasting with ctrl+V is now working
- Selection mode function 'select parents' now selects incoming and outgoing lane of selected connections
- Deleting one edge no longer removes crossings from other edges
- sumo-gui
- Fixed framerate drop when zoomed in very far
- Hotkey ALT no longer has the effect of rendering all POIs and polygons at layer 0. Instead, the layer can be customized in the settings dialog
- Fixed invalid travel time when computing reachability for pedestrians and bicycles
- netconvert
- Fixed invalid extra connections from edge where input specifies "no connections" (regression in 1.2.0)
- Fixed invalid sign of geo-coordinate offset in OpenDRIVE input and output
- Fixed bug where right-of-way rules could create deadlock at a traffic light
- Fixed invalid linkState for left turns from the major road at junction type `allway_stop`
- Fixed invalid tlLogic after processing net with **--keep-edges**
- No longer building bicyle left turns from a straight-only vehicle lane (starting from a left-turn lane instead)
- OSM: fixed missing vehicle lane where access=yes and busway:right=lane
- OSM: fixed missing stops in ptline-output
- OSM: fixed missing bus direction at oneway street with `oneway:psv=no`
- meso
- Fixed gridlocks in roundabouts (regression in 1.4.0)
- Fixed invalid queue assignment for turning vehicles (regression in 1.7.0)
- Fixed missing waitingTime in edgeData output
- TraCI
- Fixed crash when calling `vehicle.getNextLinks` and `lane.getLinks` at junction type `allway_stop` or `priority_stop` (regression in 1.21.0)
- Fixed invalid result by `trafficlight.getServedPersonCount`
- Fixed invalid result by `vehicle.couldChangeLane`
- Fixd invalid result by `trafficlight.getSpentDuration` after `setProgramLogic`
- Fixed non-functional libsumo windows wheels
- subscribing to complex types now works with the python API
- Tools
- randomTrips.py: option **--fringe-factor** now works in lefthand networks
- gtfs2pt.py: Import now works when optional 'direction_id' is missing
- tracemapper.py No longer creates routes with the same edge repeated over and over
- osmGet.py: fixed missing public transport stops (also affects osmWebWizard.py)
### Miscellaneous
- Added analysis on the effects of attribute `departLane` on insertion capacity.
Have fun with the new release,
Yun-Pang, Pablo, Mirko, Benjamin, Angelo, Micha, Robert and Jakob