We are happy to announce the release of SUMO version 1.27.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.20312733 (https://doi.org/10.5281/zenodo.20312733)
Starting with this release, vehicles will default to departSpeed "avg" and departLane "best_prob".
As a result, the insertion flow rate is much higher, especially on multi-lane roads.
This release also brings multiple features and fixes relating to taxi simulation, railways and state saving/loading.
The toolchain for GTFS import received major improvements in speed and accuracy.
A significant number of regressions that went unnoticed (by us) over the last 5 years have been fixed.
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
- Cars no longer enter a bidi-edge if it is occupied or already being approached from a higher-priority road
- Added parkingArea attribute reservable (<BOOL>) which prevents multiple vehicles from targeting the same spot when cruising for parking
- The symbolic departSpeed values "desired", "speedLimit", "last" and "avg" now automatically adjust to upcoming stops and intersections
- Taxis:
- Intermodal routing now works with taxis of arbitrary vClass.
- Taxis with idle algorithm taxistand now advance in queue when parking with onRoad="true" and overtaking is not possible
- Added taxi param which permits idle taxis to receive dispatch tasks before pickup is complete from other taxis in the same swapGroup if that would reduce time to pickup
- Saving and loading state is now supported for taxi simulation
- meso simulation now supports internal links
- netedit
- Edge attribute routingType is now supported
- Added 18 more tools to the menu
- netconvert
- VISUM import supports geo-projection and type-files
- Added option --railway.topology.ptline-priority to set railway routingType from ptlines
- Improved heuristic generation of rail signals at stops (optionally splits edges)
- OSM: various geometry improvements (i.e. by interpreting 'placement' tag)
- OSM: various railway directionality improvements
- TraCI: Added function vehicle.getReferenceDistance to retrieve the position of the vehicle in the underlying linear reference system
- tools
- osmWebWizard.py: Adds menu for changing the tileset (i.e. OpenTopoMap and ÖPNVkarte / public transport)
- routeSampler.py: Added option --keep-attributes to preserve vehicle attributes loaded from route input including departure time
- instantOutDiff.py: Added tool for comparing instantInductionLoop output from two simulation runs
- tls_analyzeSplit.py: Added tool to analyze green split of static signal plans (or plan-like logs of dynamic plans)
- sumolib.net.getOptimalPath now uses caching by default (configurable with readNet attribute maxcache) and runs much faster in one-to-many routings (i.e. gtfs2pty.py).
- gtfs2pt.py: Added multiple options increase robustness and correctness of railway simulation
- patchRailPriorities.py: Added tool to patch edge routingType in rail networks (and optionally add stops and signals) to ensure smooth operations on single track lines with passing loops.
- randomTrips.py: Added option --threads to speed up validation. Uses half the number of available cpus by default
- tileGet.py now supports reprojection to UTM and stitching of the downloaded tiles
## Bugfixes
- sumo
- Fixed bug where vehicles that are blocked from entering a stopping place do not collect enough timeLoss (regression in 1.26.0)
- Fixed invalid error when setting option --device.rerouting.mode 8 (regression in 1.26.0)
- Stopping on a long busStop before reaching the designated spot due to jamming now permits passengers to exit if the vehicle is fully within the busStop
- Fixed platform dependency in lane changer
- Rerouters now act according to device.rerouting.mode even when vehicles are not equipped with a rerouting device
- Fixed various issues with symbolic departLane values
- Fixed bugs related to stopping after rerouting
- Fixed invalid timeLoss computation for stopping vehicles
- Fixed unsafe insertion at zipper link
- Fixed crash in scenarios with bidirectional edges
- Fixed various issues that caused behavior to diverge after state loading
- Various fixes to taxi pickup and idling behavior
- Various fixes to railway simulation with respect to safety and deadlocks
- sumo-gui
- Fixed missing text in lane and vehicle dialogs (lane permissions, stop attributes and current driveways) (regression in 1.21.0)
- Fixed multiple crashes when drawing persons
- Fixed bug where fcd-output differs from non-gui simulation after loading state
- netedit
- Fixed multiple minor regressions since version 1.6.0
- Editing custom lane and junction shapes on top of edges is working again (regression in 1.20.0)
- edgedata mode: clicking on intervals works again (regression in 1.22.0)
- It is now possible to select edges that belong to a TAZ using selection mode (regression in 1.22.0)
- taz mode: clicking edge for membership toggle works again (regression in 1.23.0)
- Errors when loading additionals from the command line, are now visible in the message window again (regression in 1.23.0)
- python tool dialogs now permit selecting multiple files (regression in 1.25.0)
- Fixed crash when calling python tool and using the 'back' button (regression in 1.25.0)
- Fixed crash after deleting an object from a group of overlapped objects (regression in 1.25.0)
- Saving of loaded unmodified additionals to a new file name is working again (regression in 1.26.0)
- The network file name shows up in the window title again (regression in 1.26.0)
- Fixed invalid default extension when saving plain-xml (regression in 1.26.0)
- Fixed invalid error when loading stop that ends on lane end
- Fixed problems when setting vehicle attribute departEdge / arrivalEdge
- Fixed crash when defining trip between junctions with stop
- Disabling randomTrips options checkbox 'validate' now takes effect
- Function split edge now takes into account current front element
- netconvert
- Fixed superfluous bidi-edges when repairing ptLine (regression in 1.26.0)
- NEMA computation now works for 4-arm junction without right-turns (also affects some signal plans of non-NEMA junctions)
- Zipper junctions no longer feature internal junctions (which could cause deadlock in the simulation)
- Multiple fixes to VISUM import (connections, permissions)
- OSM: Fixed invalid permissions when bicycles are explicitly forbidden on a pedestrian path
- OSM: fixed bug that was causing invalid rail signals to be generated
- OSM: fixed invalid distances (kilometrage)
- meso: Fixed bug that prevented taxi simulation from terminating (regression in 1.13.0)
- duarouter
- Fixed invalid vehicle departure times when defining poisson flow (very noticeable at low rate)
- Using options --skip-new-routes --ignore-errors no longer writes invalid routes
- TraCI: fixed bugs in vehicle.insertStop
- tools
- gtfs2pt.py: fixed invalid error when block_id is missing (regression in 1.26.0), various other fixes to mapping
- osmWebWizard.py: fixed various platform issues that prevent running.
- osmWebWizard.py: fixed bug that was causing OSM data download to fail
- countEdgeUsage.py: fixed interpretation of poisson and random flows
- generateRerouters.py: various fixes (crashes, notification edges)
- sumolib.net.getShortestPath: fixed bug where no path was found when a route had to loop back to the starting edge
- net2geojson.py now writes valid polygons (i.e. w.r.t. orientation)
## Miscellaneous
- Simulation of railway-taxis with vClass "taxi" no longer triggers rail signals. Instead railway taxis can now be defined as vClass "rail" and taxi behavior will work as expected.
- Option --netstate-dump (also known as raw dump) is now deprecated. fcd-output has been upgraded to permit all attributes formerly only available in netstate-dump.
- The Python module SUMOPy was superseded by hybridPY which extends the functionality and supports Python 3
Have fun with the new release,
Jakob, Yun-Pang, Pablo, Angelo, Micha and Robert