61 oc.
addCallExample(
"-b 0 -e 1000 -n net.xml -r routes.xml",
"start a simulation from time 0 to 1000 with given net and routes");
62 oc.
addCallExample(
"-c munich_config.cfg",
"start with a configuration file");
77 oc.
addDescription(
"net-file",
"Input",
"Load road network description from FILE");
82 oc.
addDescription(
"route-files",
"Input",
"Load routes descriptions from FILE(s)");
86 oc.
addDescription(
"additional-files",
"Input",
"Load further descriptions from FILE(s)");
90 oc.
addDescription(
"weight-files",
"Input",
"Load edge/lane weights for online rerouting from FILE");
92 oc.
addSynonyme(
"weight-attribute",
"measure",
true);
93 oc.
addDescription(
"weight-attribute",
"Input",
"Name of the xml attribute which gives the edge weight");
96 oc.
addDescription(
"load-state",
"Input",
"Loads a network state from FILE");
98 oc.
addDescription(
"load-state.offset",
"Input",
"Shifts all times loaded from a saved state by the given offset");
100 oc.
addDescription(
"load-state.remove-vehicles",
"Input",
"Removes vehicles with the given IDs from the loaded state");
103 oc.
addDescription(
"junction-taz",
"Input",
"Initialize a TAZ for every junction to use attributes toJunction and fromJunction");
112 oc.
addSynonyme(
"netstate-dump",
"netstate-output");
113 oc.
addDescription(
"netstate-dump",
"Output",
"Save complete network states into FILE");
115 oc.
addSynonyme(
"netstate-dump.empty-edges",
"netstate.empty-edges");
116 oc.
addSynonyme(
"netstate-dump.empty-edges",
"netstate-output.empty-edges");
117 oc.
addSynonyme(
"netstate-dump.empty-edges",
"dump-empty-edges",
true);
118 oc.
addDescription(
"netstate-dump.empty-edges",
"Output",
"Write also empty edges completely when dumping");
120 oc.
addSynonyme(
"netstate-dump.precision",
"netstate.precision");
121 oc.
addSynonyme(
"netstate-dump.precision",
"netstate-output.precision");
122 oc.
addSynonyme(
"netstate-dump.precision",
"dump-precision",
true);
123 oc.
addDescription(
"netstate-dump.precision",
"Output",
"Write positions and speeds with the given precision (default 2)");
127 oc.
addDescription(
"emission-output",
"Output",
"Save the emission values of each vehicle");
129 oc.
addDescription(
"emission-output.precision",
"Output",
"Write emission values with the given precision (default 2)");
132 oc.
addDescription(
"battery-output",
"Output",
"Save the battery values of each vehicle");
134 oc.
addDescription(
"battery-output.precision",
"Output",
"Write battery values with the given precision (default 2)");
137 oc.
addDescription(
"elechybrid-output",
"Output",
"Save the elecHybrid values of each vehicle");
139 oc.
addDescription(
"elechybrid-output.precision",
"Output",
"Write elecHybrid values with the given precision (default 2)");
141 oc.
addDescription(
"elechybrid-output.aggregated",
"Output",
"Write elecHybrid values into one aggregated file");
144 oc.
addDescription(
"chargingstations-output",
"Output",
"Write data of charging stations");
147 oc.
addDescription(
"overheadwiresegments-output",
"Output",
"Write data of overhead wire segments");
150 oc.
addDescription(
"substations-output",
"Output",
"Write data of electrical substation stations");
153 oc.
addDescription(
"fcd-output",
"Output",
"Save the Floating Car Data");
155 oc.
addDescription(
"fcd-output.geo",
"Output",
"Save the Floating Car Data using geo-coordinates (lon/lat)");
157 oc.
addDescription(
"fcd-output.signals",
"Output",
"Add the vehicle signal state to the FCD output (brake lights etc.)");
159 oc.
addDescription(
"fcd-output.distance",
"Output",
"Add kilometrage to the FCD output (linear referencing)");
161 oc.
addDescription(
"fcd-output.acceleration",
"Output",
"Add acceleration to the FCD output");
163 oc.
addDescription(
"fcd-output.max-leader-distance",
"Output",
"Add leader vehicle information to the FCD output (within the given distance)");
165 oc.
addDescription(
"fcd-output.params",
"Output",
"Add generic parameter values to the FCD output");
167 oc.
addDescription(
"fcd-output.filter-edges.input-file",
"Output",
"Restrict fcd output to the edge selection from the given input file");
171 oc.
addDescription(
"full-output",
"Output",
"Save a lot of information for each timestep (very redundant)");
173 oc.
addDescription(
"queue-output",
"Output",
"Save the vehicle queues at the junctions (experimental)");
175 oc.
addDescription(
"vtk-output",
"Output",
"Save complete vehicle positions inclusive speed values in the VTK Format (usage: /path/out will produce /path/out_$TIMESTEP$.vtp files)");
177 oc.
addDescription(
"amitran-output",
"Output",
"Save the vehicle trajectories in the Amitran format");
182 oc.
addDescription(
"summary-output",
"Output",
"Save aggregated vehicle departure info into FILE");
185 oc.
addDescription(
"person-summary-output",
"Output",
"Save aggregated person counts into FILE");
189 oc.
addDescription(
"tripinfo-output",
"Output",
"Save single vehicle trip info into FILE");
192 oc.
addDescription(
"tripinfo-output.write-unfinished",
"Output",
"Write tripinfo output for vehicles which have not arrived at simulation end");
196 oc.
addDescription(
"vehroute-output",
"Output",
"Save single vehicle route info into FILE");
199 oc.
addSynonyme(
"vehroute-output.exit-times",
"vehroutes.exit-times");
200 oc.
addDescription(
"vehroute-output.exit-times",
"Output",
"Write the exit times for all edges");
203 oc.
addSynonyme(
"vehroute-output.last-route",
"vehroutes.last-route");
204 oc.
addDescription(
"vehroute-output.last-route",
"Output",
"Write the last route only");
207 oc.
addSynonyme(
"vehroute-output.sorted",
"vehroutes.sorted");
208 oc.
addDescription(
"vehroute-output.sorted",
"Output",
"Sorts the output by departure time");
211 oc.
addSynonyme(
"vehroute-output.dua",
"vehroutes.dua");
212 oc.
addDescription(
"vehroute-output.dua",
"Output",
"Write the output in the duarouter alternatives style");
215 oc.
addDescription(
"vehroute-output.cost",
"Output",
"Write costs for all routes");
218 oc.
addSynonyme(
"vehroute-output.intended-depart",
"vehroutes.intended-depart");
219 oc.
addDescription(
"vehroute-output.intended-depart",
"Output",
"Write the output with the intended instead of the real departure time");
222 oc.
addSynonyme(
"vehroute-output.route-length",
"vehroutes.route-length");
223 oc.
addDescription(
"vehroute-output.route-length",
"Output",
"Include total route length in the output");
226 oc.
addDescription(
"vehroute-output.write-unfinished",
"Output",
"Write vehroute output for vehicles which have not arrived at simulation end");
229 oc.
addDescription(
"vehroute-output.skip-ptlines",
"Output",
"Skip vehroute output for public transport vehicles");
232 oc.
addDescription(
"vehroute-output.incomplete",
"Output",
"Include invalid routes and route stubs in vehroute output");
235 oc.
addDescription(
"vehroute-output.stop-edges",
"Output",
"Include information about edges between stops");
238 oc.
addDescription(
"link-output",
"Output",
"Save links states into FILE");
241 oc.
addDescription(
"railsignal-block-output",
"Output",
"Save railsignal-blocks into FILE");
244 oc.
addDescription(
"bt-output",
"Output",
"Save bluetooth visibilities into FILE (in conjunction with device.btreceiver and device.btsender)");
247 oc.
addDescription(
"lanechange-output",
"Output",
"Record lane changes and their motivations for all vehicles into FILE");
250 oc.
addDescription(
"lanechange-output.started",
"Output",
"Record start of lane change manoeuvres");
253 oc.
addDescription(
"lanechange-output.ended",
"Output",
"Record end of lane change manoeuvres");
256 oc.
addDescription(
"lanechange-output.xy",
"Output",
"Record coordinates of lane change manoeuvres");
259 oc.
addDescription(
"stop-output",
"Output",
"Record stops and loading/unloading of passenger and containers for all vehicles into FILE");
262 oc.
addSynonyme(
"statistic-output",
"statistics-output");
263 oc.
addDescription(
"statistic-output",
"Output",
"Write overall statistics into FILE");
267 oc.
addDescription(
"movereminder-output",
"Output",
"Save movereminder states of selected vehicles into FILE");
269 oc.
addDescription(
"movereminder-output.vehicles",
"Output",
"List of vehicle ids which shall save their movereminder states");
273 oc.
addDescription(
"save-state.times",
"Output",
"Use TIME[] as times at which a network state written");
275 oc.
addDescription(
"save-state.period",
"Output",
"save state repeatedly after TIME period");
277 oc.
addDescription(
"save-state.prefix",
"Output",
"Prefix for network states");
279 oc.
addDescription(
"save-state.suffix",
"Output",
"Suffix for network states (.xml.gz or .xml)");
281 oc.
addDescription(
"save-state.files",
"Output",
"Files for network states");
283 oc.
addDescription(
"save-state.rng",
"Output",
"Save random number generator states");
285 oc.
addDescription(
"save-state.transportables",
"Output",
"Save person and container states (experimental)");
289 oc.
addDescription(
"begin",
"Time",
"Defines the begin time in seconds; The simulation starts at this time");
292 oc.
addDescription(
"end",
"Time",
"Defines the end time in seconds; The simulation ends at this time");
295 oc.
addDescription(
"step-length",
"Time",
"Defines the step duration in seconds");
298 oc.
addDescription(
"step-method.ballistic",
"Processing",
"Whether to use ballistic method for the positional update of vehicles (default is a semi-implicit Euler method).");
301 oc.
addDescription(
"extrapolate-departpos",
"Processing",
"Whether vehicles that depart between simulation steps should extrapolate the depart position");
304 oc.
addDescription(
"threads",
"Processing",
"Defines the number of threads for parallel simulation");
307 oc.
addDescription(
"lateral-resolution",
"Processing",
"Defines the resolution in m when handling lateral positioning within a lane (with -1 all vehicles drive at the center of their lane");
311 oc.
addDescription(
"route-steps",
"Processing",
"Load routes for the next number of seconds ahead");
314 oc.
addDescription(
"no-internal-links",
"Processing",
"Disable (junction) internal links");
317 oc.
addDescription(
"ignore-junction-blocker",
"Processing",
"Ignore vehicles which block the junction after they have been standing for SECONDS (-1 means never ignore)");
320 oc.
addDescription(
"ignore-route-errors",
"Processing",
"(1) Do not check whether routes are connected. (2) Allow inserting a vehicle in a situation which requires emergency braking.");
323 oc.
addDescription(
"ignore-accidents",
"Processing",
"Do not check whether accidents occur");
326 oc.
addDescription(
"collision.action",
"Processing",
"How to deal with collisions: [none,warn,teleport,remove]");
329 oc.
addDescription(
"collision.stoptime",
"Processing",
"Let vehicle stop for TIME before performing collision.action (except for action 'none')");
332 oc.
addDescription(
"collision.check-junctions",
"Processing",
"Enables collisions checks on junctions");
335 oc.
addDescription(
"collision.mingap-factor",
"Processing",
"Sets the fraction of minGap that must be maintained to avoid collision detection. If a negative value is given, the carFollowModel parameter is used");
338 oc.
addDescription(
"max-num-vehicles",
"Processing",
"Delay vehicle insertion to stay within the given maximum number");
341 oc.
addDescription(
"max-num-teleports",
"Processing",
"Abort the simulation if the given maximum number of teleports is exceeded");
344 oc.
addDescription(
"scale",
"Processing",
"Scale demand by the given factor (by discarding or duplicating vehicles)");
347 oc.
addDescription(
"time-to-teleport",
"Processing",
"Specify how long a vehicle may wait until being teleported, defaults to 300, non-positive values disable teleporting");
350 oc.
addDescription(
"time-to-teleport.highways",
"Processing",
"The waiting time after which vehicles on a fast road (speed > 69km/h) are teleported if they are on a non-continuing lane");
353 oc.
addDescription(
"waiting-time-memory",
"Processing",
"Length of time interval, over which accumulated waiting time is taken into account (default is 100s.)");
356 oc.
addDescription(
"max-depart-delay",
"Processing",
"How long vehicles wait for departure before being skipped, defaults to -1 which means vehicles are never skipped");
359 oc.
addDescription(
"sloppy-insert",
"Processing",
"Whether insertion on an edge shall not be repeated in same step once failed");
362 oc.
addDescription(
"eager-insert",
"Processing",
"Whether each vehicle is checked separately for insertion on an edge");
365 oc.
addDescription(
"random-depart-offset",
"Processing",
"Each vehicle receives a random offset to its depart value drawn uniformly from [0, TIME]");
368 oc.
addDescription(
"lanechange.duration",
"Processing",
"Duration of a lane change maneuver (default 0)");
371 oc.
addDescription(
"lanechange.overtake-right",
"Processing",
"Whether overtaking on the right on motorways is permitted");
374 oc.
addDescription(
"tls.all-off",
"Processing",
"Switches off all traffic lights.");
377 oc.
addDescription(
"tls.actuated.show-detectors",
"Processing",
"Sets default visibility for actuation detectors");
380 oc.
addDescription(
"tls.delay_based.detector-range",
"Processing",
"Sets default range for detecting delayed vehicles");
383 oc.
addDescription(
"time-to-impatience",
"Processing",
"Specify how long a vehicle may wait until impatience grows from 0 to 1, defaults to 300, non-positive values disable impatience growth");
386 oc.
addDescription(
"default.action-step-length",
"Processing",
"Length of the default interval length between action points for the car-following and lane-change models (in seconds). If not specified, the simulation step-length is used per default. Vehicle- or VType-specific settings override the default. Must be a multiple of the simulation step-length.");
389 oc.
addDescription(
"default.carfollowmodel",
"Processing",
"Select default car following model (Krauss, IDM, ...)");
390 oc.
addSynonyme(
"default.carfollowmodel",
"carfollow.model",
false);
393 oc.
addDescription(
"default.speeddev",
"Processing",
"Select default speed deviation. A negative value implies vClass specific defaults (0.1 for the default passenger class");
396 oc.
addDescription(
"default.emergencydecel",
"Processing",
"Select default emergencyDecel value among ('decel', 'default', FLOAT) which sets the value either to the same as the deceleration value, a vClass-class specific default or the given FLOAT in m/s^2");
399 oc.
addDescription(
"overhead-wire-solver",
"Processing",
"Use Kirchhoff's laws for solving overhead wire circuit");
402 oc.
addDescription(
"emergencydecel.warning-threshold",
"Processing",
"Sets the fraction of emergency decel capability that must be used to trigger a warning.");
405 oc.
addDescription(
"parking.maneuver",
"Processing",
"Whether parking simulation includes manoeuvering time and associated lane blocking");
409 oc.
addDescription(
"pedestrian.model",
"Processing",
"Select among pedestrian models ['nonInteracting', 'striping', 'remote']");
412 oc.
addDescription(
"pedestrian.striping.stripe-width",
"Processing",
"Width of parallel stripes for segmenting a sidewalk (meters) for use with model 'striping'");
415 oc.
addDescription(
"pedestrian.striping.dawdling",
"Processing",
"Factor for random slow-downs [0,1] for use with model 'striping'");
418 oc.
addDescription(
"pedestrian.striping.jamtime",
"Processing",
"Time in seconds after which pedestrians start squeezing through a jam when using model 'striping' (non-positive values disable squeezing)");
420 oc.
addDescription(
"pedestrian.striping.jamtime.crossing",
"Processing",
"Time in seconds after which pedestrians start squeezing through a jam while on a pedestrian crossing when using model 'striping' (non-positive values disable squeezing)");
422 oc.
addDescription(
"pedestrian.striping.jamtime.narrow",
"Processing",
"Time in seconds after which pedestrians start squeezing through a jam while on a narrow lane when using model 'striping'");
425 oc.
addDescription(
"pedestrian.striping.reserve-oncoming",
"Processing",
"Fraction of stripes to reserve for oncoming pedestrians");
428 oc.
addDescription(
"pedestrian.striping.reserve-oncoming.junctions",
"Processing",
"Fraction of stripes to reserve for oncoming pedestrians on crossings and walkingareas");
431 oc.
addDescription(
"pedestrian.remote.address",
"Processing",
"The address (host:port) of the external simulation");
434 oc.
addDescription(
"ride.stop-tolerance",
"Processing",
"Tolerance to apply when matching pedestrian and vehicle positions on boarding at individual stops");
439 "Select among routing algorithms ['dijkstra', 'astar', 'CH', 'CHWrapper']");
442 oc.
addDescription(
"weights.random-factor",
"Routing",
"Edge weights for routing are dynamically disturbed by a random factor drawn uniformly from [1,FLOAT)");
445 oc.
addDescription(
"weights.minor-penalty",
"Routing",
"Apply the given time penalty when computing minimum routing costs for minor-link internal lanes");
448 oc.
addDescription(
"weights.priority-factor",
"Routing",
"Consider edge priorities in addition to travel times, weighted by factor");
451 oc.
addDescription(
"astar.all-distances",
"Routing",
"Initialize lookup table for astar from the given file (generated by marouter --all-pairs-output)");
454 oc.
addDescription(
"astar.landmark-distances",
"Routing",
"Initialize lookup table for astar ALT-variant from the given file");
457 oc.
addDescription(
"persontrip.walkfactor",
"Routing",
"Use FLOAT as a factor on pedestrian maximum speed during intermodal routing");
461 "Where are mode changes from car to walking allowed (possible values: 'parkingAreas', 'ptStops', 'allJunctions' and combinations)");
464 oc.
addDescription(
"persontrip.transfer.taxi-walk",
"Routing",
"Where taxis can drop off customers ('allJunctions, 'ptStops')");
467 oc.
addDescription(
"persontrip.transfer.walk-taxi",
"Routing",
"Where taxis can pick up customers ('allJunctions, 'ptStops')");
470 oc.
addDescription(
"persontrip.default.group",
"Routing",
"When set, trips between the same origin and destination will share a taxi by default");
473 oc.
addDescription(
"persontrip.taxi.waiting-time",
"Routing",
"Estimated time for taxi pickup");
476 oc.
addDescription(
"railway.max-train-length",
"Routing",
"Use FLOAT as a maximum train length when initializing the railway router");
481 oc.
addDescription(
"phemlight-path",
"Emissions",
"Determines where to load PHEMlight definitions from.");
489 oc.
addSynonyme(
"duration-log.disable",
"no-duration-log",
false);
490 oc.
addDescription(
"duration-log.disable",
"Report",
"Disable performance reports for individual simulation steps");
493 oc.
addDescription(
"duration-log.statistics",
"Report",
"Enable statistics on vehicle trips");
496 oc.
addDescription(
"no-step-log",
"Report",
"Disable console output of current simulation step");
499 oc.
addDescription(
"step-log.period",
"Report",
"Number of simulation steps between step-log outputs");
504 oc.
addDescription(
"remote-port",
"TraCI Server",
"Enables TraCI Server if set");
506 oc.
addDescription(
"num-clients",
"TraCI Server",
"Expected number of connecting clients");
510 oc.
addDescription(
"mesosim",
"Mesoscopic",
"Enables mesoscopic simulation");
512 oc.
addDescription(
"meso-edgelength",
"Mesoscopic",
"Length of an edge segment in mesoscopic simulation");
514 oc.
addDescription(
"meso-tauff",
"Mesoscopic",
"Factor for calculating the net free-free headway time");
516 oc.
addDescription(
"meso-taufj",
"Mesoscopic",
"Factor for calculating the net free-jam headway time");
518 oc.
addDescription(
"meso-taujf",
"Mesoscopic",
"Factor for calculating the jam-free headway time");
520 oc.
addDescription(
"meso-taujj",
"Mesoscopic",
"Factor for calculating the jam-jam headway time");
523 "Minimum percentage of occupied space to consider a segment jammed. A negative argument causes thresholds to be computed based on edge speed and tauff (default)");
525 oc.
addDescription(
"meso-multi-queue",
"Mesoscopic",
"Enable multiple queues at edge ends");
527 oc.
addDescription(
"meso-lane-queue",
"Mesoscopic",
"Enable separate queues for every lane");
529 oc.
addDescription(
"meso-junction-control",
"Mesoscopic",
"Enable mesoscopic traffic light and priority junction handling");
532 "Enable mesoscopic traffic light and priority junction handling for saturated links. This prevents faulty traffic lights from hindering flow in low-traffic situations");
535 "Apply scaled travel time penalties when driving across tls controlled junctions based on green split instead of checking actual phases");
538 "Apply scaled headway penalties when driving across tls controlled junctions based on green split instead of checking actual phases");
541 "Apply fixed time penalty when driving across a minor link. When using --meso-junction-control.limited, the penalty is not applied whenever limited control is active.");
543 oc.
addDescription(
"meso-overtaking",
"Mesoscopic",
"Enable mesoscopic overtaking");
545 oc.
addDescription(
"meso-recheck",
"Mesoscopic",
"Time interval for rechecking insertion into the next segment after failure");
551 "Number of pre-allocated random number generators to ensure repeatable multi-threaded simulations (should be at least the number of threads for repeatable simulations).");
557 oc.
addDescription(
"gui-settings-file",
"GUI Only",
"Load visualisation settings from FILE");
560 oc.
addDescription(
"quit-on-end",
"GUI Only",
"Quits the GUI when the simulation stops");
563 oc.
addDescription(
"game",
"GUI Only",
"Start the GUI in gaming mode");
566 oc.
addDescription(
"game.mode",
"GUI Only",
"Select the game type ('tls', 'drt')");
569 oc.
addDescription(
"start",
"GUI Only",
"Start the simulation after loading");
572 oc.
addDescription(
"delay",
"GUI Only",
"Use FLOAT in ms as delay between simulation steps");
575 oc.
addDescription(
"breakpoints",
"GUI Only",
"Use TIME[] as times when the simulation should halt");
578 oc.
addDescription(
"edgedata-files",
"GUI Only",
"Load edge/lane weights for visualization from FILE");
581 oc.
addDescription(
"demo",
"GUI Only",
"Restart the simulation after ending (demo mode)");
584 oc.
addDescription(
"disable-textures",
"GUI Only",
"Do not load background pictures");
587 oc.
addDescription(
"registry-viewport",
"GUI Only",
"Load current viewport from registry");
590 oc.
addDescription(
"window-size",
"GUI Only",
"Create initial window with the given x,y size");
593 oc.
addDescription(
"window-pos",
"GUI Only",
"Create initial window at the given x,y position");
596 oc.
addDescription(
"tracker-interval",
"GUI Only",
"The aggregation period for value tracker windows");
600 oc.
addDescription(
"osg-view",
"GUI Only",
"Start with an OpenSceneGraph view instead of the regular 2D view");
605 oc.
addDescription(
"gui-testing",
"GUI Only",
"Enable overlay for screen recognition");
609 oc.
addDescription(
"gui-testing-debug",
"GUI Only",
"Enable output messages during GUI-Testing");
613 oc.
addDescription(
"gui-testing.setting-output",
"GUI Only",
"Save gui settings in the given settings output file");
661 if (!oc.
isSet(
"net-file")) {
669 if (oc.
getBool(
"vehroute-output.exit-times") && !oc.
isSet(
"vehroute-output")) {
670 WRITE_ERROR(
"A vehroute-output file is needed for exit times.");
673 if (oc.
isSet(
"gui-settings-file") &&
674 oc.
getString(
"gui-settings-file") !=
"" &&
679 oc.
set(
"start",
"true");
682 WRITE_ERROR(
"You can either restart or quit on end.");
685 if (oc.
getBool(
"meso-junction-control.limited") && !oc.
getBool(
"meso-junction-control")) {
686 oc.
set(
"meso-junction-control",
"true");
690 oc.
set(
"pedestrian.model",
"nonInteracting");
696 WRITE_ERROR(
"The begin time should not be negative.");
706 WRITE_ERROR(
"The end time should be after the begin time.");
719 if (statePeriod > 0) {
722 for (
const std::string& timeStr : oc.
getStringVector(
"save-state.times")) {
725 if (end > 0 && saveT >= end) {
731 WRITE_ERROR(
"Invalid time '" + timeStr +
"' for option 'save-state.times'. " + e.what());
737 if (oc.
isSet(
"movereminder-output.vehicles") && !oc.
isSet(
"movereminder-output")) {
738 WRITE_ERROR(
"option movereminder-output.vehicles requires option movereminder-output to be set");
742 if (oc.
getBool(
"sloppy-insert")) {
743 WRITE_WARNING(
"The option 'sloppy-insert' is deprecated, because it is now activated by default, see the new option 'eager-insert'.");
746 WRITE_ERROR(
"Only one of the options 'lanechange.duration' or 'lateral-resolution' may be given.");
750 WRITE_ERROR(
"Sublane dynamics are not supported by mesoscopic simulation");
753 if (oc.
getBool(
"ignore-accidents")) {
754 WRITE_WARNING(
"The option 'ignore-accidents' is deprecated. Use 'collision.action none' instead.");
757 oc.
set(
"verbose",
"true");
760 oc.
set(
"precision",
"3");
763 oc.
set(
"tracker-interval", oc.
getString(
"step-length"));
765 if (oc.
getInt(
"precision") > 2) {
766 if (oc.
isDefault(
"netstate-dump.precision")) {
769 if (oc.
isDefault(
"emission-output.precision")) {
772 if (oc.
isDefault(
"battery-output.precision")) {
775 if (oc.
isDefault(
"elechybrid-output.precision")) {
780 WRITE_ERROR(
"Unknown model '" + oc.
getString(
"carfollow.model") +
"' for option 'carfollow.model'.");
783 if (oc.
isSet(
"default.emergencydecel")) {
784 const std::string val = oc.
getString(
"default.emergencydecel");
785 if (val !=
"default" && val !=
"decel") {
789 WRITE_ERROR(
"Invalid value '" + val +
"' for option 'default.emergencydecel'. Must be a FLOAT or 'default' or 'decel'");
802 WRITE_ERROR(
"Invalid time '" + val +
"' for option 'breakpoints'. " + e.what());
807 if (oc.
getInt(
"threads") > 1) {
808 WRITE_ERROR(
"Parallel simulation is only possible when compiled with Fox.");
812 if (oc.
getInt(
"threads") < 1) {
817 WRITE_WARNING(
"Number of threads exceeds number of thread-rngs. Simulation runs with the same seed may produce different results");
820 WRITE_ERROR(
"game.mode must be one of ['tls', 'drt']");
824 if (oc.
isSet(
"persontrip.transfer.car-walk")) {
826 if (opt !=
"parkingAreas" && opt !=
"ptStops" && opt !=
"allJunctions") {
827 WRITE_ERROR(
"Invalid transfer option '" + opt +
"'. Must be one of 'parkingAreas', 'ptStops' and 'allJunctions'");
873 bool integrationMethodSet = !oc.
isDefault(
"step-method.ballistic");
874 bool actionStepLengthSet = !oc.
isDefault(
"default.action-step-length");
878 WRITE_MESSAGE(
"Integration method was set to 'ballistic', since a default action step length was specified.");
881 double givenDefaultActionStepLength = oc.
getFloat(
"default.action-step-length");
885 if (defaultEmergencyDecelOption ==
"default") {
887 }
else if (defaultEmergencyDecelOption ==
"decel") {
904 if (oc.
isSet(
"movereminder-output")) {
905 MSBaseVehicle::initMoveReminderOutput(oc);
#define WRITE_MESSAGE(msg)
#define WRITE_WARNING(msg)
std::vector< std::string > StringVector
Definition of a vector of strings.
bool checkStepLengthMultiple(const SUMOTime t, const std::string &error, SUMOTime deltaT)
check if given SUMOTime is multiple of the step length
std::string time2string(SUMOTime t)
convert SUMOTime to string
SUMOTime string2time(const std::string &r)
convert string to SUMOTime
const int VTYPEPARS_DEFAULT_EMERGENCYDECEL_DEFAULT
const int VTYPEPARS_DEFAULT_EMERGENCYDECEL_DECEL
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
static void initGlobalOptions(const OptionsCont &oc)
init global model parameters
static void init()
Static intialization.
static void insertOptions(OptionsCont &oc)
Inserts options for building devices.
static bool checkOptions(OptionsCont &oc)
check device-specific options
static void buildStreams()
Builds the streams used possibly by the simulation.
static void setMSGlobals(OptionsCont &oc)
Sets the global microsim-options.
static void fillOptions()
Inserts options used by the simulation into the OptionsCont-singleton.
static bool checkOptions()
Checks the set options.
static double gStopTolerance
The tolerance to apply when matching waiting persons and vehicles.
static bool gModelParkingManoeuver
whether parking simulation includes manoeuver time and any associated lane blocking
static double gMinorPenalty
time penalty for passing a minor link when routing
static SUMOTime gTimeToGridlockHighways
static double gDefaultEmergencyDecel
encoding of the string-option default.emergencydecel
static bool gOverheadWireSolver
static double gLateralResolution
static bool gSemiImplicitEulerUpdate
static SUMOTime gTimeToImpatience
static bool gStateLoaded
Information whether a state has been loaded.
static bool gCheck4Accidents
static int gNumSimThreads
how many threads to use for simulation
static bool gOmitEmptyEdgesOnDump
Information whether empty edges shall be written on dump.
static SUMOTime gIgnoreJunctionBlocker
static bool gSublane
whether sublane simulation is enabled (sublane model or continuous lanechanging)
static SUMOTime gLaneChangeDuration
static bool gMesoLimitedJunctionControl
static SUMOTime gActionStepLength
default value for the interval between two action points for MSVehicle (defaults to DELTA_T)
static SUMOTime gWaitingTimeMemory
length of memory for waiting times (in millisecs)
static double gEmergencyDecelWarningThreshold
treshold for warning about strong deceleration
static bool gUsingInternalLanes
Information whether the simulation regards internal lanes.
static int gNumThreads
how many threads to use
static SUMOTime gTimeToGridlock
static void initCollisionOptions(const OptionsCont &oc)
static void init()
Static intialization.
A storage for options typed value containers)
void addDescription(const std::string &name, const std::string &subtopic, const std::string &description)
Adds a description for an option.
void doRegister(const std::string &name, Option *v)
Adds an option under the given name.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
bool set(const std::string &name, const std::string &value)
Sets the given value for the named option.
int getInt(const std::string &name) const
Returns the int-value of the named option (only for Option_Integer)
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
void addSynonyme(const std::string &name1, const std::string &name2, bool isDeprecated=false)
Adds a synonyme for an options name (any order)
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
void addOptionSubTopic(const std::string &topic)
Adds an option subtopic.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
const StringVector & getStringVector(const std::string &name) const
Returns the list of string-value of the named option (only for Option_StringVector)
void addXMLDefault(const std::string &name, const std::string &xmlRoot="")
Adds an XML root element to handle by default. The special root "" denotes the default handler.
static OptionsCont & getOptions()
Retrieves the options.
bool isUsableFileList(const std::string &name) const
Checks whether the named option is usable as a file list (with at least a single file)
void addCallExample(const std::string &example, const std::string &desc)
Add a call example.
static bool createDeviceByOption(const std::string &optionName, const std::string &rootElement="", const std::string &schemaFile="")
Creates the device using the output definition stored in the named option.
static void insertRandOptions()
Initialises the given options container with random number options.
static SUMOTime processActionStepLength(double given)
Checks and converts given value for the action step length from seconds to miliseconds assuring it be...
static StringBijection< SumoXMLTag > CarFollowModels
car following models
static double toDouble(const std::string &sData)
converts a string into the double value described by it by calling the char-type converter
static void addConfigurationOptions(OptionsCont &oc)
Adds configuration options to the given container.
static void addReportOptions(OptionsCont &oc)
Adds reporting options to the given container.
static bool checkOptions()
checks shared options and sets StdDefs