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
activitygen_main.cpp
Go to the documentation of this file.
1
/****************************************************************************/
11
// Main object of the ActivityGen application
12
/****************************************************************************/
13
// SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
14
// Copyright (C) 2001-2013 DLR (http://www.dlr.de/) and contributors
15
// activitygen module
16
// Copyright 2010 TUM (Technische Universitaet Muenchen, http://www.tum.de/)
17
/****************************************************************************/
18
//
19
// This file is part of SUMO.
20
// SUMO is free software: you can redistribute it and/or modify
21
// it under the terms of the GNU General Public License as published by
22
// the Free Software Foundation, either version 3 of the License, or
23
// (at your option) any later version.
24
//
25
/****************************************************************************/
26
27
28
// ===========================================================================
29
// included modules
30
// ===========================================================================
31
#ifdef _MSC_VER
32
#include <
windows_config.h
>
33
#else
34
#include <
config.h
>
35
#endif
36
37
#ifdef HAVE_VERSION_H
38
#include <
version.h
>
39
#endif
40
41
#include <iostream>
42
#include <exception>
43
#include <typeinfo>
44
#include <
router/RONet.h
>
45
#include <
router/ROLoader.h
>
46
#include <
router/RONetHandler.h
>
47
#include <
duarouter/RODUAEdgeBuilder.h
>
48
#include <
utils/options/OptionsIO.h
>
49
#include <
utils/common/MsgHandler.h
>
50
#include <
utils/common/ToString.h
>
51
#include <
utils/xml/XMLSubSys.h
>
52
#include <
utils/common/FileHelpers.h
>
53
#include <
utils/common/RandHelper.h
>
54
#include <
utils/common/SystemFrame.h
>
55
#include <
utils/options/OptionsCont.h
>
56
#include <
utils/iodevices/OutputDevice.h
>
57
#include <
utils/iodevices/OutputDevice.h
>
58
//ActivityGen
59
#include "
AGFrame.h
"
60
#include "
AGActivityGen.h
"
61
#include "
city/AGTime.h
"
62
63
#ifdef CHECK_MEMORY_LEAKS
64
#include <
foreign/nvwa/debug_new.h
>
65
#endif // CHECK_MEMORY_LEAKS
66
67
68
// ===========================================================================
69
// method definitions
70
// ===========================================================================
71
73
void
74
loadNet
(
RONet
& toFill,
ROAbstractEdgeBuilder
& eb) {
75
OptionsCont
& oc =
OptionsCont::getOptions
();
76
std::string file = oc.
getString
(
"net-file"
);
77
if
(file ==
""
) {
78
throw
ProcessError
(
"Missing definition of network to load!"
);
79
}
80
if
(!
FileHelpers::exists
(file)) {
81
throw
ProcessError
(
"The network file '"
+ file +
"' could not be found."
);
82
}
83
PROGRESS_BEGIN_MESSAGE
(
"Loading net"
);
84
RONetHandler
handler(toFill, eb);
85
handler.
setFileName
(file);
86
if
(!
XMLSubSys::runParser
(handler, file)) {
87
PROGRESS_FAILED_MESSAGE
();
88
throw
ProcessError
();
89
}
else
{
90
PROGRESS_DONE_MESSAGE
();
91
}
92
}
93
94
95
int
96
main
(
int
argc,
char
* argv[]) {
97
int
ret = 0;
98
OptionsCont
& oc =
OptionsCont::getOptions
();
99
RONet
* net = 0;
100
try
{
101
// Initialise subsystems and process options
102
XMLSubSys::init
();
103
AGFrame::fillOptions
();
104
OptionsIO::getOptions
(
true
, argc, argv);
105
if
(oc.
processMetaOptions
(argc < 2)) {
106
SystemFrame::close
();
107
return
0;
108
}
109
XMLSubSys::setValidation
(oc.
getBool
(
"xml-validation"
));
110
MsgHandler::initOutputOptions
();
111
RandHelper::initRandGlobal
();
112
113
// Load network
114
net =
new
RONet
();
115
RODUAEdgeBuilder
builder(oc.
getBool
(
"weights.expand"
), oc.
getBool
(
"weights.interpolate"
));
116
loadNet
(*net, builder);
117
WRITE_MESSAGE
(
"Loaded "
+
toString
(net->
getEdgeNoWithoutInternal
()) +
" edges."
);
118
if
(oc.
getBool
(
"debug"
)) {
119
WRITE_MESSAGE
(
"\n\t ---- begin AcitivtyGen ----\n"
);
120
}
121
122
std::string statFile = oc.
getString
(
"stat-file"
);
123
OutputDevice::createDeviceByOption
(
"output-file"
,
"routes"
);
124
AGTime
duration(1, 0, 0);
125
AGTime
begin(0);
126
AGTime
end(0);
127
if
(oc.
isSet
(
"duration-d"
)) {
128
duration.
setDay
(oc.
getInt
(
"duration-d"
));
129
}
130
if
(oc.
isSet
(
"begin"
)) {
131
begin.
addSeconds
(oc.
getInt
(
"begin"
) % 86400);
132
}
133
if
(oc.
isSet
(
"end"
)) {
134
end.
addSeconds
(oc.
getInt
(
"end"
) % 86400);
135
}
136
AGActivityGen
actiGen(statFile,
OutputDevice::getDevice
(oc.
getString
(
"output-file"
)), net);
137
actiGen.
importInfoCity
();
138
actiGen.
makeActivityTrips
(duration.
getDay
(), begin.
getTime
(), end.
getTime
());
139
140
if
(oc.
getBool
(
"debug"
)) {
141
WRITE_MESSAGE
(
"\n\t ---- end of ActivityGen ----\n"
);
142
}
143
ret = 0;
144
}
catch
(
const
ProcessError
& e) {
145
if
(std::string(e.what()) != std::string(
"Process Error"
) && std::string(e.what()) != std::string(
""
)) {
146
WRITE_ERROR
(e.what());
147
}
148
MsgHandler::getErrorInstance
()->
inform
(
"Quitting (on error)."
,
false
);
149
ret = 1;
150
#ifndef _DEBUG
151
}
catch
(
const
std::exception& e) {
152
if
(std::string(e.what()) != std::string(
""
)) {
153
WRITE_ERROR
(e.what());
154
}
155
MsgHandler::getErrorInstance
()->
inform
(
"Quitting (on error)."
,
false
);
156
ret = 1;
157
}
catch
(...) {
158
MsgHandler::getErrorInstance
()->
inform
(
"Quitting (on unknown error)."
,
false
);
159
ret = 1;
160
#endif
161
}
162
SystemFrame::close
();
163
if
(ret == 0) {
164
std::cout <<
"Success."
<< std::endl;
165
}
166
return
ret;
167
}
168
169
/****************************************************************************/
170
home
delphi
sumo
src
activitygen
activitygen_main.cpp
Generated by
1.8.2