38 #include <xercesc/sax/SAXException.hpp>
39 #include <xercesc/sax/SAXParseException.hpp>
81 #ifdef CHECK_MEMORY_LEAKS
83 #endif // CHECK_MEMORY_LEAKS
104 if (oc.
isSet(
"weight-files")) {
107 if (oc.
isSet(
"lane-weight-files")) {
123 std::ofstream outFile(oc.
getString(
"all-pairs-output").c_str(), std::ios::binary);
129 const int numTotalEdges = (int)net.
getEdgeNo();
130 for (
int i = numInternalEdges; i < numTotalEdges; i++) {
131 const Dijkstra::EdgeInfo& ei = router.getEdgeInfo(i);
133 router.compute(ei.edge, 0, 0, 0, into);
134 for (
int j = numInternalEdges; j < numTotalEdges; j++) {
148 for (std::map<std::string, ROEdge*>::const_iterator i = net.
getEdgeMap().begin(); i != net.
getEdgeMap().end(); ++i) {
167 const std::string measure = oc.
getString(
"weight-attribute");
168 const std::string routingAlgorithm = oc.
getString(
"routing-algorithm");
171 if (measure ==
"traveltime") {
172 if (routingAlgorithm ==
"dijkstra") {
174 if (oc.
getInt(
"paths") > 1) {
182 if (oc.
getInt(
"paths") > 1) {
190 }
else if (routingAlgorithm ==
"astar") {
192 if (oc.
getInt(
"paths") > 1) {
200 if (oc.
getInt(
"paths") > 1) {
208 }
else if (routingAlgorithm ==
"CH") {
219 }
else if (routingAlgorithm ==
"CHWrapper") {
227 throw ProcessError(
"Unknown routing Algorithm '" + routingAlgorithm +
"'!");
232 if (measure ==
"CO") {
233 op = &ROEdge::getEmissionEffort<PollutantsInterface::CO>;
234 }
else if (measure ==
"CO2") {
235 op = &ROEdge::getEmissionEffort<PollutantsInterface::CO2>;
236 }
else if (measure ==
"PMx") {
237 op = &ROEdge::getEmissionEffort<PollutantsInterface::PM_X>;
238 }
else if (measure ==
"HC") {
239 op = &ROEdge::getEmissionEffort<PollutantsInterface::HC>;
240 }
else if (measure ==
"NOx") {
241 op = &ROEdge::getEmissionEffort<PollutantsInterface::NO_X>;
242 }
else if (measure ==
"fuel") {
243 op = &ROEdge::getEmissionEffort<PollutantsInterface::FUEL>;
244 }
else if (measure ==
"noise") {
247 throw ProcessError(
"Unknown measure (weight attribute '" + measure +
"')!");
250 if (oc.
getInt(
"paths") > 1) {
258 if (oc.
getInt(
"paths") > 1) {
272 if (oc.
isSet(
"timeline")) {
278 const std::string assignMethod = oc.
getString(
"assignment-method");
279 if (assignMethod ==
"incremental") {
280 a.incremental(oc.
getInt(
"max-iterations"));
281 }
else if (assignMethod ==
"SUE") {
282 a.sue(oc.
getInt(
"max-iterations"), oc.
getInt(
"max-inner-iterations"),
286 bool haveOutput =
false;
289 for (std::vector<ODCell*>::const_iterator i = matrix.getCells().begin(); i != matrix.getCells().end(); ++i) {
290 const ODCell*
const c = *i;
293 (*j)->setCosts(router->
recomputeCosts((*j)->getEdgeVector(), &defaultVehicle, begin));
294 (*j)->writeXMLDefinition(*dev, 0,
true,
false);
303 for (std::vector<ODCell*>::const_iterator i = matrix.getCells().begin(); i != matrix.getCells().end(); ++i) {
304 const ODCell*
const c = *i;
309 matrix.writeDefaultAttrs(*dev, oc.
getBool(
"ignore-vehicle-type"), c);
313 (*j)->writeXMLDefinition(*dev, 0,
true,
false);
320 for (std::vector<std::string>::const_iterator
id = deps->second.begin();
id != deps->second.end(); ++id) {
322 matrix.writeDefaultAttrs(*dev, oc.
getBool(
"ignore-vehicle-type"), c);
326 (*j)->writeXMLDefinition(*dev, 0,
true,
false);
339 for (std::vector<ODCell*>::const_iterator i = matrix.getCells().begin(); i != matrix.getCells().end(); ++i) {
340 if ((*i)->end > lastCell) {
341 lastCell = (*i)->end;
345 for (
SUMOTime start = begin; start <
MIN2(end, lastCell); start += interval) {
394 if (oc.
isSet(
"all-pairs-output")) {
400 std::cout <<
"Success." << std::endl;
428 }
catch (XERCES_CPP_NAMESPACE::SAXParseException& e) {
431 }
catch (XERCES_CPP_NAMESPACE::SAXException& e) {
439 if (std::string(e.what()) != std::string(
"Process Error") && std::string(e.what()) != std::string(
"")) {
449 std::cout <<
"Success." << std::endl;
SUMOReal getNoLoaded() const
Returns the number of loaded vehicles.
Computes the shortest path through a contracted network.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
std::vector< std::string > getStringVector(const std::string &name) const
Returns the list of string-vector-value of the named option (only for Option_String) ...
bool hasPermissions() const
static void init()
Initialises the xml-subsystem.
Computes the shortest path through a network using the Dijkstra algorithm.
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
OutputDevice * getRouteOutput(const bool alternative=false)
const std::map< std::string, std::pair< std::vector< std::string >, std::vector< std::string > > > & getDistricts() const
Retrieves all TAZ (districts) from the network.
SUMOReal getFlow(const SUMOReal time) const
size_t getEdgeNo() const
Returns the total number of edges the network contains including internal edges.
static SUMOReal getNoiseEffort(const ROEdge *const edge, const ROVehicle *const veh, SUMOReal time)
static void setValidation(const std::string &validationScheme, const std::string &netValidationScheme)
Enables or disables validation.
void initNet(RONet &net, ROLoader &loader, OptionsCont &oc)
Interface for building instances of duarouter-edges.
void makeDistricts(const std::map< std::string, std::pair< std::vector< std::string >, std::vector< std::string > > > &districts)
create districts from description
void setApplicationDescription(const std::string &appDesc)
Sets the application description.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
bool loadWeights(RONet &net, const std::string &optionName, const std::string &measure, bool useLanes)
Loads the net weights.
SUMOReal getTravelTime(const ROEdge *const edge, const ROVehicle *const , SUMOReal)
static std::ostream & writeFloat(std::ostream &strm, SUMOReal value)
Writes a float binary.
std::string time2string(SUMOTime t)
Computes the shortest path through a network using the A* algorithm.
EdgeFunc getFunc() const
Returns the function of the edge.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid for usage within duarouter...
void computeAllPairs(RONet &net, OptionsCont &oc)
An internal edge which models vehicles driving across a junction. This is currently not used for rout...
SUMOReal getFloat(const std::string &name) const
Returns the SUMOReal-value of the named option (only for Option_Float)
std::vector< const ROEdge * > ConstROEdgeVector
Parser and container for routes during their loading.
std::vector< RORoute * > pathsVector
the list of paths / routes
const std::string DEFAULT_VTYPE_ID
static void close()
Closes all of an applications subsystems.
Computes the shortest path through a network using the Dijkstra algorithm.
const std::map< std::string, ROEdge * > & getEdgeMap() const
static void setArgs(int argc, char **argv)
Stores the command line arguments for later parsing.
static OptionsCont & getOptions()
Retrieves the options.
static void initRandGlobal(MTRand *which=0)
Reads the given random number options and initialises the random number generator in accordance...
void loadMatrix(OptionsCont &oc)
read a matrix in one of several formats
void openOutput(const std::string &filename, const std::string altFilename, const std::string typeFilename)
Opens the output for computed routes.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
const std::string & getID() const
Returns the id.
A vehicle as used by router.
A single O/D-matrix cell.
std::string origin
Name of the origin district.
static SUMOReal getPenalizedTT(const ROEdge *const e, const ROVehicle *const v, SUMOReal t)
Returns the traveltime on an edge including penalties.
static std::string _2str(const E *const data)
An O/D (origin/destination) matrix.
bool processMetaOptions(bool missingOptions)
Checks for help and configuration output, returns whether we should exit.
const std::string getBuildName(const std::string &version)
attach some build flags to the version string
void loadRoutes(OptionsCont &oc, SUMOSAXHandler &handler)
read SUMO routes
SUMOTime string2time(const std::string &r)
A container for districts.
SUMOReal vehicleNumber
The number of vehicles.
std::map< SUMOTime, std::vector< std::string > > departures
mapping of departure times to departing vehicles, if already fixed
void writeInterval(OutputDevice &dev, const SUMOTime begin, const SUMOTime end, const RONet &net, const ROVehicle *const veh)
static SUMOReal getTravelTime(const ROEdge *const e, const ROVehicle *const v, SUMOReal t)
Returns the traveltime on an edge without penalties.
static void setGlobalOptions(bool useBoundariesOnOverrideTT, bool useBoundariesOnOverrideE, bool interpolate, bool isParallel)
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
static SUMOReal getPenalizedEffort(const ROEdge *const e, const ROVehicle *const v, SUMOReal t)
Returns the effort to pass an edge including penalties.
void computeRoutes(RONet &net, ROLoader &loader, OptionsCont &oc)
SUMOTime begin
The begin time this cell describes.
virtual void loadNet(RONet &toFill, ROAbstractEdgeBuilder &eb)
Loads the network.
A basic edge for routing applications.
int getInternalEdgeNumber() const
Returns the number of internal edges the network contains.
static void fillOptions()
Inserts options used by duarouter into the OptionsCont-singleton.
static void getOptions()
Parses the command line arguments and loads the configuration.
The router's network representation.
Structure representing possible vehicle parameter.
SUMOReal getLength() const
Returns the length of the edge.
static OutputDevice & getDeviceByOption(const std::string &name)
Returns the device described by the option.
void inform(std::string msg, bool addType=true)
adds a new error to the list
A storage for options typed value containers)
void applyCurve(const Distribution_Points &ps)
Splits the stored cells dividing them on the given time line.
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 storage of an output device and its base (abstract) implementation.
virtual SUMOReal recomputeCosts(const std::vector< const E * > &edges, const V *const v, SUMOTime msTime) const =0
std::string destination
Name of the destination district.
bool closeTag()
Closes the most recently opened tag.
SUMOVTypeParameter * getVehicleTypeSecure(const std::string &id)
Retrieves the named vehicle type.
SUMOReal getTravelTime(const ROVehicle *const veh, SUMOReal time) const
Returns the travel time for this edge.
SUMOTime end
The end time this cell describes.
int getInt(const std::string &name) const
Returns the int-value of the named option (only for Option_Integer)
void clear()
Clears information whether an error occured previously.
#define WRITE_MESSAGE(msg)
void cleanup(SUMOAbstractRouter< ROEdge, ROVehicle > *router)
closes the file output for computed routes and deletes routers and associated threads if necessary ...
static void initOutputOptions()
A basic edge for routing applications.
SUMOReal getSpeed() const
Returns the speed allowed on this edge.
vehicles ignoring classes
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
Distribution_Points parseTimeLine(const std::vector< std::string > &def, bool timelineDayInHours)
split the given timeline
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
Computes the shortest path through a contracted network.
static SUMOReal getTravelTimeStatic(const ROEdge *const edge, const ROVehicle *const veh, SUMOReal time)
Returns the travel time for the given edge.
int main(int argc, char *argv[])
void setApplicationName(const std::string &appName, const std::string &fullName)
Sets the application name.