SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RODUAFrame.cpp
Go to the documentation of this file.
1 /****************************************************************************/
9 // Sets and checks options for dua-routing
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
12 // Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <iostream>
34 #include <fstream>
35 #include <ctime>
37 #include <utils/options/Option.h>
40 #include <utils/common/ToString.h>
41 #include "RODUAFrame.h"
42 #include <router/ROFrame.h>
46 
47 #ifdef CHECK_MEMORY_LEAKS
48 #include <foreign/nvwa/debug_new.h>
49 #endif // CHECK_MEMORY_LEAKS
50 
51 
52 // ===========================================================================
53 // method definitions
54 // ===========================================================================
55 void
58  oc.addCallExample("-c <CONFIGURATION>", "run routing with options from file");
59 
60  // insert options sub-topics
61  SystemFrame::addConfigurationOptions(oc); // fill this subtopic, too
62  oc.addOptionSubTopic("Input");
63  oc.addOptionSubTopic("Output");
64  oc.addOptionSubTopic("Processing");
65  oc.addOptionSubTopic("Defaults");
66  oc.addOptionSubTopic("Time");
67  SystemFrame::addReportOptions(oc); // fill this subtopic, too
68 
69  // insert options
70  ROFrame::fillOptions(oc, true);
72  addDUAOptions();
73  // add rand options
75 }
76 
77 
78 void
81  // register import options
82  oc.doRegister("trip-files", 't', new Option_FileName());
83  oc.addSynonyme("trips", "trip-files");
84  oc.addSynonyme("trip-defs", "trip-files", true);
85  oc.addDescription("trip-files", "Input", "Read trip-definitions from FILE(s)");
86 
87  oc.doRegister("route-files", 'r', new Option_FileName());
88  oc.addSynonyme("route-files", "sumo-input", true);
89  oc.addSynonyme("route-files", "sumo", true);
90  oc.addDescription("route-files", "Input", "Read sumo-routes from FILE(s)");
91 
92  // register further processing options
93  // ! The subtopic "Processing" must be initialised earlier !
94  oc.doRegister("weights.expand", new Option_Bool(false));
95  oc.addSynonyme("weights.expand", "expand-weights", true);
96  oc.addDescription("weights.expand", "Processing", "Expand weights behind the simulation's end");
97 }
98 
99 
100 void
103  // register Gawron's DUE-settings
104  oc.doRegister("gawron.beta", new Option_Float(SUMOReal(0.3)));
105  oc.addSynonyme("gawron.beta", "gBeta", true);
106  oc.addDescription("gawron.beta", "Processing", "Use FLOAT as Gawron's beta");
107 
108  oc.doRegister("gawron.a", new Option_Float(SUMOReal(0.05)));
109  oc.addSynonyme("gawron.a", "gA", true);
110  oc.addDescription("gawron.a", "Processing", "Use FLOAT as Gawron's a");
111 
112  oc.doRegister("exit-times", new Option_Bool(false));
113  oc.addDescription("exit-times", "Output", "Write exit times (weights) for each edge");
114 
115  oc.doRegister("keep-all-routes", new Option_Bool(false));
116  oc.addDescription("keep-all-routes", "Processing", "Save routes with near zero probability");
117 
118  oc.doRegister("skip-new-routes", new Option_Bool(false));
119  oc.addDescription("skip-new-routes", "Processing", "Only reuse routes from input, do not calculate new ones");
120 
121  oc.doRegister("logit", new Option_Bool(false));
122  oc.addDescription("logit", "Processing", "Use c-logit model");
123 
124  oc.doRegister("logit.beta", new Option_Float(SUMOReal(-1)));
125  oc.addSynonyme("logit.beta", "lBeta", true);
126  oc.addDescription("logit.beta", "Processing", "Use FLOAT as logit's beta");
127 
128  oc.doRegister("logit.gamma", new Option_Float(SUMOReal(1)));
129  oc.addSynonyme("logit.gamma", "lGamma", true);
130  oc.addDescription("logit.gamma", "Processing", "Use FLOAT as logit's gamma");
131 
132  oc.doRegister("logit.theta", new Option_Float(SUMOReal(-1)));
133  oc.addSynonyme("logit.theta", "lTheta", true);
134  oc.addDescription("logit.theta", "Processing", "Use FLOAT as logit's theta (negative values mean auto-estimation)");
135 
136 }
137 
138 
139 bool
142  bool ok = ROFrame::checkOptions(oc);
143  ok &= (!oc.isSet("departlane") || SUMOVehicleParameter::departlaneValidate(oc.getString("departlane")));
144  ok &= (!oc.isSet("departpos") || SUMOVehicleParameter::departposValidate(oc.getString("departpos")));
145  ok &= (!oc.isSet("departspeed") || SUMOVehicleParameter::departspeedValidate(oc.getString("departspeed")));
146  ok &= (!oc.isSet("arrivallane") || SUMOVehicleParameter::arrivallaneValidate(oc.getString("arrivallane")));
147  ok &= (!oc.isSet("arrivalpos") || SUMOVehicleParameter::arrivalposValidate(oc.getString("arrivalpos")));
148  ok &= (!oc.isSet("arrivalspeed") || SUMOVehicleParameter::arrivalspeedValidate(oc.getString("arrivalspeed")));
149  if (oc.getString("routing-algorithm") != "dijkstra" && oc.getString("weight-attribute") != "traveltime") {
150  WRITE_ERROR("Only routing algorithm 'dijkstra' supports weight-attribute '" + oc.getString("weight-attribute") + "'.");
151  return false;
152  }
153  return ok;
154 }
155 
156 
157 
158 /****************************************************************************/
159