68 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");
69 oc.
addCallExample(
"-c munich_config.cfg",
"start with a configuration file");
86 oc.
addDescription(
"net-file",
"Input",
"Load road network description from FILE");
91 oc.
addDescription(
"route-files",
"Input",
"Load routes descriptions from FILE(s)");
95 oc.
addDescription(
"additional-files",
"Input",
"Load further descriptions from FILE(s)");
99 oc.
addDescription(
"weight-files",
"Input",
"Load edge/lane weights for online rerouting from FILE");
101 oc.
addSynonyme(
"weight-attribute",
"measure",
true);
102 oc.
addDescription(
"weight-attribute",
"Input",
"Name of the xml attribute which gives the edge weight");
105 oc.
addDescription(
"load-state",
"Input",
"Loads a network state from FILE");
107 oc.
addDescription(
"load-state.offset",
"Input",
"Shifts all times loaded from a saved state by the given offset");
109 oc.
addDescription(
"load-state.remove-vehicles",
"Input",
"Removes vehicles with the given IDs from the loaded state");
115 oc.
addSynonyme(
"netstate-dump",
"netstate-output");
116 oc.
addDescription(
"netstate-dump",
"Output",
"Save complete network states into FILE");
118 oc.
addSynonyme(
"netstate-dump.empty-edges",
"netstate.empty-edges");
119 oc.
addSynonyme(
"netstate-dump.empty-edges",
"netstate-output.empty-edges");
120 oc.
addSynonyme(
"netstate-dump.empty-edges",
"dump-empty-edges",
true);
121 oc.
addDescription(
"netstate-dump.empty-edges",
"Output",
"Write also empty edges completely when dumping");
123 oc.
addSynonyme(
"netstate-dump.precision",
"netstate.precision");
124 oc.
addSynonyme(
"netstate-dump.precision",
"netstate-output.precision");
125 oc.
addSynonyme(
"netstate-dump.precision",
"dump-precision",
true);
126 oc.
addDescription(
"netstate-dump.precision",
"Output",
"Write positions and speeds with the given precision (default 2)");
130 oc.
addDescription(
"emission-output",
"Output",
"Save the emission values of each vehicle");
132 oc.
addDescription(
"emission-output.precision",
"Output",
"Write emission values with the given precision (default 2)");
135 oc.
addDescription(
"battery-output",
"Output",
"Save the battery values of each vehicle");
137 oc.
addDescription(
"battery-output.precision",
"Output",
"Write battery values with the given precision (default 2)");
140 oc.
addDescription(
"chargingstations-output",
"Output",
"Write data of charging stations");
143 oc.
addDescription(
"fcd-output",
"Output",
"Save the Floating Car Data");
145 oc.
addDescription(
"fcd-output.geo",
"Output",
"Save the Floating Car Data using geo-coordinates (lon/lat)");
147 oc.
addDescription(
"fcd-output.signals",
"Output",
"Add the vehicle signal state to the FCD output (brake lights etc.)");
149 oc.
addDescription(
"full-output",
"Output",
"Save a lot of information for each timestep (very redundant)");
151 oc.
addDescription(
"queue-output",
"Output",
"Save the vehicle queues at the junctions (experimental)");
153 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)");
155 oc.
addDescription(
"amitran-output",
"Output",
"Save the vehicle trajectories in the Amitran format");
160 oc.
addDescription(
"summary-output",
"Output",
"Save aggregated vehicle departure info into FILE");
164 oc.
addDescription(
"tripinfo-output",
"Output",
"Save single vehicle trip info into FILE");
167 oc.
addDescription(
"tripinfo-output.write-unfinished",
"Output",
"Write tripinfo output for vehicles which have not arrived at simulation end");
171 oc.
addDescription(
"vehroute-output",
"Output",
"Save single vehicle route info into FILE");
174 oc.
addSynonyme(
"vehroute-output.exit-times",
"vehroutes.exit-times");
175 oc.
addDescription(
"vehroute-output.exit-times",
"Output",
"Write the exit times for all edges");
178 oc.
addSynonyme(
"vehroute-output.last-route",
"vehroutes.last-route");
179 oc.
addDescription(
"vehroute-output.last-route",
"Output",
"Write the last route only");
182 oc.
addSynonyme(
"vehroute-output.sorted",
"vehroutes.sorted");
183 oc.
addDescription(
"vehroute-output.sorted",
"Output",
"Sorts the output by departure time");
186 oc.
addSynonyme(
"vehroute-output.dua",
"vehroutes.dua");
187 oc.
addDescription(
"vehroute-output.dua",
"Output",
"Write the output in the duarouter alternatives style");
190 oc.
addSynonyme(
"vehroute-output.intended-depart",
"vehroutes.intended-depart");
191 oc.
addDescription(
"vehroute-output.intended-depart",
"Output",
"Write the output with the intended instead of the real departure time");
194 oc.
addSynonyme(
"vehroute-output.route-length",
"vehroutes.route-length");
195 oc.
addDescription(
"vehroute-output.route-length",
"Output",
"Include total route length in the output");
198 oc.
addDescription(
"vehroute-output.write-unfinished",
"Output",
"Write vehroute output for vehicles which have not arrived at simulation end");
201 oc.
addDescription(
"link-output",
"Output",
"Save links states into FILE");
204 oc.
addDescription(
"bt-output",
"Output",
"Save bluetooth visibilities into FILE (in conjunction with device.btreceiver and device.btsender)");
207 oc.
addDescription(
"lanechange-output",
"Output",
"Record lane changes and their motivations for all vehicles into FILE");
210 oc.
addDescription(
"stop-output",
"Output",
"Record stops and loading/unloading of passenger and containers for all vehicles into FILE");
214 oc.
addDescription(
"movereminder-output",
"Output",
"Save movereminder states of selected vehicles into FILE");
216 oc.
addDescription(
"movereminder-output.vehicles",
"Output",
"List of vehicle ids which shall save their movereminder states");
220 oc.
addDescription(
"save-state.times",
"Output",
"Use INT[] as times at which a network state written");
222 oc.
addDescription(
"save-state.period",
"Output",
"save state repeatedly after TIME period");
224 oc.
addDescription(
"save-state.prefix",
"Output",
"Prefix for network states");
226 oc.
addDescription(
"save-state.suffix",
"Output",
"Suffix for network states (.sbx or .xml)");
228 oc.
addDescription(
"save-state.files",
"Output",
"Files for network states");
232 oc.
addDescription(
"begin",
"Time",
"Defines the begin time in seconds; The simulation starts at this time");
235 oc.
addDescription(
"end",
"Time",
"Defines the end time in seconds; The simulation ends at this time");
238 oc.
addDescription(
"step-length",
"Time",
"Defines the step duration in seconds");
241 oc.
addDescription(
"step-method.ballistic",
"Processing",
"Whether to use ballistic method for the positional update of vehicles (default is a semi-implicit Euler method).");
244 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");
247 oc.
addDescription(
"carfollow.model",
"Processing",
"Select default car following model (Krauss, IDM, ...)");
248 oc.
addSynonyme(
"carfollow.model",
"carfollowing.model",
false);
252 oc.
addDescription(
"route-steps",
"Processing",
"Load routes for the next number of seconds ahead");
255 oc.
addDescription(
"no-internal-links",
"Processing",
"Disable (junction) internal links");
258 oc.
addDescription(
"ignore-junction-blocker",
"Processing",
"Ignore vehicles which block the junction after they have been standing for SECONDS (-1 means never ignore)");
261 oc.
addDescription(
"ignore-route-errors",
"Processing",
"Do not check whether routes are connected");
264 oc.
addDescription(
"ignore-accidents",
"Processing",
"Do not check whether accidents occur");
267 oc.
addDescription(
"collision.action",
"Processing",
"How to deal with collisions: [none,warn,teleport,remove]");
270 oc.
addDescription(
"collision.stoptime",
"Processing",
"Let vehicle stop for TIME before performing collision.action (except for action 'none')");
273 oc.
addDescription(
"collision.check-junctions",
"Processing",
"Enables collisions checks on junctions");
276 oc.
addDescription(
"max-num-vehicles",
"Processing",
"Delay vehicle insertion to stay within the given maximum number");
279 oc.
addDescription(
"max-num-teleports",
"Processing",
"Abort the simulation if the given maximum number of teleports is exceeded");
282 oc.
addDescription(
"scale",
"Processing",
"Scale demand by the given factor (by discarding or duplicating vehicles)");
285 oc.
addDescription(
"time-to-teleport",
"Processing",
"Specify how long a vehicle may wait until being teleported, defaults to 300, non-positive values disable teleporting");
288 oc.
addDescription(
"time-to-teleport.highways",
"Processing",
"The waiting time after which vehicles on a fast road (speed > 69m/s) are teleported if they are on a non-continuing lane");
291 oc.
addDescription(
"waiting-time-memory",
"Processing",
"Length of time interval, over which accumulated waiting time is taken into account (default is 100s.)");
294 oc.
addDescription(
"max-depart-delay",
"Processing",
"How long vehicles wait for departure before being skipped, defaults to -1 which means vehicles are never skipped");
297 oc.
addDescription(
"sloppy-insert",
"Processing",
"Whether insertion on an edge shall not be repeated in same step once failed");
300 oc.
addDescription(
"eager-insert",
"Processing",
"Whether each vehicle is checked separately for insertion on an edge");
303 oc.
addDescription(
"random-depart-offset",
"Processing",
"Each vehicle receives a random offset to its depart value drawn uniformly from [0, TIME]");
306 oc.
addDescription(
"lanechange.duration",
"Processing",
"Duration of a lane change maneuver (default 0)");
309 oc.
addDescription(
"lanechange.overtake-right",
"Processing",
"Whether overtaking on the right on motorways is permitted");
312 oc.
addDescription(
"tls.all-off",
"Processing",
"Switches off all traffic lights.");
315 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");
320 oc.
addDescription(
"pedestrian.model",
"Processing",
"Select among pedestrian models ['nonInteracting', 'striping', 'remote']");
323 oc.
addDescription(
"pedestrian.striping.stripe-width",
"Processing",
"Width of parallel stripes for segmenting a sidewalk (meters) for use with model 'striping'");
326 oc.
addDescription(
"pedestrian.striping.dawdling",
"Processing",
"factor for random slow-downs [0,1] for use with model 'striping'");
329 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)");
332 oc.
addDescription(
"pedestrian.remote.address",
"Processing",
"The address (host:port) of the external simulation");
337 "Select among routing algorithms ['dijkstra', 'astar', 'CH', 'CHWrapper']");
339 oc.
addDescription(
"weights.random-factor",
"Routing",
"Edge weights for routing are dynamically disturbed by a random factor drawn uniformly from [1,FLOAT)");
342 oc.
addDescription(
"astar.all-distances",
"Routing",
"Initialize lookup table for astar from the given file (generated by marouter --all-pairs-output)");
345 oc.
addDescription(
"astar.landmark-distances",
"Processing",
"Initialize lookup table for astar ALT-variant from the given file");
350 oc.
addDescription(
"phemlight-path",
"Emissions",
"Determines where to load PHEMlight definitions from.");
358 oc.
addSynonyme(
"duration-log.disable",
"no-duration-log",
false);
359 oc.
addDescription(
"duration-log.disable",
"Report",
"Disable performance reports for individual simulation steps");
362 oc.
addDescription(
"duration-log.statistics",
"Report",
"Enable statistics on vehicle trips");
365 oc.
addDescription(
"no-step-log",
"Report",
"Disable console output of current simulation step");
372 oc.
addDescription(
"remote-port",
"TraCI Server",
"Enables TraCI Server if set");
374 oc.
addDescription(
"num-clients",
"TraCI Server",
"Expected number of connecting clients");
377 oc.
addDescription(
"python-script",
"TraCI Server",
"Runs TraCI script with embedded python");
383 oc.
addDescription(
"mesosim",
"Mesoscopic",
"Enables mesoscopic simulation");
385 oc.
addDescription(
"meso-edgelength",
"Mesoscopic",
"Length of an edge segment in mesoscopic simulation");
387 oc.
addDescription(
"meso-tauff",
"Mesoscopic",
"Factor for calculating the net free-free headway time");
389 oc.
addDescription(
"meso-taufj",
"Mesoscopic",
"Factor for calculating the net free-jam headway time");
391 oc.
addDescription(
"meso-taujf",
"Mesoscopic",
"Factor for calculating the jam-free headway time");
393 oc.
addDescription(
"meso-taujj",
"Mesoscopic",
"Factor for calculating the jam-jam headway time");
396 "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)");
398 oc.
addDescription(
"meso-multi-queue",
"Mesoscopic",
"Enable multiple queues at edge ends");
400 oc.
addDescription(
"meso-junction-control",
"Mesoscopic",
"Enable mesoscopic traffic light and priority junction handling");
403 "Enable mesoscopic traffic light and priority junction handling for saturated links. This prevents faulty traffic lights from hindering flow in low-traffic situations");
406 "Apply scaled time penalties when driving across tls controlled junctions based on green split instead of checking actual phases");
409 "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.");
411 oc.
addDescription(
"meso-overtaking",
"Mesoscopic",
"Enable mesoscopic overtaking");
413 oc.
addDescription(
"meso-recheck",
"Mesoscopic",
"Time interval for rechecking insertion into the next segment after failure");
422 oc.
addDescription(
"gui-settings-file",
"GUI Only",
"Load visualisation settings from FILE");
425 oc.
addDescription(
"quit-on-end",
"GUI Only",
"Quits the GUI when the simulation stops");
428 oc.
addDescription(
"game",
"GUI Only",
"Start the GUI in gaming mode");
431 oc.
addDescription(
"start",
"GUI Only",
"Start the simulation after loading");
434 oc.
addDescription(
"demo",
"GUI Only",
"Restart the simulation after ending (demo mode)");
437 oc.
addDescription(
"disable-textures",
"GUI Only",
"Do not load background pictures");
440 oc.
addDescription(
"window-size",
"GUI Only",
"Create initial window with the given x,y size");
443 oc.
addDescription(
"window-pos",
"GUI Only",
"Create initial window at the given x,y position");
446 oc.
addDescription(
"tracker-interval",
"GUI Only",
"The aggregation period for value tracker windows");
450 oc.
addDescription(
"osg-view",
"GUI Only",
"Start with an OpenSceneGraph view instead of the regular 2D view");
455 oc.
addDescription(
"gui-testing",
"GUI Only",
"Enable ovelay for screen recognition");
459 oc.
addDescription(
"gui-testing-debug",
"GUI Only",
"Enable output messages during GUI-Testing");
498 if (!oc.
isSet(
"net-file")) {
506 if (oc.
getBool(
"vehroute-output.exit-times") && !oc.
isSet(
"vehroute-output")) {
507 WRITE_ERROR(
"A vehroute-output file is needed for exit times.");
510 if (oc.
isSet(
"gui-settings-file") &&
511 oc.
getString(
"gui-settings-file") !=
"" &&
516 oc.
set(
"start",
"true");
519 WRITE_ERROR(
"You can either restart or quit on end.");
522 if (oc.
getBool(
"meso-junction-control.limited") && !oc.
getBool(
"meso-junction-control")) {
523 oc.
set(
"meso-junction-control",
"true");
528 WRITE_ERROR(
"The begin time should not be negative.");
533 WRITE_ERROR(
"The end time should be after the begin time.");
542 if (oc.
isSet(
"movereminder-output.vehicles") && !oc.
isSet(
"movereminder-output")) {
543 WRITE_ERROR(
"option movereminder-output.vehicles requires option movereminder-output to be set");
547 if (oc.
getBool(
"sloppy-insert")) {
548 WRITE_WARNING(
"The option 'sloppy-insert' is deprecated, because it is now activated by default, see the new option 'eager-insert'.");
551 WRITE_ERROR(
"Only one of the options 'lanechange.duration' or 'lateral-resolution' may be given.");
553 if (oc.
getBool(
"ignore-accidents")) {
554 WRITE_WARNING(
"The option 'ignore-accidents' is deprecated. Use 'collision.action none' instead.");
557 oc.
set(
"verbose",
"true");
560 oc.
set(
"precision",
"3");
563 oc.
set(
"tracker-interval", oc.
getString(
"step-length"));
565 if (oc.
getInt(
"precision") > 2) {
566 if (oc.
isDefault(
"netstate-dump.precision")) {
569 if (oc.
isDefault(
"emission-output.precision")) {
572 if (oc.
isDefault(
"battery-output.precision")) {
577 WRITE_ERROR(
"Unknown model '" + oc.
getString(
"carfollow.model") +
"' for option 'carfollow.model'.");
620 if (oc.
isSet(
"movereminder-output")) {
621 MSBaseVehicle::initMoveReminderOutput(oc);
static bool gOmitEmptyEdgesOnDump
Information whether empty edges shall be written on dump.
void doRegister(const std::string &name, Option *v)
Adds an option under the given name.
static double gLateralResolution
static StringBijection< SumoXMLTag > CarFollowModels
car following models
static void insertRandOptions()
Initialises the given options container with random number options.
static void init()
Static intialization.
static void addReportOptions(OptionsCont &oc)
Adds reporting options to the given container.
static double gMesoTLSPenalty
static void buildStreams()
Builds the streams used possibly by the simulation.
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
void addCallExample(const std::string &example, const std::string &desc)
Add a call example.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
static bool gStateLoaded
Information whether a state has been loaded.
static void initCollisionOptions(const OptionsCont &oc)
static bool gMesoOvertaking
static void addConfigurationOptions(OptionsCont &oc)
Adds configuration options to the given container.
#define WRITE_WARNING(msg)
static OptionsCont & getOptions()
Retrieves the options.
static bool gCheck4Accidents
static void fillOptions()
Inserts options used by the simulation into the OptionsCont-singleton.
void addSynonyme(const std::string &name1, const std::string &name2, bool isDeprecated=false)
Adds a synonyme for an options name (any order)
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
static void init()
Static intialization.
static SUMOTime gTimeToImpatience
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
std::vector< int > IntVector
Definition of a vector of ints.
bool isUsableFileList(const std::string &name) const
Checks whether the named option is usable as a file list (with at least a single file) ...
SUMOTime string2time(const std::string &r)
static SUMOTime gMesoMinorPenalty
void addOptionSubTopic(const std::string &topic)
Adds an option subtopic.
static bool checkOptions()
checks shared options and sets StdDefs
static bool gUsingInternalLanes
Information whether the simulation regards internal lanes.
static void initGlobalOptions(const OptionsCont &oc)
init global model parameters
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
static bool checkOptions(OptionsCont &oc)
check device-specific options
static bool checkOptions()
Checks the set options.
static SUMOTime gTimeToGridlockHighways
bool set(const std::string &name, const std::string &value)
Sets the given value for the named option.
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...
A storage for options typed value containers)
static SUMOTime gTimeToGridlock
static void insertOptions(OptionsCont &oc)
Inserts options for building devices.
static SUMOTime gWaitingTimeMemory
length of memory for waiting times (in millisecs)
static SUMOTime gIgnoreJunctionBlocker
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 bool gSemiImplicitEulerUpdate
static void setMSGlobals(OptionsCont &oc)
Sets the global microsim-options.
void addDescription(const std::string &name, const std::string &subtopic, const std::string &description)
Adds a description for an option.
int getInt(const std::string &name) const
Returns the int-value of the named option (only for Option_Integer)
static SUMOTime gLaneChangeDuration
static bool gMesoLimitedJunctionControl
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.