Fixed crash in rail simulation after rerouting #16958
Rerouters with parkingAreaReroute now take into account parkingBadges and acceptedBadges#16966
Output file paths defined with param keys device.ssm.file and device.toc.file are now interpreted relative to the file in which they are defined. #16967
netconvert
Fixed crash when importing OSM data with public transport relations that reference unknown nodes #16953 (regression in 1.24.0)
Fixed inconsistent behavior when setting option --default.spreadtype for OSM import #16952
sumo-gui
Fixed bug where an unrelated vehicle becomes selected after a selected vehicle has left the simulation #16955
meso
Fixed error when loading state with high event times #16936
Files ending with .parquet are now written in Apache Parquet format. This can also be activated with option --output.format parquet. Further applicable options are --output.compression, --output.column-header. Feature is in experimental stage#14694
Files ending with .csv are now written in CSV format. This can also be activated with option --output.format csv. Compressed csv is supported with .csv.gz. Further applicable options are --output.column-header, --output.column-separator. Feature is in experimental stage#16791
A warning is now issued for traffic light programs if a link never gets a green phase even when the program has only a single phase. #16652
A warning is now issued for traffic light programs if two 'G' links target the same lane in the same phase #16636
Added waitingTime to personinfo walk output #16737
closingReroute now supports optional attribute until for setting the estimated duration of closing. Vehicle may wait at the closed edge if a detour would take longer. #16804
Vehicles may now exceed their vType-maxSpeed when using carFollowModel="KraussPS" and going downhill (up to their desiredMaxSpeed) #16805
Vehroute output for persons and containers can now selectively be disabled via param key "has.vehroute.person-device"#16820
It is now possible to model trailers / marshalling by changing vehicle properties upon loading/unloading of containers #8800
Custom traffic light switching rules now support function w:DETID to retrieve the longest individual waiting time in seconds for vehicles on detector #16841
Rerouting trains now always use the current edge as reroute-origin #16852
Added options --default.departspeed and --default.departlane to override the default value when vehicles do not define the respective attributes #16925
meso
<tlLogic> with <param key="meso.tls.control" value="true"/> is now exempt from options --meso-tls-penalty and --meso-tls-flow-penalty and runs with full control #16674
sumo-gui
Various improvement to visual placement of rerouter objects #16716
In game mode, left-click can now toggle switches (rerouters) #16840
The 3D-view can now render vehicles in their 3D-model color #12683
busStop now support <param key="waitingWidth" value="FLOAT"/> to customize spacing of waiting transportables #16724
ChargingStations that have an associated parkingArea are now drawn at the parking space rather than on the road #16670
containerStop now supports attribute angle to draw stationed containers at an angle #16813
vTypes now support <param key="scaleVisual" value="FLOAT"/> to customize individual visual scaling #16849
netconvert
Added options --prefix.junction an --prefix.edge to set independent prefixes for the respective objects #16900
Added option --kept-ids to load a selection of objects that shall not be renamed (with --numerical-ids or a --prefix option) #16902
duarouter
Added option --repair.max-detour-factor to give more control over repairing routes. Vehicles will backtrack rather than take large detours. #16746
tools
randomTrips.py now always generates validated trips #12684
plotXMLAttributes.py: The options --xticks-file and --yticks-file now support giving a column for name aliases to group the respective values #16683
plotStops.py: New tool to simplify drawing a train schedule diagram along a specified route. #16683
generateContinuousRerouters.py: Added option --stop-file to add stops at loaded busStops when rerouting #16719
mapDetectors.py: Added option --all-lanes to place detectors on all lanes of an edge based on a single input coordinate #16751
plot_net_dump.py: Added option --colormap.center two permit plotting colors with TwoSlopeNorm#16778
tileGet.py:: Added 'cartodb_' URL-shortcuts and option --retina to be used with cartodb URLS #16822
net2sel.py: Added new tool to obtain selection file with junctions and edges from .net.xml #16907
routeSampler.py: Named route output now always writes the usage count as route "probability" attribute #16919
route2poly.py: when using --standalone with --scale-width, named routes are scaled by attribute probability #16920
route2poly.py: when using option --scale-width, routes are sorted by count/probability in descending order. Option --filter-count can be used to exlude routes with low count #16921
setting the python root dir now compiles libsumo against the selected python #16755
It is recommended to use a compiler which supports C++17 (e.g. MSVC 2017 or later, g++ 7 or later)
MSVC 2015 is no longer supported (mainly due to updates in SUMOLibraries)
netconvert: OSM-imported edges with type "highway.service" now have type "highway.service|psv" when used by public transport vehicles. This may require adaptations when using option --keep-edges.by-type or --remove-edges.by-type and when using edge-type specific restrictions or meso-settings#16763
The values of --default.departspeed (currently "0") and --default.departlane (currently "first") will be changed in a future version so that vehicles depart with higher speed and on all lanes. Make sure to set explicit values if your simulation relies on the old behavior.
Fixed bug where a loaded network successively changed it's geometry #16609
durarouter
Fixed invalid route output when loading invalid routes with stops and setting option --ignore-errors#16365
Improved error message when loading --astar.landmark-distances together with taz #16400
Fixed crash when loading restriction-params with taz #16514
vClass-specific speed restrictions are now working #16580
TraCI
Setting vehicle parameter 'lcContRight' is now working #16147
Fixed bug where traci.vehicle.moveToXY matched onto the wrong internal lane #15282
Fixed bug where vehicle.slowDown require and additional simulation step to reach the target speed and vehicle.setAcceleration was achieving the wrong acceleration #7361
Fixed invalid active person count after person removal #16192
person.removeStage now works for a taxi-driving stage if the taxi is already en route to pick-up #11620
Subscription to lane.getAngle is now working #16360
Subscriptions to methods with additional parameters now work in libsumo #16383
Function edge.subscribeContext now correctly collects vehicles at low dist regardless of lane number #16422
Function vehicle.getLeader no longer contains traffic that crosses the path of the ego vehicle (without ever becoming a leader) #13842
libsumo subscriptions no longer ignore begin and end time #16411
After vehicle.setType, saveState now saves the new type #16185
Tools
sumolib.net.lane.getClosestLanePosAndDist now gives correct results when lane length differs from shape length #16269
sumolib.xml now properly escapes special characters when generating xml #16318
gtfs2pt.py: Fixed problem that caused invalid routes to be written #16336
gtfs2pt.py: Fixed invalid stop placement on disallowed lane #16352
gtfs2pt.py: Now warning about input that provokes negative stop-until times #16322
gtfs2pt.py: Fixed exaggerated penalty for alternative departure edge #16543
gtfs2pt.py: edge speed is no longer ignored when mapping #16544
route2sel.py: Fixed crash when loading flow/trip that references a route id #16395
randomTrips.py: Fixed inconsistent behavior of option --verbose#11861
randomTrips.py: Fixed override of --edge-permission when using --persontrips#16471
randomTrips.py: can now load custom boolean duarouter option from config #16551
randomTrips.py: writing .rou.xml.gz is now working #16556
scaleRoutes.py: Fixed crashes when input exceeds the configured time range #16467
scaleRoutes.py: option --timeline-pair is now working #16473
scaleRoutes.py: Now works with flows defined via period#16470
route_1htoDay.py: fixed misleading option help text #16466
route_1htoDay.py: now supports option --output-file to put all vehicles into a single file that can be used with scaleTimeLine.py#16468
analyzePersonPlans.py: fixed invalid car use classification #16549
distributeChargingStations.py: Fixed invalid position of generated parking area when input contains negative positions #16560
ptlines2flows.py: Fixed invalid route with --extend-to-fringe when pt line is split #16573
ptlines2flows.py: No longer writing invalid (disconnected) routes when using a modified input network. Instead disconnected parts are bridged with jumps #16292
loading tool config with multiple positional input file arguments now works #16447
departPos=stop now works for any departLane on the stop edge #16133
Pedestrians are now included in full output #16159
Added stop attribute jumpUntil to set a minimum time for the end of a jump #16153
Tram insertion automatically uses moving-block mode when there are no rail signals for tram in the network. The behavior can be configured with option --railsignal.default-classes#16208
Taxis that transfer passengers at a busStop now register at that stop. This shows up in --stop-output. #16263
Road slope is now used in HBEFA3 and HBEFA4 computation #16307
Rerouting device now supports <param key="ignoreDest" value="1"/> to support rerouting to any parkingArea regardless of visibility or occupancy of the current destination. One use case is configuring the idle-algorithm for finding the next taxi stand#16387
The --full-output now includes vehicle road slope (in degrees) in networks with elevation data #16389
Collisions that happen as the direct result of lane-changing are now distinguished as "side"-collisions in errors and --collision-output#16396
The warning "bus stop too short" no longer occurs if a stop fills the whole length of it's lane or if it's parkingLength is set to a sufficiently high value #16391
Zipper junctions with an arbitrary number of conflicting connections are now supported #11874
Electric vehicle model parameter constantPowerIntake is no longer affected by propulsionEfficiency or recuperationEfficiency#16463
vType attribute jmTimegapMinor may now be negative to provoke collisions #16478
person plan element <stop> now supports attribute jump. When this is set a person may jump between subsequent stops at different locations, taking the configured time to do so #6325
Signal plans where a phase loops back onto itself with no alternative next phase now raise a warning #16487
Emergency vehicles may now perform opposite overtaking of queues even when the downstream edge has no opposite edge #16499
collision-output now writes network coordinates of the front and rear of the involved vehicles #16509
SSM device parameter "write-na" can be used to disable conflict information where all values are n/a#16513
public transport rides that are created for a personTrip now use any vehicle that stops at the destination by default. The previous behavior of restricting rides to a single line id can be restored with option --persontrip.ride-public-line. #12263
All carFollowModels now support attributes speedTable, maxAccelProfile and desAccelProfile to model speed-dependant limits on acceleration #3920
netedit
Each object now tracks the file from which it was loaded to facilitate working with projects where multiple route- or additional-files are used #12430
Now drawing cyan dotted contour around object with open popup menu #16344
In delete mode, hovering over a junction will highlight all edges that would be deleted when deleting the junction #14114
Selection of rerouter edges now uses improved highlight and permits toggling of edges #16430
Disabled superfluous attribute stopOffsetException when inspecting lanes where stopOffset is 0 #13985
Menu-toggle 'show bubbles' is now available in additional editing modes and toggles between showing junction shapes and junction bubbles. #16214
netconvert
Added option --junctions.join.parallel-threshold DEGREES to increase user control over joining junctions (with --junctions.join) #16140
Added option --osm.annotate-defaults to document whether speed and lane number were based on OSM data or typemap default values #16094
Trams now use safe and efficient zipper merging where possible when no tram rail signals are defined. Option --railway.signal.permit-unsignalized can be used to configure other vClasses that are subject to this behavior #16216
OSM: newer tagging schemes for on-street parking are now supported #16558
The visual configuration 'Show bubbles' make 'show bubbles' more useful #16214
Improved visibility of guishape evehicle (The large black part now takes on a darker version of the vehicle color) #16262
Color settings dialog now features 'recalibrate rainbow' controls for dynamic vehicle coloring schemes #16384
od2trips
Added warning when a taz has no source or sinks #16112
duarouter
public transport rides that are created for a personTrip now use any vehicle that stops at the destination by default. The previous behavior of restricting rides to a single line id can be restored with option --persontrip.ride-public-line. #12263
TraCI
vehicle.setSpeedMode now supports a 7th bit to control adherence to the road speed limit #3811
traci.start now supports argument traceGetters="print". When this is set, the generated traceFile will print the outputs of all get commands when replayed. #16156
randomTrips.py: When option --validate is set, the generated amount of vehicles is guaranteed (by replacing invalid trips with new valid trips) #8843
randomTrips.py: Using value of --vehicle-class as default for --edge-permission#16471
netcheck.py: Added option --right-of-way to find selected cases of faulty right-of-way rules (currently only on-ramps are checked) #16036
jtcrouter.py: Added option --additional-files which are passed to jtrrouter#16191
csv2xml.py: Added option --flat to convert arbitrary csv files without a schema #16204
plotXMLAttributes.py: Added option --xstr and --ystr to force data interpretation as category #16205
sumolib: function xml.parse is now useful when loading nested elements and not providing argument element_names. The new attribute outputLevel (default 1) controls which elements to retrieve #16211
sumolib: Objects loaded with function xml.parse now preserve their attribute order when serialized with toXML#16254
remap_additionals.py: convert infrastructure from one network to another network (which may differ in geometry, lanes and edge splits) #16206
remap_renamed.py: convert route files and additional files after renaming network ids (i.e. with --numerical-ids) #16252
remap_network.py: New tool for finding correspondence between networks based on geometry #16409
ptlines2flows.py: now sorts written routes and flows by id #16222
ptlines2flows.py: now safely handles missing edges #16293
gtfs2pt.py: now supports option --merged-csv for loading transit schedule data from a single file and option --merged-csv-output for creating such a file from GTFS input. #16310
gtfs2pt.py: now supports option --patched-stops to customize stop-to-lane assignment for individual stops #10720
gtfs2pt.py: now supports option --stops for giving a list of candidate stop edges to guide mapping. This can can greatly improve running time #16326
gtfs2pt.py: improved running time through caching #15856
gtfs2pt.py: now supports option --bus-parking to make buses clear the road when stopping #16415
gtfs2pt.py: added option --write-terminals to include vehicle <params>s that describe the known terminal stops of the full route (even if only part of the route is used) #16154
net2geojson.py: option --traffic-lights can now be used to include the shapes of traffic signals #16419
scaleRoutes.py: now uses a non-constant default timeline #16469
mapDetectors.py: Option --write-params can be used to import further data columns #16554
edgeDataFromFlow.py: Now supports custom column names with option --id-column and --time-column and custom interpretation of time values with option --time-scale#16555
In netedit, the default extension of edge data files is now .xml, instead of .dat.xml #16257
Netedit: unified contextual menus for all elements #15314
The new default emission model is now HBEFA4#15950. Please note that this means a major reduction especially in the values for CO and HC at low speeds.
mapDetectors.py: no longer searching up to range 1000 by default #16571
person-ride attribute lines="ANY" is no longer written as this is the default value when loading a ride without line attribute. #12263
TraCI
the new TraCI version is 22
all TraCI functions in the python client should now return tuples instead of lists #15949
affected functions are inductionloop.getVehicleData, lane.getLinks, trafficlight.getControlledLinks, trafficlight.getConstraints*, trafficlight.getNemaPhaseCalls, vehicle.getLaneChangeStatePretty, vehicle.getNextLinks
the unused function TL_EXTERNAL_STATE has been removed (it had only a server implementation, no known client used it)
the functions simulation.getBusStop* are deprecated in favor of the corresponding functions in the busstop domain #16433
Fixed crash when route contains internal edge #15667
Fixed invalid error when using jump after stopping twice on the same edge #15635
Fixed invalid value of diagnostic param 'caccVehicleMode' when using carFollowModel CACC#15682
Fixed invalid speedErr computation for carFollowModel CACC#15683
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 #15716
Fixed invalid approach speed at allway_stop when setting lane-stopOffset #15449
Fixed crash when using stop with coordinates and option --mapmatch.junctions#15740
Fixed emergency braking at allway_stop in subsecond simulation #15728
Configuring number of doors now takes effect for JuPedSim #15562
Fixed collision between vehicles and pedestrians involving lanes of different widths #15770
Fixed train collision in network without rail signals #15797
Pedestrians no longer walk onto rail_crossing at yellow #15808
Selection mode function 'select parents' now selects incoming and outgoing lane of selected connections #15968
Fixed invalid weights loading values of TAZ source/sinks #16037
Fixed "freezing" when handling very large TAZ #15844
Fixed bug when saving toolcfg where the tool uses positional arguments #16075
Reloading a demand file now raises warnings rather than errors #16027
Deleting one edge no longer removes crossings from other edges #16017
Fixed selecting TAZ edges with a small selection #16100
Command line options --new -o OUTPUT_FILE is now working together. #14989
sumo-gui
Fixed framerate drop when zoomed in very far #15666
Fixed missing elements in settings dialog when switching to another viewing scheme while the dialog is open #15637
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 #15558
Fixed invalid breakpoints when clicking time stamps on messages in meso #15780
Fixed invalid travel time when computing pedestrian reachability in a non-pedestrian network #15792
Fixed invalid travel times when computing pedestrian and bicycle reachability #15793
Saving and loading of meso edge scaling scheme is now working #15902
edgedata-file parsing no longer aborts after encountering a single non-numerical attribute #15903
The rainbow colorscheme is now properly stored in gui settings #16080
netconvert
Fixed invalid extra connections from edge where input specifies "no connections" #15944 (regression in 1.2.0)
Fixed invalid sign of geo-coordinate offset in OpenDRIVE input and output #15624
Fixed bug where right-of-way rules could create deadlock at a traffic light #15150
Fixed bug when removing narrow lanes during import #15718
No longer generating invalid signal plan when giving invalid argument --tls.green.time#15719
Fixed invalid linkState for left turns from the major road at junction type allway_stop#15737
Fixed invalid tlLogic after processing net with --keep-edges#15798
No longer building bicycle left turns from a straight-only vehicle lane (starting from a left-turn lane instead) #15943
Fixed invalid handling of negative stop position in ptstop-files #12183
Option --sidewalks.guess.by-permissions no longer puts sidewalks onto paths that are shared between pedestrians and bicycles #16060
OSM: loading typemap osmNetconvertPedestrians.typ.xml no longer puts sidewalks on both sides of oneway streets (i.e. in the middle of a divided road). Legacy behavior can be restored with option --osm.oneway-reverse-sidewalk#16063
OSM: fixed missing vehicle lane where access=yes and busway:right=lane #16061
Added option --chargingstations-output.aggregated.write-unfinished to include still running charging process in charging station output #15677
The new vType attribute lcContRight can be used to configure lane choice at a lane split where all lanes have equal strategic value. #15579
Added option --insertion-checks to set global defaults for vehicle attribute insertionChecks#15149
Added option --pedestrian.striping.jamfactor to configure the speed of jammed pedestrians (default 0.25) #15610
GLOSA Device now looks several phases into the future and can also take queues into account #15614
Added new vType attributes jmAdvance and jmExtraGap to configure the behavior on junctions for crossing and merging streams of traffic #15654
Added new attribute jmStopLineGapMinor to set the distance from the stop line at non-prioritized links #15442
vType attriubte jmStopLineGap now applies to allway_stop #15448
Added new vType attribute lcStrategicLookahead for configuring the lookahead distance when computing strategic best lanes #14718
Added new vType attribute lcSpeedGainRemainTime which controls the minimum time a vehicle can drive on the new lane after a tactical lane change (formerly hard-coded to 20s) #12109
Added new insertion behavior departLane="best_prob" to increase throughput on multi-lane roads #15661
Stationfinder device now supports state saving and loading #15607
Traffic lights now supports the special value offset="begin" which lets the logic start in cycle-second 0 regardless of simulation begin time #15248
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) #15714
Traffic lights of type actuated can now react to a pedestrian crossing #1746
The new option --railsignal.max-block-length can be used to customized the threshold for warnings / driveway truncation #15819
The new option --railsignal-vehicle-output can be used to record entry and exit times of vehicles into signal blocks #14990
The new option --time-to-teleport.railsignal-deadlock can be used to detect signal based deadlocks #15561
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 #14543
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 #15569
A warning is given for unreasonable combinations of --time-to-teleport options #15816
street-sign-output now sets the sign angle corresponding to road geometry #15671
Traffic lights now supports the special value offset="begin" which lets the logic start in cycle-second 0 regardless of simulation begin time #15248
Actuated pedestrian crossings are now actuated by pedestrians rather than vehicles #7637
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#15833
Option --plain-output-prefix now also saves a .netccfg-file for rebuilding the network from plain-xml files #12998
Improved geometry of pedestrian crossings when a footpath crosses a road #15975
Removed warning about sharp angles on service roads #16062
routeStats.py: Added option --edges-file for counting the number of times per route that a specific edge (i.e. a counting) location was passed) #15900
routeSampler.py: Added option --verbose.timing to print wall-clock-time performance statistics #15910
routeSampler.py: Major increase in processing speed for long routes #15911
routeSampler.py: Added option --depart-distribution to distribute departures within the counting data intervals #15909
routeSampler.py: now warn about duplicate counting data #15997
routeSampler.py: now includes GEH in mismatch-output #16000
routeSampler.py: Added option --geh-scale to permit custom scaling for GEH value (i.e. to avoid averaging daily counts over 24 hours) #16001
routeSampler.py: Options that set attributse to parse (i.e. --edgedata-attribute) now support a list of comma separated attributes (values are added) #16020
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) #15971
edgeDataDiff.py: Added option --geh-scale to permit custom scaling for GEH value and otherwise scaling data to hourly values automatically #16002
edgeDataDiff.py: Added option --attributes to allow comparing files with differing attribute names #15898
xml2csv.py: Added option --keep-attributes to limit the attributes exported to csv #15915
plotXMLAttributes.py: Added options --split-x and --split-y for plotting attributes with list values #15934
sumolib: Geometry helper functions for rotation at offset is now available #15445
duaIterate.py: When loading trips with taz or junction-taz, vehicles may change their depart and arrival edge in each iteration #15983
filterDistricts.py: New options --remove-ids and --remove-ids-file allow filtering out explicit edges #16038
countEdgeUsage.py: Now issues a warning when encountering attributes fromJunction or toJunction #15804
countEdgeUsage.py: print output on number loaded / filtered routes when option --verbose is set #16040
countEdgeUsage.py: New option --subpart.via allow filtering subparts with gaps (i.e. via edges) #16041
netdiff.py: Modified file extension for generated polygons to simplify file filtering in netedit #16042
poly2edgedata.py: Added new tool to transform traffic data from polygons (i.e. from geojson) to edgedata (i.e. for routeSampler.py) #16051
edgesInDistrict.py: now supports .xml.gz inputs #16066
edgeDepartDelay.py: New tool for edge-wise analysis of departDelay from tripinfo-output #16021
geoTrip2POI.py: New for visualizing geoTrips #16028
duaIterate_routeCosts.py: New tool to analyze route choice in a finished duaIterate run in an interactive manner #15912
Added analysis on the effects of attribute departLane on insertion capacity.
Fixed compatibility issues with Ubuntu 24 affecting geo-projections #15618
Option --device.rerouting.railsignal is now inactive by default #15597
If a turning movement has more than one lane and may wait within the intersection, the lanes after the internal junction are now joined into the same internal edge #14776