SUMO - Simulation of Urban MObility
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
ROFrame.cpp
Go to the documentation of this file.
1
/****************************************************************************/
9
// Sets and checks options for routing
10
/****************************************************************************/
11
// SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
12
// Copyright (C) 2001-2013 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 <ctime>
35
#include <
utils/options/OptionsCont.h
>
36
#include <
utils/options/Option.h
>
37
#include <
utils/common/MsgHandler.h
>
38
#include <
utils/common/UtilExceptions.h
>
39
#include <
utils/common/RandHelper.h
>
40
#include <
utils/common/ToString.h
>
41
#include <
utils/common/SUMOTime.h
>
42
#include "
ROFrame.h
"
43
44
#ifdef CHECK_MEMORY_LEAKS
45
#include <
foreign/nvwa/debug_new.h
>
46
#endif // CHECK_MEMORY_LEAKS
47
48
49
// ===========================================================================
50
// method definitions
51
// ===========================================================================
52
void
53
ROFrame::fillOptions
(
OptionsCont
& oc,
bool
forDuarouter) {
54
// register options
55
// register I/O options
56
oc.
doRegister
(
"output-file"
,
'o'
,
new
Option_FileName
());
57
oc.
addSynonyme
(
"output-file"
,
"output"
);
58
oc.
addDescription
(
"output-file"
,
"Output"
,
"Write generated routes to FILE"
);
59
60
oc.
doRegister
(
"vtype-output"
,
new
Option_FileName
(
""
));
61
oc.
addSynonyme
(
"vtype-output"
,
"vtype"
);
62
oc.
addDescription
(
"vtype-output"
,
"Output"
,
"Write used vehicle types into separate FILE"
);
63
64
oc.
doRegister
(
"net-file"
,
'n'
,
new
Option_FileName
());
65
oc.
addSynonyme
(
"net-file"
,
"net"
);
66
oc.
addDescription
(
"net-file"
,
"Input"
,
"Use FILE as SUMO-network to route on"
);
67
68
oc.
doRegister
(
"taz-files"
,
'd'
,
new
Option_FileName
());
69
oc.
addSynonyme
(
"taz-files"
,
"districts"
,
true
);
70
oc.
addDescription
(
"taz-files"
,
"Input"
,
"Read (additional) districts from FILE"
);
71
72
oc.
doRegister
(
"alternative-files"
,
'a'
,
new
Option_FileName
());
73
oc.
addSynonyme
(
"alternative-files"
,
"alternatives-files"
);
74
oc.
addSynonyme
(
"alternative-files"
,
"alternatives"
,
true
);
75
oc.
addDescription
(
"alternative-files"
,
"Input"
,
"Read alternatives from FILE"
);
76
77
oc.
doRegister
(
"flow-files"
,
'f'
,
new
Option_FileName
());
78
oc.
addSynonyme
(
"flow-files"
,
"flows"
);
79
oc.
addSynonyme
(
"flow-files"
,
"flow-definition"
,
true
);
80
oc.
addDescription
(
"flow-files"
,
"Input"
,
"Read flow-definitions from FILE(s)"
);
81
82
if
(forDuarouter) {
83
oc.
doRegister
(
"weight-files"
,
'w'
,
new
Option_FileName
());
84
oc.
addSynonyme
(
"weight-files"
,
"weights"
);
85
oc.
addDescription
(
"weight-files"
,
"Input"
,
"Read network weights from FILE(s)"
);
86
87
oc.
doRegister
(
"lane-weight-files"
,
new
Option_FileName
());
88
oc.
addDescription
(
"lane-weight-files"
,
"Input"
,
"Read lane-based network weights from FILE(s)"
);
89
90
oc.
doRegister
(
"weight-attribute"
,
'x'
,
new
Option_String
(
"traveltime"
));
91
oc.
addSynonyme
(
"weight-attribute"
,
"measure"
,
true
);
92
oc.
addDescription
(
"weight-attribute"
,
"Input"
,
"Name of the xml attribute which gives the edge weight"
);
93
}
94
95
// register the time settings
96
oc.
doRegister
(
"begin"
,
'b'
,
new
Option_String
(
"0"
,
"TIME"
));
97
oc.
addDescription
(
"begin"
,
"Time"
,
"Defines the begin time; Previous trips will be discarded"
);
98
99
oc.
doRegister
(
"end"
,
'e'
,
new
Option_String
(
SUMOTIME_MAXSTRING
,
"TIME"
));
100
oc.
addDescription
(
"end"
,
"Time"
,
"Defines the end time; Later trips will be discarded; Defaults to the maximum time that SUMO can represent"
);
101
102
// register the processing options
103
oc.
doRegister
(
"ignore-errors"
,
new
Option_Bool
(
false
));
104
oc.
addSynonyme
(
"ignore-errors"
,
"continue-on-unbuild"
,
true
);
105
oc.
addDescription
(
"ignore-errors"
,
"Processing"
,
"Continue if a route could not be build"
);
106
107
oc.
doRegister
(
"unsorted-input"
,
new
Option_Bool
(
false
));
108
oc.
addSynonyme
(
"unsorted-input"
,
"unsorted"
);
109
oc.
addDescription
(
"unsorted-input"
,
"Processing"
,
"Assume input is unsorted"
);
110
111
oc.
doRegister
(
"randomize-flows"
,
new
Option_Bool
(
false
));
112
oc.
addDescription
(
"randomize-flows"
,
"Processing"
,
"generate random departure times for flow input"
);
113
114
oc.
doRegister
(
"max-alternatives"
,
new
Option_Integer
(5));
115
oc.
addDescription
(
"max-alternatives"
,
"Processing"
,
"Prune the number of alternatives to INT"
);
116
117
oc.
doRegister
(
"remove-loops"
,
new
Option_Bool
(
false
));
118
oc.
addDescription
(
"remove-loops"
,
"Processing"
,
"Remove loops within the route; Remove turnarounds at start and end of the route"
);
119
120
oc.
doRegister
(
"repair"
,
new
Option_Bool
(
false
));
121
oc.
addDescription
(
"repair"
,
"Processing"
,
"Tries to correct a false route"
);
122
123
oc.
doRegister
(
"weights.interpolate"
,
new
Option_Bool
(
false
));
124
oc.
addSynonyme
(
"weights.interpolate"
,
"interpolate"
,
true
);
125
oc.
addDescription
(
"weights.interpolate"
,
"Processing"
,
"Interpolate edge weights at interval boundaries"
);
126
127
oc.
doRegister
(
"with-taz"
,
new
Option_Bool
(
false
));
128
oc.
addDescription
(
"with-taz"
,
"Processing"
,
"Use origin and destination zones (districts) for in- and output"
);
129
130
if
(forDuarouter) {
131
oc.
doRegister
(
"routing-algorithm"
,
new
Option_String
(
"dijkstra"
));
132
oc.
addDescription
(
"routing-algorithm"
,
"Processing"
,
133
#ifndef HAVE_INTERNAL
// catchall for internal stuff
134
"Select among routing algorithms ['dijkstra', 'astar']"
135
#
else
136
"Select among routing algorithms ['dijkstra', 'astar', 'bulkstar', 'CH', 'CHWrapper']"
137
#endif
138
);
139
140
#ifdef HAVE_INTERNAL // catchall for internal stuff
141
oc.
doRegister
(
"weight-period"
,
new
Option_String
(
"3600"
,
"TIME"
));
142
oc.
addDescription
(
"weight-period"
,
"Processing"
,
"Aggregation period for the given weight files; triggers rebuilding of Contraction Hirarchy"
);
143
#endif
144
}
145
146
// register defaults options
147
oc.
doRegister
(
"departlane"
,
new
Option_String
());
148
oc.
addDescription
(
"departlane"
,
"Defaults"
,
"Assigns a default depart lane"
);
149
150
oc.
doRegister
(
"departpos"
,
new
Option_String
());
151
oc.
addDescription
(
"departpos"
,
"Defaults"
,
"Assigns a default depart position"
);
152
153
oc.
doRegister
(
"departspeed"
,
new
Option_String
());
154
oc.
addDescription
(
"departspeed"
,
"Defaults"
,
"Assigns a default depart speed"
);
155
156
oc.
doRegister
(
"arrivallane"
,
new
Option_String
());
157
oc.
addDescription
(
"arrivallane"
,
"Defaults"
,
"Assigns a default arrival lane"
);
158
159
oc.
doRegister
(
"arrivalpos"
,
new
Option_String
());
160
oc.
addDescription
(
"arrivalpos"
,
"Defaults"
,
"Assigns a default arrival position"
);
161
162
oc.
doRegister
(
"arrivalspeed"
,
new
Option_String
());
163
oc.
addDescription
(
"arrivalspeed"
,
"Defaults"
,
"Assigns a default arrival speed"
);
164
165
oc.
doRegister
(
"defaults-override"
,
new
Option_Bool
(
false
));
166
oc.
addDescription
(
"defaults-override"
,
"Defaults"
,
"Defaults will override given values"
);
167
168
169
// register report options
170
oc.
doRegister
(
"stats-period"
,
new
Option_Integer
(-1));
171
oc.
addDescription
(
"stats-period"
,
"Report"
,
"Defines how often statistics shall be printed"
);
172
173
oc.
doRegister
(
"no-step-log"
,
new
Option_Bool
(
false
));
174
oc.
addDescription
(
"no-step-log"
,
"Report"
,
"Disable console output of route parsing step"
);
175
}
176
177
178
bool
179
ROFrame::checkOptions
(
OptionsCont
& oc) {
180
// check whether the output is valid and can be build
181
if
(!oc.
isSet
(
"output-file"
)) {
182
WRITE_ERROR
(
"No output specified."
);
183
return
false
;
184
}
185
//
186
if
(oc.
getInt
(
"max-alternatives"
) < 2) {
187
WRITE_ERROR
(
"At least two alternatives should be enabled"
);
188
return
false
;
189
}
190
return
true
;
191
}
192
193
194
195
/****************************************************************************/
196
build
buildd
sumo-0.17.1~dfsg
src
router
ROFrame.cpp
Generated on Sun Jun 16 2013 17:30:19 for SUMO - Simulation of Urban MObility by
1.8.3.1