SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
RONet Class Reference

The router's network representation. More...

#include <RONet.h>

Inheritance diagram for RONet:
RODFNet

Public Member Functions

void cleanup (SUMOAbstractRouter< ROEdge, ROVehicle > *router)
 closes the file output for computed routes and deletes routers and associated threads if necessary More...
 
const std::map< std::string,
ROEdge * > & 
getEdgeMap () const
 
size_t getEdgeNo () const
 Returns the total number of edges the network contains including internal edges. More...
 
int getInternalEdgeNumber () const
 Returns the number of internal edges the network contains. More...
 
OutputDevicegetRouteOutput (const bool alternative=false)
 
bool hasRestrictions () const
 
void openOutput (const std::string &filename, const std::string altFilename, const std::string typeFilename)
 Opens the output for computed routes. More...
 
 RONet ()
 Constructor. More...
 
void setRestrictionFound ()
 
virtual ~RONet ()
 Destructor. More...
 
Insertion and retrieval of graph parts
virtual bool addEdge (ROEdge *edge)
 
bool addDistrict (const std::string id, ROEdge *source, ROEdge *sink)
 
bool addDistrictEdge (const std::string tazID, const std::string edgeID, const bool isSource)
 
const std::map< std::string,
std::pair< std::vector
< std::string >, std::vector
< std::string > > > & 
getDistricts () const
 Retrieves all TAZ (districts) from the network. More...
 
ROEdgegetEdge (const std::string &name) const
 Retrieves an edge from the network. More...
 
void addNode (RONode *node)
 
RONodegetNode (const std::string &id) const
 Retrieves an node from the network. More...
 
void addBusStop (const std::string &id, SUMOVehicleParameter::Stop *stop)
 
void addContainerStop (const std::string &id, SUMOVehicleParameter::Stop *stop)
 
const SUMOVehicleParameter::StopgetBusStop (const std::string &id) const
 Retrieves a bus stop from the network. More...
 
const SUMOVehicleParameter::StopgetContainerStop (const std::string &id) const
 Retrieves a container stop from the network. More...
 
Insertion and retrieval of vehicle types, vehicles, routes, and route definitions
bool checkVType (const std::string &id)
 Checks whether the vehicle type (distribution) may be added. More...
 
virtual bool addVehicleType (SUMOVTypeParameter *type)
 Adds a read vehicle type definition to the network. More...
 
bool addVTypeDistribution (const std::string &id, RandomDistributor< SUMOVTypeParameter * > *vehTypeDistribution)
 Adds a vehicle type distribution. More...
 
SUMOVTypeParametergetVehicleTypeSecure (const std::string &id)
 Retrieves the named vehicle type. More...
 
bool addRouteDef (RORouteDef *def)
 
RORouteDefgetRouteDef (const std::string &name) const
 Returns the named route definition. More...
 
virtual bool addVehicle (const std::string &id, ROVehicle *veh)
 
bool addFlow (SUMOVehicleParameter *flow, const bool randomize)
 
void addPerson (const SUMOTime depart, const std::string desc)
 
void addContainer (const SUMOTime depart, const std::string desc)
 
Processing stored vehicle definitions
SUMOTime saveAndRemoveRoutesUntil (OptionsCont &options, SUMOAbstractRouter< ROEdge, ROVehicle > &router, SUMOTime time)
 Computes routes described by their definitions and saves them. More...
 
virtual bool furtherStored ()
 Returns the information whether further vehicles, persons or containers are stored. More...
 

Protected Types

typedef std::multimap< const
SUMOTime, const std::string > 
ContainerMap
 Known containers. More...
 
typedef std::multimap< const
SUMOTime, const std::string > 
PersonMap
 Known persons. More...
 
typedef std::map< std::string,
RandomDistributor
< SUMOVTypeParameter * > * > 
VTypeDistDictType
 Vehicle type distribution dictionary type. More...
 

Protected Member Functions

void checkFlows (SUMOTime time)
 
ROVehicleContgetVehicles ()
 return vehicles for use by RouteAggregator More...
 

Static Protected Member Functions

static bool computeRoute (SUMOAbstractRouter< ROEdge, ROVehicle > &router, const ROVehicle *const veh, const bool removeLoops, MsgHandler *errorHandler)
 

Protected Attributes

std::map< std::string,
SUMOVehicleParameter::Stop * > 
myBusStops
 Known bus stops. More...
 
ContainerMap myContainers
 
std::map< std::string,
SUMOVehicleParameter::Stop * > 
myContainerStops
 Known container stops. More...
 
bool myDefaultVTypeMayBeDeleted
 Whether no vehicle type was loaded. More...
 
std::map< std::string,
std::vector< SUMOTime > > 
myDepartures
 Departure times for randomized flows. More...
 
unsigned int myDiscardedRouteNo
 The number of discarded routes. More...
 
std::map< std::string,
std::pair< std::vector
< std::string >, std::vector
< std::string > > > 
myDistricts
 traffic assignment zones with sources and sinks More...
 
NamedObjectCont< ROEdge * > myEdges
 Known edges. More...
 
MsgHandlermyErrorHandler
 handler for ignorable error messages More...
 
NamedObjectCont
< SUMOVehicleParameter * > 
myFlows
 Known flows. More...
 
bool myHaveRestrictions
 Whether the network contains edges which not all vehicles may pass. More...
 
NamedObjectCont< RONode * > myNodes
 Known nodes. More...
 
int myNumInternalEdges
 The number of internal edges in the dictionary. More...
 
PersonMap myPersons
 
unsigned int myReadRouteNo
 The number of read routes. More...
 
OutputDevicemyRouteAlternativesOutput
 The file to write the computed route alternatives into. More...
 
NamedObjectCont< RORouteDef * > myRoutes
 Known routes. More...
 
OutputDevicemyRoutesOutput
 The file to write the computed routes into. More...
 
OutputDevicemyTypesOutput
 The file to write the vehicle types into. More...
 
ROVehicleCont myVehicles
 Known vehicles. More...
 
NamedObjectCont
< SUMOVTypeParameter * > 
myVehicleTypes
 Known vehicle types. More...
 
std::set< std::string > myVehIDs
 Known vehicle ids. More...
 
VTypeDistDictType myVTypeDistDict
 A distribution of vehicle types (probability->vehicle type) More...
 
unsigned int myWrittenRouteNo
 The number of written routes. More...
 

Private Member Functions

RONetoperator= (const RONet &src)
 Invalidated assignment operator. More...
 
 RONet (const RONet &src)
 Invalidated copy constructor. More...
 

Friends

class RORouteAggregator
 

Detailed Description

The router's network representation.

A router network is responsible for watching loaded edges, nodes,!!!

Todo:
Vehicle ids are not tracked; it may happen that the same id is added twice...

Definition at line 72 of file RONet.h.

Member Typedef Documentation

typedef std::multimap<const SUMOTime, const std::string> RONet::ContainerMap
protected

Known containers.

Definition at line 456 of file RONet.h.

typedef std::multimap<const SUMOTime, const std::string> RONet::PersonMap
protected

Known persons.

Definition at line 452 of file RONet.h.

typedef std::map< std::string, RandomDistributor<SUMOVTypeParameter*>* > RONet::VTypeDistDictType
protected

Vehicle type distribution dictionary type.

Definition at line 435 of file RONet.h.

Constructor & Destructor Documentation

RONet::~RONet ( )
virtual

Destructor.

Definition at line 72 of file RONet.cpp.

References ROVehicleCont::clear(), NamedObjectCont< T >::clear(), myEdges, myNodes, myRoutes, myVehicles, and myVehicleTypes.

RONet::RONet ( const RONet src)
private

Invalidated copy constructor.

Member Function Documentation

void RONet::addBusStop ( const std::string &  id,
SUMOVehicleParameter::Stop stop 
)

Definition at line 144 of file RONet.cpp.

References myBusStops, and WRITE_ERROR.

Referenced by RONetHandler::parseBusStop().

void RONet::addContainer ( const SUMOTime  depart,
const std::string  desc 
)

Definition at line 313 of file RONet.cpp.

References myContainers.

Referenced by RORouteHandler::closeContainer().

void RONet::addContainerStop ( const std::string &  id,
SUMOVehicleParameter::Stop stop 
)

Definition at line 155 of file RONet.cpp.

References myContainerStops, and WRITE_ERROR.

Referenced by RONetHandler::parseContainerStop().

bool RONet::addDistrict ( const std::string  id,
ROEdge source,
ROEdge sink 
)

Definition at line 96 of file RONet.cpp.

References addEdge(), ROEdge::ET_DISTRICT, myDistricts, ROEdge::setType(), and WRITE_ERROR.

Referenced by RONetHandler::parseDistrict().

bool RONet::addDistrictEdge ( const std::string  tazID,
const std::string  edgeID,
const bool  isSource 
)
bool RONet::addEdge ( ROEdge edge)
virtual
void RONet::addNode ( RONode node)
void RONet::addPerson ( const SUMOTime  depart,
const std::string  desc 
)

Definition at line 308 of file RONet.cpp.

References myPersons.

Referenced by RORouteHandler::closePerson().

bool RONet::addRouteDef ( RORouteDef def)
bool RONet::addVehicle ( const std::string &  id,
ROVehicle veh 
)
virtual

Definition at line 282 of file RONet.cpp.

References ROVehicleCont::add(), myReadRouteNo, myVehicles, myVehIDs, and WRITE_ERROR.

Referenced by checkFlows(), and RORouteHandler::closeVehicle().

bool RONet::addVehicleType ( SUMOVTypeParameter type)
virtual

Adds a read vehicle type definition to the network.

If the vehicle type definition is already known (another one with the same id exists), false is returned, and the vehicle type is deleted.

Parameters
[in]defThe vehicle type to add
Returns
Whether the vehicle type could be added

Definition at line 259 of file RONet.cpp.

References NamedObjectCont< T >::add(), checkVType(), SUMOVTypeParameter::id, myVehicleTypes, and WRITE_ERROR.

Referenced by RORouteHandler::myEndElement().

bool RONet::addVTypeDistribution ( const std::string &  id,
RandomDistributor< SUMOVTypeParameter * > *  vehTypeDistribution 
)

Adds a vehicle type distribution.

If another vehicle type (or distribution) with the same id exists, false is returned. Otherwise, the vehicle type distribution is added to the internal vehicle type distribution container "myVTypeDistDict".

This control get responsible for deletion of the added vehicle type distribution.

Parameters
[in]idThe id of the distribution to add
[in]vehTypeDistributionThe vehicle type distribution to add
Returns
Whether the vehicle type could be added

Definition at line 272 of file RONet.cpp.

References checkVType(), and myVTypeDistDict.

Referenced by RORouteHandler::closeVehicleTypeDistribution().

bool RONet::checkVType ( const std::string &  id)

Checks whether the vehicle type (distribution) may be added.

This method checks also whether the default type may still be replaced

Parameters
[in]idThe id of the vehicle type (distribution) to add
Returns
Whether the type (distribution) may be added

Definition at line 241 of file RONet.cpp.

References DEFAULT_VTYPE_ID, NamedObjectCont< T >::get(), myDefaultVTypeMayBeDeleted, myVehicleTypes, myVTypeDistDict, and NamedObjectCont< T >::remove().

Referenced by addVehicleType(), and addVTypeDistribution().

void RONet::cleanup ( SUMOAbstractRouter< ROEdge, ROVehicle > *  router)

closes the file output for computed routes and deletes routers and associated threads if necessary

Definition at line 191 of file RONet.cpp.

References RouteCostCalculator< R, E, V >::cleanup(), OutputDevice::close(), myRouteAlternativesOutput, myRoutesOutput, and myTypesOutput.

Referenced by computeRoutes().

bool RONet::computeRoute ( SUMOAbstractRouter< ROEdge, ROVehicle > &  router,
const ROVehicle *const  veh,
const bool  removeLoops,
MsgHandler errorHandler 
)
staticprotected
bool RONet::furtherStored ( )
virtual

Returns the information whether further vehicles, persons or containers are stored.

Definition at line 523 of file RONet.cpp.

References myContainers, myFlows, myPersons, myVehicles, and NamedObjectCont< T >::size().

Referenced by ROLoader::openRoutes(), and ROLoader::processRoutes().

const SUMOVehicleParameter::Stop* RONet::getBusStop ( const std::string &  id) const
inline

Retrieves a bus stop from the network.

Parameters
[in]nameThe name of the stop to retrieve
Returns
The named stop if known, otherwise 0

Definition at line 192 of file RONet.h.

References myBusStops.

Referenced by RORouteHandler::addStop().

const SUMOVehicleParameter::Stop* RONet::getContainerStop ( const std::string &  id) const
inline

Retrieves a container stop from the network.

Parameters
[in]nameThe name of the stop to retrieve
Returns
The named stop if known, otherwise 0

Definition at line 206 of file RONet.h.

References myContainerStops.

Referenced by RORouteHandler::addStop().

const std::map<std::string, std::pair<std::vector<std::string>, std::vector<std::string> > >& RONet::getDistricts ( ) const
inline

Retrieves all TAZ (districts) from the network.

Returns
The map of all districts

Definition at line 126 of file RONet.h.

References myDistricts.

Referenced by main().

const std::map< std::string, ROEdge * > & RONet::getEdgeMap ( ) const
size_t RONet::getEdgeNo ( ) const

Returns the total number of edges the network contains including internal edges.

Definition at line 529 of file RONet.cpp.

References myEdges, and NamedObjectCont< T >::size().

Referenced by computeAllPairs(), computeRoutes(), and main().

int RONet::getInternalEdgeNumber ( ) const

Returns the number of internal edges the network contains.

Definition at line 535 of file RONet.cpp.

References myNumInternalEdges.

Referenced by computeAllPairs().

RONode* RONet::getNode ( const std::string &  id) const
inline

Retrieves an node from the network.

Parameters
[in]nameThe name of the node to retrieve
Returns
The named node if known, otherwise 0
Todo:
Check whether a const pointer may be returned

Definition at line 160 of file RONet.h.

References NamedObjectCont< T >::get(), and myNodes.

Referenced by RONetHandler::myEndElement(), RONetHandler::parseEdge(), and RONetHandler::parseJunction().

RORouteDef* RONet::getRouteDef ( const std::string &  name) const
inline

Returns the named route definition.

Parameters
[in]nameThe name of the route definition to retrieve
Returns
The named route definition if known, otherwise 0
Todo:

Check whether a const pointer may be returned

Rename myRoutes to myRouteDefinitions

Definition at line 290 of file RONet.h.

References NamedObjectCont< T >::get(), and myRoutes.

Referenced by checkFlows(), RORouteHandler::closeFlow(), RORouteHandler::closeRoute(), RORouteHandler::closeVehicle(), RORouteHandler::openRoute(), and RORouteHandler::openRouteDistribution().

OutputDevice* RONet::getRouteOutput ( const bool  alternative = false)
inline

Definition at line 394 of file RONet.h.

References myRouteAlternativesOutput, and myRoutesOutput.

Referenced by computeRoutes().

ROVehicleCont& RONet::getVehicles ( )
inlineprotected

return vehicles for use by RouteAggregator

Definition at line 407 of file RONet.h.

References myVehicles.

Referenced by RORouteAggregator::processAllRoutes().

SUMOVTypeParameter * RONet::getVehicleTypeSecure ( const std::string &  id)

Retrieves the named vehicle type.

If the name is "" the default type is returned. If the named vehicle type (or typeDistribution) was not added to the net before 0 is returned

Parameters
[in]idThe id of the vehicle type to return
Returns
The named vehicle type
Todo:
Check whether a const pointer may be returned

Definition at line 217 of file RONet.cpp.

References DEFAULT_VTYPE_ID, NamedObjectCont< T >::get(), myDefaultVTypeMayBeDeleted, myVehicleTypes, and myVTypeDistDict.

Referenced by checkFlows(), RORouteHandler::closeFlow(), RORouteHandler::closeVehicle(), computeRoutes(), RORouteHandler::openVehicleTypeDistribution(), and ROMAAssignments::ROMAAssignments().

bool RONet::hasRestrictions ( ) const

Definition at line 547 of file RONet.cpp.

References myHaveRestrictions.

Referenced by computeRoutes().

void RONet::openOutput ( const std::string &  filename,
const std::string  altFilename,
const std::string  typeFilename 
)

Opens the output for computed routes.

If the second parameter is set, a second file for route alternatives will be opened. If one of the file outputs can not be build, an IOError is thrown.

Parameters
[in]filenameThe (base) name of the file(s) to create
[in]altFilenameThe name of the file for writing alternatives, "" means no alternatives
[in]filenameThe name of the vtype file to create, "" means no separate types

Definition at line 172 of file RONet.cpp.

References OutputDevice::getDevice(), myRouteAlternativesOutput, myRoutesOutput, myTypesOutput, SUMO_TAG_ROUTES, OutputDevice::writeAttr(), OutputDevice::writeHeader(), and OutputDevice::writeXMLHeader().

Referenced by computeRoutes().

RONet& RONet::operator= ( const RONet src)
private

Invalidated assignment operator.

SUMOTime RONet::saveAndRemoveRoutesUntil ( OptionsCont options,
SUMOAbstractRouter< ROEdge, ROVehicle > &  router,
SUMOTime  time 
)

Computes routes described by their definitions and saves them.

As long as a vehicle with a departure time smaller than the given exists, its route is computed and it is written and removed from the internal container.

Parameters
[in]optionsThe options used during this process
[in]routerThe router to use for routes computation
[in]timeThe time until which route definitions shall be processed
Returns
The last seen departure time>=time

Definition at line 424 of file RONet.cpp.

References checkFlows(), SUMOAbstractRouter< E, V >::clone(), computeRoute(), ROVehicleCont::erase(), NamedObjectCont< T >::erase(), OptionsCont::getBool(), ROVehicle::getDepart(), Named::getID(), ROVehicle::getID(), OptionsCont::getInt(), NamedObjectCont< T >::getMyMap(), ROVehicle::getRouteDefinition(), ROVehicle::getRoutingSuccess(), ROVehicleCont::getTopVehicle(), MIN3(), myContainers, myDiscardedRouteNo, myErrorHandler, myPersons, myReadRouteNo, myRouteAlternativesOutput, myRoutes, myRoutesOutput, myTypesOutput, myVehicles, myWrittenRouteNo, ROVehicle::saveAllAsXML(), ROVehicle::saveTypeAsXML(), NamedObjectCont< T >::size(), SUMOTime_MAX, toString(), WRITE_MESSAGE, and OutputDevice::writePreformattedTag().

Referenced by ROLoader::processAllRoutesWithBulkRouter(), and ROLoader::processRoutes().

void RONet::setRestrictionFound ( )

Definition at line 553 of file RONet.cpp.

References myHaveRestrictions.

Referenced by RONetHandler::parseLane().

Friends And Related Function Documentation

friend class RORouteAggregator
friend

Definition at line 73 of file RONet.h.

Field Documentation

std::map<std::string, SUMOVehicleParameter::Stop*> RONet::myBusStops
protected

Known bus stops.

Definition at line 426 of file RONet.h.

Referenced by addBusStop(), and getBusStop().

ContainerMap RONet::myContainers
protected

Definition at line 457 of file RONet.h.

Referenced by addContainer(), furtherStored(), and saveAndRemoveRoutesUntil().

std::map<std::string, SUMOVehicleParameter::Stop*> RONet::myContainerStops
protected

Known container stops.

Definition at line 429 of file RONet.h.

Referenced by addContainerStop(), and getContainerStop().

bool RONet::myDefaultVTypeMayBeDeleted
protected

Whether no vehicle type was loaded.

Definition at line 440 of file RONet.h.

Referenced by checkVType(), and getVehicleTypeSecure().

std::map<std::string, std::vector<SUMOTime> > RONet::myDepartures
protected

Departure times for randomized flows.

Definition at line 460 of file RONet.h.

Referenced by addFlow(), and checkFlows().

unsigned int RONet::myDiscardedRouteNo
protected

The number of discarded routes.

Definition at line 478 of file RONet.h.

Referenced by saveAndRemoveRoutesUntil().

std::map<std::string, std::pair<std::vector<std::string>, std::vector<std::string> > > RONet::myDistricts
protected

traffic assignment zones with sources and sinks

Definition at line 463 of file RONet.h.

Referenced by addDistrict(), addDistrictEdge(), and getDistricts().

NamedObjectCont<ROEdge*> RONet::myEdges
protected

Known edges.

Definition at line 423 of file RONet.h.

Referenced by addEdge(), getEdge(), getEdgeMap(), getEdgeNo(), and ~RONet().

MsgHandler* RONet::myErrorHandler
protected

handler for ignorable error messages

Definition at line 490 of file RONet.h.

Referenced by saveAndRemoveRoutesUntil().

NamedObjectCont<SUMOVehicleParameter*> RONet::myFlows
protected

Known flows.

Definition at line 449 of file RONet.h.

Referenced by addFlow(), checkFlows(), and furtherStored().

bool RONet::myHaveRestrictions
protected

Whether the network contains edges which not all vehicles may pass.

Definition at line 484 of file RONet.h.

Referenced by hasRestrictions(), and setRestrictionFound().

NamedObjectCont<RONode*> RONet::myNodes
protected

Known nodes.

Definition at line 420 of file RONet.h.

Referenced by addNode(), getNode(), and ~RONet().

int RONet::myNumInternalEdges
protected

The number of internal edges in the dictionary.

Definition at line 487 of file RONet.h.

Referenced by addEdge(), and getInternalEdgeNumber().

PersonMap RONet::myPersons
protected

Definition at line 453 of file RONet.h.

Referenced by addPerson(), furtherStored(), and saveAndRemoveRoutesUntil().

unsigned int RONet::myReadRouteNo
protected

The number of read routes.

Definition at line 475 of file RONet.h.

Referenced by addVehicle(), and saveAndRemoveRoutesUntil().

OutputDevice* RONet::myRouteAlternativesOutput
protected

The file to write the computed route alternatives into.

Definition at line 469 of file RONet.h.

Referenced by cleanup(), getRouteOutput(), openOutput(), and saveAndRemoveRoutesUntil().

NamedObjectCont<RORouteDef*> RONet::myRoutes
protected

Known routes.

Definition at line 443 of file RONet.h.

Referenced by addRouteDef(), getRouteDef(), saveAndRemoveRoutesUntil(), and ~RONet().

OutputDevice* RONet::myRoutesOutput
protected

The file to write the computed routes into.

Definition at line 466 of file RONet.h.

Referenced by cleanup(), getRouteOutput(), openOutput(), and saveAndRemoveRoutesUntil().

OutputDevice* RONet::myTypesOutput
protected

The file to write the vehicle types into.

Definition at line 472 of file RONet.h.

Referenced by cleanup(), openOutput(), and saveAndRemoveRoutesUntil().

ROVehicleCont RONet::myVehicles
protected

Known vehicles.

Definition at line 446 of file RONet.h.

Referenced by addVehicle(), furtherStored(), getVehicles(), saveAndRemoveRoutesUntil(), and ~RONet().

NamedObjectCont<SUMOVTypeParameter*> RONet::myVehicleTypes
protected

Known vehicle types.

Definition at line 432 of file RONet.h.

Referenced by addVehicleType(), checkVType(), getVehicleTypeSecure(), RONet(), and ~RONet().

std::set<std::string> RONet::myVehIDs
protected

Known vehicle ids.

Definition at line 417 of file RONet.h.

Referenced by addVehicle().

VTypeDistDictType RONet::myVTypeDistDict
protected

A distribution of vehicle types (probability->vehicle type)

Definition at line 437 of file RONet.h.

Referenced by addVTypeDistribution(), checkVType(), and getVehicleTypeSecure().

unsigned int RONet::myWrittenRouteNo
protected

The number of written routes.

Definition at line 481 of file RONet.h.

Referenced by saveAndRemoveRoutesUntil().


The documentation for this class was generated from the following files: