![]() |
Eclipse SUMO - Simulation of Urban MObility
|
A DFROUTER-network. More...
#include <RODFNet.h>
Data Structures | |
class | DFRouteDescByTimeComperator |
struct | idComp |
comparator for maps using edges as key, used only in myDetectorsOnEdges to make tests comparable More... | |
struct | IterationEdge |
Public Types | |
typedef std::map< const SUMOTime, std::vector< RORoutable * > > | RoutablesMap |
Public Member Functions | |
void | addRestriction (const std::string &id, const SUMOVehicleClass svc, const double speed) |
Adds a restriction for an edge type. More... | |
void | buildApproachList () |
void | buildDetectorDependencies (RODFDetectorCon &detectors) |
void | buildEdgeFlowMap (const RODFDetectorFlows &flows, const RODFDetectorCon &detectors, SUMOTime startTime, SUMOTime endTime, SUMOTime stepOffset) |
void | buildRoutes (RODFDetectorCon &det, bool keepUnfoundEnds, bool includeInBetween, bool keepShortestOnly, int maxFollowingLength) const |
void | computeTypes (RODFDetectorCon &dets, bool sourcesStrict) const |
double | getAbsPos (const RODFDetector &det) const |
double | getAvgSpeedFactorLKW () const |
double | getAvgSpeedFactorPKW () const |
const std::vector< std::string > & | getDetectorList (ROEdge *edge) const |
double | getMaxSpeedFactorLKW () const |
double | getMaxSpeedFactorPKW () const |
const std::map< SUMOVehicleClass, double > * | getRestrictions (const std::string &id) const |
Returns the restrictions for an edge type If no restrictions are present, 0 is returned. More... | |
bool | hasDetector (ROEdge *edge) const |
void | mesoJoin (RODFDetectorCon &detectors, RODFDetectorFlows &flows) |
void | removeEmptyDetectors (RODFDetectorCon &detectors, RODFDetectorFlows &flows) |
void | reportEmptyDetectors (RODFDetectorCon &detectors, RODFDetectorFlows &flows) |
void | revalidateFlows (const RODFDetectorCon &detectors, RODFDetectorFlows &flows, SUMOTime startTime, SUMOTime endTime, SUMOTime stepOffset) |
RODFNet (bool amInHighwayMode) | |
Constructor. More... | |
~RODFNet () | |
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... | |
ROEdge * | getEdge (const std::string &name) const |
Retrieves an edge from the network. More... | |
ROEdge * | getEdgeForLaneID (const std::string &laneID) const |
Retrieves an edge from the network when the lane id is given. More... | |
void | addNode (RONode *node) |
RONode * | getNode (const std::string &id) const |
Retrieves an node from the network. More... | |
void | addStoppingPlace (const std::string &id, const SumoXMLTag category, SUMOVehicleParameter::Stop *stop) |
const SUMOVehicleParameter::Stop * | getStoppingPlace (const std::string &id, const SumoXMLTag category) const |
Retrieves a stopping place from the network. More... | |
const std::string | getStoppingPlaceName (const std::string &id) const |
return the name for the given stopping place id 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... | |
SUMOVTypeParameter * | getVehicleTypeSecure (const std::string &id) |
Retrieves the named vehicle type. More... | |
bool | addRouteDef (RORouteDef *def) |
RORouteDef * | getRouteDef (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) |
bool | addPerson (ROPerson *person) |
void | addContainer (const SUMOTime depart, const std::string desc) |
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... | |
ROEdge * | getEdge (const std::string &name) const |
Retrieves an edge from the network. More... | |
ROEdge * | getEdgeForLaneID (const std::string &laneID) const |
Retrieves an edge from the network when the lane id is given. More... | |
void | addNode (RONode *node) |
RONode * | getNode (const std::string &id) const |
Retrieves an node from the network. More... | |
void | addStoppingPlace (const std::string &id, const SumoXMLTag category, SUMOVehicleParameter::Stop *stop) |
const SUMOVehicleParameter::Stop * | getStoppingPlace (const std::string &id, const SumoXMLTag category) const |
Retrieves a stopping place from the network. More... | |
const std::string | getStoppingPlaceName (const std::string &id) const |
return the name for the given stopping place id 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... | |
SUMOVTypeParameter * | getVehicleTypeSecure (const std::string &id) |
Retrieves the named vehicle type. More... | |
bool | addRouteDef (RORouteDef *def) |
RORouteDef * | getRouteDef (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) |
bool | addPerson (ROPerson *person) |
void | addContainer (const SUMOTime depart, const std::string desc) |
Static Public Member Functions | |
static RONet * | getInstance () |
Returns the pointer to the unique instance of RONet (singleton). More... | |
Protected Member Functions | |
void | buildDetectorEdgeDependencies (RODFDetectorCon &dets) const |
void | computeRoutesFor (ROEdge *edge, RODFRouteDesc &base, int no, bool keepUnfoundEnds, bool keepShortestOnly, ROEdgeVector &visited, const RODFDetector &det, RODFRouteCont &into, const RODFDetectorCon &detectors, int maxFollowingLength, ROEdgeVector &seen) const |
ROEdge * | getDetectorEdge (const RODFDetector &det) const |
bool | hasApproached (ROEdge *edge) const |
bool | hasApproaching (ROEdge *edge) const |
bool | hasInBetweenDetectorsOnly (ROEdge *edge, const RODFDetectorCon &detectors) const |
bool | hasSourceDetector (ROEdge *edge, const RODFDetectorCon &detectors) const |
bool | isDestination (const RODFDetector &det, const RODFDetectorCon &detectors) const |
bool | isDestination (const RODFDetector &det, ROEdge *edge, ROEdgeVector &seen, const RODFDetectorCon &detectors) const |
bool | isFalseSource (const RODFDetector &det, const RODFDetectorCon &detectors) const |
bool | isFalseSource (const RODFDetector &det, ROEdge *edge, ROEdgeVector &seen, const RODFDetectorCon &detectors) const |
bool | isSource (const RODFDetector &det, const RODFDetectorCon &detectors, bool strict) const |
bool | isSource (const RODFDetector &det, ROEdge *edge, ROEdgeVector &seen, const RODFDetectorCon &detectors, bool strict) const |
void | revalidateFlows (const RODFDetector *detector, RODFDetectorFlows &flows, SUMOTime startTime, SUMOTime endTime, SUMOTime stepOffset) |
Private Attributes | |
bool | myAmInHighwayMode |
std::map< ROEdge *, ROEdgeVector > | myApproachedEdges |
Map of edge name->list of names of edges approached by this edge. More... | |
std::map< ROEdge *, ROEdgeVector > | myApproachingEdges |
Map of edge name->list of names of this edge approaching edges. More... | |
double | myAvgSpeedFactorLKW |
double | myAvgSpeedFactorPKW |
std::map< std::string, ROEdge * > | myDetectorEdges |
std::map< ROEdge *, std::vector< std::string >, idComp > | myDetectorsOnEdges |
std::vector< std::string > | myDisallowedEdges |
List of ids of edges that shall not be used. More... | |
int | myInBetweenNumber |
int | myInvalidNumber |
bool | myKeepTurnarounds |
double | myMaxSpeedFactorLKW |
double | myMaxSpeedFactorPKW |
maximum speed factor in measurements More... | |
int | mySinkNumber |
int | mySourceNumber |
Processing stored vehicle definitions | |
std::set< std::string > | myVehIDs |
Known vehicle ids. More... | |
std::set< std::string > | myPersonIDs |
Known person ids. More... | |
NamedObjectCont< RONode * > | myNodes |
Known nodes. More... | |
NamedObjectCont< ROEdge * > | myEdges |
Known edges. More... | |
std::map< SumoXMLTag, NamedObjectCont< SUMOVehicleParameter::Stop * > > | myStoppingPlaces |
Known bus / train / container stops and parking areas. More... | |
NamedObjectCont< SUMOVTypeParameter * > | myVehicleTypes |
Known vehicle types. More... | |
VTypeDistDictType | myVTypeDistDict |
A distribution of vehicle types (probability->vehicle type) More... | |
bool | myDefaultVTypeMayBeDeleted |
Whether the default vehicle type was already used or can still be replaced. More... | |
bool | myDefaultPedTypeMayBeDeleted |
Whether the default pedestrian type was already used or can still be replaced. More... | |
bool | myDefaultBikeTypeMayBeDeleted |
Whether the default bicycle type was already used or can still be replaced. More... | |
NamedObjectCont< RORouteDef * > | myRoutes |
Known routes. More... | |
RoutablesMap | myRoutables |
Known routables. More... | |
NamedObjectCont< SUMOVehicleParameter * > | myFlows |
Known flows. More... | |
bool | myHaveActiveFlows |
whether any flows are still active More... | |
ContainerMap | myContainers |
std::vector< const RORoutable * > | myPTVehicles |
vehicles to keep for public transport routing More... | |
std::map< std::string, std::vector< SUMOTime > > | myDepartures |
Departure times for randomized flows. More... | |
std::map< std::string, std::pair< std::vector< std::string >, std::vector< std::string > > > | myDistricts |
traffic assignment zones with sources and sinks More... | |
OutputDevice * | myRoutesOutput |
The file to write the computed routes into. More... | |
OutputDevice * | myRouteAlternativesOutput |
The file to write the computed route alternatives into. More... | |
OutputDevice * | myTypesOutput |
The file to write the vehicle types into. More... | |
int | myReadRouteNo |
The number of read routes. More... | |
int | myDiscardedRouteNo |
The number of discarded routes. More... | |
int | myWrittenRouteNo |
The number of written routes. More... | |
bool | myHavePermissions |
Whether the network contains edges which not all vehicles may pass. More... | |
std::map< std::string, std::map< SUMOVehicleClass, double > > | myRestrictions |
The vehicle class specific speed restrictions. More... | |
int | myNumInternalEdges |
The number of internal edges in the dictionary. More... | |
MsgHandler * | myErrorHandler |
handler for ignorable error messages More... | |
const bool | myKeepVTypeDist |
whether to keep the the vtype distribution in output More... | |
SUMOTime | saveAndRemoveRoutesUntil (OptionsCont &options, const RORouterProvider &provider, SUMOTime time) |
Computes routes described by their definitions and saves them. More... | |
bool | furtherStored () |
Returns the information whether further vehicles, persons or containers are stored. More... | |
void | openOutput (const OptionsCont &options) |
Opens the output for computed routes. More... | |
void | writeIntermodal (const OptionsCont &options, ROIntermodalRouter &router) const |
Writes the intermodal network and weights if requested. More... | |
void | cleanup () |
closes the file output for computed routes and deletes associated threads if necessary More... | |
int | getEdgeNumber () 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... | |
const NamedObjectCont< ROEdge * > & | getEdgeMap () const |
bool | hasPermissions () const |
void | setPermissionsFound () |
OutputDevice * | getRouteOutput (const bool alternative=false) |
typedef std::map< std::string, RandomDistributor< SUMOVTypeParameter * > * > | VTypeDistDictType |
Vehicle type distribution dictionary type. More... | |
typedef std::multimap< const SUMOTime, const std::string > | ContainerMap |
Known containers. More... | |
static RONet * | myInstance = nullptr |
Unique instance of RONet. More... | |
static void | adaptIntermodalRouter (ROIntermodalRouter &router) |
void | checkFlows (SUMOTime time, MsgHandler *errorHandler) |
void | createBulkRouteRequests (const RORouterProvider &provider, const SUMOTime time, const bool removeLoops) |
|
privateinherited |
|
inherited |
|
privateinherited |
RODFNet::RODFNet | ( | bool | amInHighwayMode | ) |
Constructor.
[in] | amInHighwayMode | Whether search for following edges shall stop at slow edges |
Definition at line 45 of file RODFNet.cpp.
References OptionsCont::getBool(), OptionsCont::getOptions(), OptionsCont::getStringVector(), myDisallowedEdges, and myKeepTurnarounds.
RODFNet::~RODFNet | ( | ) |
Destructor.
Definition at line 57 of file RODFNet.cpp.
|
staticinherited |
Definition at line 660 of file RONet.cpp.
References IntermodalNetwork< E, L, N, V >::addAccess(), IntermodalNetwork< E, L, N, V >::addSchedule(), RONet::getEdgeForLaneID(), RORouteDef::getFirstRoute(), IntermodalRouter::getNetwork(), RORoutable::getParameter(), RONet::getRouteDef(), RORoute::getStops(), RONet::myFlows, RONet::myInstance, RONet::myPTVehicles, RONet::myStoppingPlaces, SUMO_TAG_BUS_STOP, and SUMO_TAG_PARKING_AREA.
Referenced by computeRoutes().
|
inherited |
Definition at line 402 of file RONet.cpp.
References RONet::myContainers.
Referenced by RORouteHandler::closeContainer().
Definition at line 151 of file RONet.cpp.
References RONet::addEdge(), EDGEFUNC_CONNECTOR, RONet::myDistricts, ROEdge::setFunction(), and WRITE_ERROR.
Referenced by RONetHandler::parseDistrict().
|
inherited |
Definition at line 168 of file RONet.cpp.
References ROEdge::addSuccessor(), RONet::getEdge(), RONet::myDistricts, and WRITE_ERROR.
Referenced by RONetHandler::parseDistrict(), and RONetHandler::parseDistrictEdge().
|
virtualinherited |
Definition at line 137 of file RONet.cpp.
References NamedObjectCont< T >::add(), Named::getID(), ROEdge::isInternal(), RONet::myEdges, RONet::myNumInternalEdges, and WRITE_ERROR.
Referenced by RONet::addDistrict(), and RONetHandler::parseEdge().
|
inherited |
Definition at line 376 of file RONet.cpp.
References NamedObjectCont< T >::add(), SUMOVehicleParameter::depart, SUMOVehicleParameter::id, RONet::myDepartures, RONet::myFlows, RandHelper::rand(), SUMOVehicleParameter::repetitionNumber, and SUMOVehicleParameter::repetitionOffset.
Referenced by RORouteHandler::closeFlow().
|
inherited |
Definition at line 190 of file RONet.cpp.
References NamedObjectCont< T >::add(), Named::getID(), RONet::myNodes, and WRITE_ERROR.
Referenced by RONetHandler::parseEdge().
|
inherited |
Definition at line 390 of file RONet.cpp.
References RORoutable::getDepart(), RORoutable::getID(), RONet::myPersonIDs, RONet::myRoutables, and WRITE_ERROR.
Referenced by RORouteHandler::addFlowPerson(), and RORouteHandler::closePerson().
|
inherited |
Adds a restriction for an edge type.
[in] | id | The id of the type |
[in] | svc | The vehicle class the restriction refers to |
[in] | speed | The restricted speed |
Definition at line 121 of file RONet.cpp.
References RONet::myRestrictions.
Referenced by RONetHandler::myStartElement().
|
inherited |
Definition at line 208 of file RONet.cpp.
References NamedObjectCont< T >::add(), Named::getID(), and RONet::myRoutes.
Referenced by RORouteHandler::closeRoute(), and RORouteHandler::closeRouteDistribution().
|
inherited |
Definition at line 199 of file RONet.cpp.
References RONet::myStoppingPlaces, SUMO_TAG_BUS_STOP, SUMO_TAG_TRAIN_STOP, toString(), and WRITE_ERROR.
Referenced by RONetHandler::parseStoppingPlace().
|
virtualinherited |
Definition at line 356 of file RONet.cpp.
References RORoutable::getDepart(), OptionsCont::getOptions(), RORoutable::isPartOfFlow(), RORoutable::isPublicTransport(), RONet::myPTVehicles, RONet::myRoutables, RONet::myVehIDs, and WRITE_ERROR.
Referenced by RONet::checkFlows(), and RORouteHandler::closeVehicle().
|
virtualinherited |
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.
[in] | def | The vehicle type to add |
Definition at line 333 of file RONet.cpp.
References NamedObjectCont< T >::add(), RONet::checkVType(), SUMOVTypeParameter::id, RONet::myVehicleTypes, and WRITE_ERROR.
Referenced by RORouteHandler::closeVType().
|
inherited |
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.
[in] | id | The id of the distribution to add |
[in] | vehTypeDistribution | The vehicle type distribution to add |
Definition at line 346 of file RONet.cpp.
References RONet::checkVType(), and RONet::myVTypeDistDict.
Referenced by RORouteHandler::closeVehicleTypeDistribution().
void RODFNet::buildApproachList | ( | ) |
Definition at line 62 of file RODFNet.cpp.
References RONet::getEdgeMap(), ROEdge::getFromJunction(), Named::getID(), ROEdge::getSuccessors(), ROEdge::getToJunction(), ROEdge::isInternal(), myApproachedEdges, myApproachingEdges, myDisallowedEdges, and myKeepTurnarounds.
Referenced by main().
void RODFNet::buildDetectorDependencies | ( | RODFDetectorCon & | detectors | ) |
Definition at line 1025 of file RODFNet.cpp.
References RODFDetector::addPriorDetector(), buildDetectorEdgeDependencies(), RODFDetectorCon::getDetector(), RODFDetectorCon::getModifiableDetector(), RODFDetector::getRouteVector(), RODFDetector::hasRoutes(), myDetectorEdges, and myDetectorsOnEdges.
Referenced by startComputation().
|
protected |
Definition at line 95 of file RODFNet.cpp.
References getDetectorEdge(), RODFDetectorCon::getDetectors(), myDetectorEdges, and myDetectorsOnEdges.
Referenced by buildDetectorDependencies(), buildRoutes(), computeTypes(), and mesoJoin().
void RODFNet::buildEdgeFlowMap | ( | const RODFDetectorFlows & | flows, |
const RODFDetectorCon & | detectors, | ||
SUMOTime | startTime, | ||
SUMOTime | endTime, | ||
SUMOTime | stepOffset | ||
) |
Definition at line 927 of file RODFNet.cpp.
References fd, FlowDef::fLKW, RODFDetectorCon::getDetector(), RODFDetectorFlows::getFlowDefs(), Named::getID(), RODFDetector::getPos(), ROEdge::getSpeedLimit(), ROEdge::getVClassMaxSpeed(), FlowDef::isLKW, RODFDetectorFlows::knows(), MAX2(), myAvgSpeedFactorLKW, myAvgSpeedFactorPKW, myDetectorsOnEdges, myMaxSpeedFactorLKW, myMaxSpeedFactorPKW, FlowDef::qLKW, FlowDef::qPKW, SVC_PASSENGER, SVC_TRUCK, toString(), FlowDef::vLKW, FlowDef::vPKW, and WRITE_MESSAGE.
Referenced by startComputation().
void RODFNet::buildRoutes | ( | RODFDetectorCon & | det, |
bool | keepUnfoundEnds, | ||
bool | includeInBetween, | ||
bool | keepShortestOnly, | ||
int | maxFollowingLength | ||
) | const |
!!;
!!routes->removeIllegal(illegals);
!!;
Definition at line 340 of file RODFNet.cpp.
References BETWEEN_DETECTOR, buildDetectorEdgeDependencies(), computeRoutesFor(), RODFRouteDesc::distance, RODFRouteDesc::distance2Last, RODFRouteDesc::duration2Last, RODFRouteDesc::duration_2, RODFRouteDesc::edges2Pass, RODFRouteDesc::endDetectorEdge, RODFRouteDesc::factor, RODFRouteCont::get(), RODFDetectorCon::getDetector(), getDetectorEdge(), RODFDetectorCon::getDetectors(), ROEdge::getLength(), ROEdge::getSpeedLimit(), RODFDetector::getType(), RODFRouteDesc::lastDetectorEdge, myDetectorsOnEdges, and RODFRouteDesc::overallProb.
Referenced by startComputation().
|
privateinherited |
Definition at line 408 of file RONet.cpp.
References RONet::addVehicle(), RORouteDef::copy(), DEFAULT_VTYPE_ID, DELTA_T, SUMOVehicleParameter::depart, RONet::getRouteDef(), RONet::getVehicleTypeSecure(), SUMOVTypeParameter::id, SUMOVehicleParameter::id, RONet::myDepartures, RONet::myFlows, RONet::myHaveActiveFlows, RONet::myKeepVTypeDist, RandHelper::rand(), SUMOVehicleParameter::repetitionEnd, SUMOVehicleParameter::repetitionNumber, SUMOVehicleParameter::repetitionOffset, SUMOVehicleParameter::repetitionProbability, SUMOVehicleParameter::repetitionsDone, SUMOVehicleParameter::routeid, SUMOVehicleParameter::stops, toString(), TS, and SUMOVehicleParameter::vtypeid.
Referenced by RONet::saveAndRemoveRoutesUntil().
|
inherited |
Checks whether the vehicle type (distribution) may be added.
This method checks also whether the default type may still be replaced
[in] | id | The id of the vehicle type (distribution) to add |
Definition at line 308 of file RONet.cpp.
References DEFAULT_PEDTYPE_ID, DEFAULT_VTYPE_ID, NamedObjectCont< T >::get(), RONet::myDefaultPedTypeMayBeDeleted, RONet::myDefaultVTypeMayBeDeleted, RONet::myVehicleTypes, RONet::myVTypeDistDict, and NamedObjectCont< T >::remove().
Referenced by RONet::addVehicleType(), and RONet::addVTypeDistribution().
|
inherited |
closes the file output for computed routes and deletes associated threads if necessary
Definition at line 254 of file RONet.cpp.
References RouteCostCalculator< R, E, V >::cleanup(), OutputDevice::close(), RONet::myRouteAlternativesOutput, RONet::myRoutesOutput, and RONet::myTypesOutput.
Referenced by computeRoutes().
|
protected |
!!! //toDiscard.push_back(current);
!!
Definition at line 181 of file RODFNet.cpp.
References RODFRouteCont::addRouteDesc(), RODFRouteDesc::distance, RODFRouteDesc::distance2Last, RODFRouteDesc::duration2Last, RODFRouteDesc::duration_2, RODFRouteDesc::edges2Pass, RODFRouteDesc::endDetectorEdge, RODFRouteDesc::factor, getDetectorEdge(), OptionsCont::getFloat(), Named::getID(), OptionsCont::getOptions(), ROEdge::getSpeedLimit(), hasApproached(), hasDetector(), hasInBetweenDetectorsOnly(), hasSourceDetector(), RODFRouteDesc::lastDetectorEdge, myAmInHighwayMode, myApproachedEdges, RODFRouteDesc::passedNo, RODFRouteCont::removeRouteDesc(), UNUSED_PARAMETER, and WRITE_WARNING.
Referenced by buildRoutes().
void RODFNet::computeTypes | ( | RODFDetectorCon & | dets, |
bool | sourcesStrict | ||
) | const |
Definition at line 108 of file RODFNet.cpp.
References BETWEEN_DETECTOR, buildDetectorEdgeDependencies(), DISCARDED_DETECTOR, RODFDetectorCon::getDetectors(), isDestination(), isFalseSource(), isSource(), myInBetweenNumber, myInvalidNumber, mySinkNumber, mySourceNumber, PROGRESS_BEGIN_MESSAGE, PROGRESS_DONE_MESSAGE, SINK_DETECTOR, SOURCE_DETECTOR, toString(), TYPE_NOT_DEFINED, and WRITE_MESSAGE.
Referenced by startComputation().
|
privateinherited |
Definition at line 488 of file RONet.cpp.
References RORoutable::computeRoute(), RORoutable::getDepartEdge(), RORoutable::getID(), RORoutable::getMaxSpeed(), ROEdge::getNumericalID(), RORoutable::getVClass(), RouterProvider< E, L, N, V >::getVehicleRouter(), RONet::myErrorHandler, RONet::myRoutables, and WRITE_WARNING.
Referenced by RONet::saveAndRemoveRoutesUntil().
|
inherited |
Returns the information whether further vehicles, persons or containers are stored.
Definition at line 642 of file RONet.cpp.
References RONet::myContainers, RONet::myFlows, RONet::myHaveActiveFlows, RONet::myRoutables, and NamedObjectCont< T >::size().
Referenced by ROLoader::openRoutes(), and ROLoader::processRoutes().
double RODFNet::getAbsPos | ( | const RODFDetector & | det | ) | const |
Definition at line 670 of file RODFNet.cpp.
References getDetectorEdge(), ROEdge::getLength(), and RODFDetector::getPos().
Referenced by isDestination(), and isSource().
|
inline |
Definition at line 98 of file RODFNet.h.
References myAvgSpeedFactorLKW.
Referenced by RODFDetectorCon::writeEmitters().
|
inline |
Definition at line 94 of file RODFNet.h.
References myAvgSpeedFactorPKW.
Referenced by RODFDetectorCon::writeEmitters().
|
protected |
Definition at line 625 of file RODFNet.cpp.
References RONet::getEdge(), Named::getID(), and RODFDetector::getLaneID().
Referenced by buildDetectorEdgeDependencies(), buildRoutes(), computeRoutesFor(), getAbsPos(), isDestination(), isFalseSource(), isSource(), and revalidateFlows().
const std::vector< std::string > & RODFNet::getDetectorList | ( | ROEdge * | edge | ) | const |
Definition at line 664 of file RODFNet.cpp.
References myDetectorsOnEdges.
|
inlineinherited |
Retrieves all TAZ (districts) from the network.
Definition at line 140 of file RONet.h.
References RONet::myDistricts.
Referenced by main().
|
inlineinherited |
Retrieves an edge from the network.
This is not very pretty, but necessary, though, as routes run over instances, not over ids.
[in] | name | The name of the edge to retrieve |
Definition at line 152 of file RONet.h.
References NamedObjectCont< T >::get(), and RONet::myEdges.
Referenced by RONet::addDistrictEdge(), ROLoader::EdgeFloatTimeLineRetriever_EdgeTravelTime::addEdgeWeight(), RORouteHandler::addPersonTrip(), RORouteHandler::addStop(), ROJTRTurnDefLoader::addToEdge(), ROJTRTurnDefLoader::beginFromEdge(), ROMAAssignments::computePath(), getDetectorEdge(), RONet::getEdgeForLaneID(), ROEdge::getStopPosition(), ROMAAssignments::incremental(), loadJTRDefinitions(), RODFDetectorHandler::myStartElement(), ROJTRTurnDefLoader::myStartElement(), RORouteHandler::myStartElement(), RONetHandler::parseConnection(), RORouteHandler::parseEdges(), RORouteHandler::parseFromViaTo(), AGActivityGenHandler::parseStreets(), ROVehicle::ROVehicle(), ROVehicle::saveAsXML(), ROMAAssignments::sue(), RODFDetectorCon::writeEmitters(), and RODFDetectorCon::writeSpeedTrigger().
|
inlineinherited |
Retrieves an edge from the network when the lane id is given.
[in] | laneID | The name of the lane to retrieve the edge for |
Definition at line 162 of file RONet.h.
References RONet::getEdge().
Referenced by RONet::adaptIntermodalRouter(), ROVehicle::addStop(), RONetHandler::parseAccess(), and RONetHandler::parseStoppingPlace().
|
inlineinherited |
Definition at line 392 of file RONet.h.
References RONet::myEdges.
Referenced by buildApproachList(), AGCity::completeStreets(), RORouteHandler::getLaneTree(), ROMAAssignments::incremental(), initNet(), ROLoader::loadNet(), ROLoader::loadWeights(), ROMAAssignments::resetFlows(), ROMAAssignments::sue(), and writeInterval().
|
inherited |
Returns the total number of edges the network contains including internal edges.
Definition at line 648 of file RONet.cpp.
References RONet::myEdges, and NamedObjectCont< T >::size().
Referenced by computeAllPairs(), computeRoutes(), and main().
|
staticinherited |
Returns the pointer to the unique instance of RONet (singleton).
Definition at line 55 of file RONet.cpp.
References RONet::myInstance.
Referenced by ROPerson::addTrip(), ROEdge::getStopPosition(), ROEdge::getSuccessors(), ROEdge::getViaSuccessors(), ROVehicle::saveAsXML(), ROPerson::Ride::saveAsXML(), and ROPerson::Walk::saveAsXML().
|
inherited |
Returns the number of internal edges the network contains.
Definition at line 654 of file RONet.cpp.
References RONet::myNumInternalEdges.
Referenced by computeAllPairs().
|
inline |
Definition at line 90 of file RODFNet.h.
References myMaxSpeedFactorLKW.
Referenced by RODFDetectorCon::writeEmitters().
|
inline |
Definition at line 86 of file RODFNet.h.
References myMaxSpeedFactorPKW.
Referenced by RODFDetectorCon::writeEmitters().
|
inlineinherited |
Retrieves an node from the network.
[in] | name | The name of the node to retrieve |
Definition at line 184 of file RONet.h.
References NamedObjectCont< T >::get(), and RONet::myNodes.
Referenced by RONetHandler::parseEdge(), and RONetHandler::parseJunction().
|
inherited |
Returns the restrictions for an edge type If no restrictions are present, 0 is returned.
[in] | id | The id of the type |
Definition at line 127 of file RONet.cpp.
References RONet::myRestrictions.
Referenced by RONetHandler::parseEdge().
|
inlineinherited |
Returns the named route definition.
[in] | name | The name of the route definition to retrieve |
Check whether a const pointer may be returned
Rename myRoutes to myRouteDefinitions
Definition at line 293 of file RONet.h.
References NamedObjectCont< T >::get(), and RONet::myRoutes.
Referenced by RONet::adaptIntermodalRouter(), RORouteHandler::addWalk(), RONet::checkFlows(), RORouteHandler::closeFlow(), RORouteHandler::closeRoute(), RORouteHandler::closeVehicle(), RORouteHandler::openRoute(), and RORouteHandler::openRouteDistribution().
|
inlineinherited |
Definition at line 402 of file RONet.h.
References RONet::myRouteAlternativesOutput, and RONet::myRoutesOutput.
Referenced by computeRoutes().
|
inlineinherited |
Retrieves a stopping place from the network.
[in] | id | The name of the stop to retrieve |
[in] | category | The type of stop |
Definition at line 207 of file RONet.h.
References RONet::myStoppingPlaces.
Referenced by RORouteHandler::addPersonTrip(), RORouteHandler::addStop(), and RORouteHandler::myStartElement().
|
inherited |
return the name for the given stopping place id
Definition at line 703 of file RONet.cpp.
References SUMOVehicleParameter::Stop::busstop, and RONet::myStoppingPlaces.
Referenced by ROPerson::Ride::saveAsXML(), and ROPerson::Walk::saveAsXML().
|
inherited |
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
[in] | id | The id of the vehicle type to return |
Definition at line 278 of file RONet.cpp.
References DEFAULT_BIKETYPE_ID, DEFAULT_PEDTYPE_ID, DEFAULT_VTYPE_ID, NamedObjectCont< T >::get(), RONet::myDefaultBikeTypeMayBeDeleted, RONet::myDefaultPedTypeMayBeDeleted, RONet::myDefaultVTypeMayBeDeleted, RONet::myVehicleTypes, and RONet::myVTypeDistDict.
Referenced by ROPerson::addTrip(), RONet::checkFlows(), RORouteHandler::closeFlow(), RORouteHandler::closeVehicle(), computeRoutes(), RORouteHandler::myStartElement(), RORouteHandler::openVehicleTypeDistribution(), RORouteHandler::parseGeoEdges(), and ROMAAssignments::ROMAAssignments().
|
protected |
Definition at line 646 of file RODFNet.cpp.
References myApproachedEdges.
Referenced by computeRoutesFor(), and isDestination().
|
protected |
Definition at line 637 of file RODFNet.cpp.
References myApproachingEdges.
Referenced by isSource().
bool RODFNet::hasDetector | ( | ROEdge * | edge | ) | const |
Definition at line 655 of file RODFNet.cpp.
References myDetectorsOnEdges.
Referenced by RODFDetector::buildDestinationDistribution(), computeRoutesFor(), RODFDetector::computeSplitProbabilities(), isDestination(), isFalseSource(), isSource(), and revalidateFlows().
|
protected |
Definition at line 148 of file RODFNet.cpp.
References BETWEEN_DETECTOR, RODFDetectorCon::getDetector(), RODFDetector::getType(), and myDetectorsOnEdges.
Referenced by computeRoutesFor().
|
inherited |
Definition at line 692 of file RONet.cpp.
References RONet::myHavePermissions.
Referenced by computeRoutes().
|
protected |
Definition at line 164 of file RODFNet.cpp.
References RODFDetectorCon::getDetector(), RODFDetector::getType(), myDetectorsOnEdges, and SOURCE_DETECTOR.
Referenced by computeRoutesFor().
|
protected |
Definition at line 693 of file RODFNet.cpp.
References getDetectorEdge().
Referenced by computeTypes(), and isDestination().
|
protected |
Definition at line 802 of file RODFNet.cpp.
References getAbsPos(), RODFDetectorCon::getDetector(), getDetectorEdge(), Named::getID(), ROEdge::getSpeedLimit(), hasApproached(), hasDetector(), isDestination(), myAmInHighwayMode, myApproachedEdges, myDetectorEdges, myDetectorsOnEdges, and WRITE_WARNING.
|
protected |
Definition at line 686 of file RODFNet.cpp.
References getDetectorEdge().
Referenced by computeTypes(), and isFalseSource().
|
protected |
Definition at line 878 of file RODFNet.cpp.
References BETWEEN_DETECTOR, RODFDetectorCon::getDetector(), getDetectorEdge(), Named::getID(), ROEdge::getSpeedLimit(), RODFDetector::getType(), hasDetector(), isFalseSource(), myAmInHighwayMode, myApproachedEdges, myDetectorsOnEdges, SINK_DETECTOR, SOURCE_DETECTOR, and WRITE_WARNING.
|
protected |
Definition at line 678 of file RODFNet.cpp.
References getDetectorEdge().
Referenced by computeTypes(), and isSource().
|
protected |
Definition at line 700 of file RODFNet.cpp.
References getAbsPos(), RODFDetectorCon::getDetector(), getDetectorEdge(), Named::getID(), ROEdge::getSpeedLimit(), hasApproaching(), hasDetector(), isSource(), myAmInHighwayMode, myApproachingEdges, myDetectorEdges, myDetectorsOnEdges, and WRITE_WARNING.
void RODFNet::mesoJoin | ( | RODFDetectorCon & | detectors, |
RODFDetectorFlows & | flows | ||
) |
Definition at line 1072 of file RODFNet.cpp.
References buildDetectorEdgeDependencies(), RODFDetectorCon::getDetector(), RODFDetector::getPos(), RODFDetectorFlows::mesoJoin(), RODFDetectorCon::mesoJoin(), and myDetectorsOnEdges.
|
inherited |
Opens the output for computed routes.
If one of the file outputs can not be build, an IOError is thrown.
[in] | options | The options to be asked for "output-file", "alternatives-output" and "vtype-output" |
Definition at line 214 of file RONet.cpp.
References OptionsCont::exists(), OptionsCont::getBool(), OutputDevice::getDevice(), OptionsCont::getString(), OptionsCont::isSet(), RONet::myRouteAlternativesOutput, RONet::myRoutesOutput, RONet::myTypesOutput, SUMO_TAG_ROUTES, OutputDevice::writeAttr(), and OutputDevice::writeHeader().
Referenced by computeRoutes().
void RODFNet::removeEmptyDetectors | ( | RODFDetectorCon & | detectors, |
RODFDetectorFlows & | flows | ||
) |
Definition at line 584 of file RODFNet.cpp.
References RODFDetectorCon::getDetectors(), RODFDetectorFlows::knows(), RODFDetectorCon::removeDetector(), RODFDetectorFlows::removeFlow(), and WRITE_MESSAGE.
Referenced by startComputation().
void RODFNet::reportEmptyDetectors | ( | RODFDetectorCon & | detectors, |
RODFDetectorFlows & | flows | ||
) |
Definition at line 607 of file RODFNet.cpp.
References RODFDetectorCon::getDetectors(), RODFDetectorFlows::knows(), and WRITE_MESSAGE.
Referenced by startComputation().
|
protected |
Definition at line 422 of file RODFNet.cpp.
References RODFNet::IterationEdge::depth, RODFNet::IterationEdge::edge, getDetectorEdge(), RODFDetectorFlows::getFlowDefs(), RODFEdge::getFlows(), Named::getID(), hasDetector(), RODFDetectorFlows::knows(), myApproachedEdges, myApproachingEdges, FlowDef::qLKW, FlowDef::qPKW, RODFDetectorFlows::setFlows(), FlowDef::vLKW, FlowDef::vPKW, and WRITE_WARNING.
void RODFNet::revalidateFlows | ( | const RODFDetectorCon & | detectors, |
RODFDetectorFlows & | flows, | ||
SUMOTime | startTime, | ||
SUMOTime | endTime, | ||
SUMOTime | stepOffset | ||
) |
Definition at line 570 of file RODFNet.cpp.
References RODFDetectorCon::getDetectors().
Referenced by startComputation().
|
inherited |
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.
[in] | options | The options used during this process |
[in] | provider | The router provider for routes computation |
[in] | time | The time until which route definitions shall be processed |
Definition at line 534 of file RONet.cpp.
References RONet::checkFlows(), RORoutable::computeRoute(), RONet::createBulkRouteRequests(), OptionsCont::getBool(), MsgHandler::getErrorInstance(), Named::getID(), OptionsCont::getInt(), ROVehicle::getRouteDefinition(), RORoutable::getRoutingSuccess(), MsgHandler::getWarningInstance(), RORoutable::isPartOfFlow(), RORoutable::isPublicTransport(), MIN2(), RONet::myContainers, RONet::myDiscardedRouteNo, RONet::myErrorHandler, RONet::myHaveActiveFlows, RONet::myRoutables, RONet::myRouteAlternativesOutput, RONet::myRoutes, RONet::myRoutesOutput, RONet::myTypesOutput, RONet::myVehIDs, RONet::myWrittenRouteNo, NamedObjectCont< T >::remove(), SUMOTime_MAX, toString(), RORoutable::write(), WRITE_MESSAGE, and OutputDevice::writePreformattedTag().
Referenced by ROLoader::processRoutes().
|
inherited |
Definition at line 698 of file RONet.cpp.
References RONet::myHavePermissions.
Referenced by RONetHandler::parseLane().
|
inherited |
Writes the intermodal network and weights if requested.
If one of the file outputs can not be build, an IOError is thrown.
[in] | options | The options to be asked for "intermodal-network-output" and "intermodal-weight-output" |
Definition at line 235 of file RONet.cpp.
References OutputDevice::closeTag(), OutputDevice::createDeviceByOption(), OptionsCont::exists(), OutputDevice::getDevice(), OutputDevice::getDeviceByOption(), OptionsCont::getString(), OptionsCont::isSet(), OutputDevice::openTag(), SUMO_ATTR_BEGIN, SUMO_ATTR_END, SUMO_ATTR_ID, SUMO_TAG_INTERVAL, SUMOTime_MAX, OutputDevice::writeAttr(), IntermodalRouter::writeNetwork(), and IntermodalRouter::writeWeights().
Referenced by computeRoutes().
|
private |
Definition at line 177 of file RODFNet.h.
Referenced by computeRoutesFor(), isDestination(), isFalseSource(), and isSource().
|
private |
Map of edge name->list of names of edges approached by this edge.
Definition at line 172 of file RODFNet.h.
Referenced by buildApproachList(), computeRoutesFor(), hasApproached(), isDestination(), isFalseSource(), and revalidateFlows().
|
private |
Map of edge name->list of names of this edge approaching edges.
Definition at line 169 of file RODFNet.h.
Referenced by buildApproachList(), hasApproaching(), isSource(), and revalidateFlows().
|
private |
Definition at line 190 of file RODFNet.h.
Referenced by buildEdgeFlowMap(), and getAvgSpeedFactorLKW().
|
private |
Definition at line 189 of file RODFNet.h.
Referenced by buildEdgeFlowMap(), and getAvgSpeedFactorPKW().
|
privateinherited |
Definition at line 494 of file RONet.h.
Referenced by RONet::addContainer(), RONet::furtherStored(), and RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
Whether the default bicycle type was already used or can still be replaced.
Definition at line 478 of file RONet.h.
Referenced by RONet::getVehicleTypeSecure().
|
privateinherited |
Whether the default pedestrian type was already used or can still be replaced.
Definition at line 475 of file RONet.h.
Referenced by RONet::checkVType(), and RONet::getVehicleTypeSecure().
|
privateinherited |
Whether the default vehicle type was already used or can still be replaced.
Definition at line 472 of file RONet.h.
Referenced by RONet::checkVType(), and RONet::getVehicleTypeSecure().
|
privateinherited |
Departure times for randomized flows.
Definition at line 500 of file RONet.h.
Referenced by RONet::addFlow(), and RONet::checkFlows().
|
mutableprivate |
Definition at line 175 of file RODFNet.h.
Referenced by buildDetectorDependencies(), buildDetectorEdgeDependencies(), isDestination(), and isSource().
Definition at line 174 of file RODFNet.h.
Referenced by buildDetectorDependencies(), buildDetectorEdgeDependencies(), buildEdgeFlowMap(), buildRoutes(), getDetectorList(), hasDetector(), hasInBetweenDetectorsOnly(), hasSourceDetector(), isDestination(), isFalseSource(), isSource(), and mesoJoin().
|
private |
List of ids of edges that shall not be used.
Definition at line 181 of file RODFNet.h.
Referenced by buildApproachList(), and RODFNet().
|
privateinherited |
The number of discarded routes.
Definition at line 518 of file RONet.h.
Referenced by RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
traffic assignment zones with sources and sinks
Definition at line 503 of file RONet.h.
Referenced by RONet::addDistrict(), RONet::addDistrictEdge(), and RONet::getDistricts().
|
privateinherited |
Known edges.
Definition at line 458 of file RONet.h.
Referenced by RONet::addEdge(), RONet::getEdge(), RONet::getEdgeMap(), and RONet::getEdgeNumber().
|
privateinherited |
handler for ignorable error messages
Definition at line 533 of file RONet.h.
Referenced by RONet::createBulkRouteRequests(), and RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
Known flows.
Definition at line 487 of file RONet.h.
Referenced by RONet::adaptIntermodalRouter(), RONet::addFlow(), RONet::checkFlows(), and RONet::furtherStored().
|
privateinherited |
whether any flows are still active
Definition at line 490 of file RONet.h.
Referenced by RONet::checkFlows(), RONet::furtherStored(), and RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
Whether the network contains edges which not all vehicles may pass.
Definition at line 524 of file RONet.h.
Referenced by RONet::hasPermissions(), and RONet::setPermissionsFound().
|
private |
Definition at line 178 of file RODFNet.h.
Referenced by computeTypes().
|
staticprivateinherited |
Unique instance of RONet.
Definition at line 446 of file RONet.h.
Referenced by RONet::adaptIntermodalRouter(), RONet::getInstance(), and RONet::RONet().
|
private |
Definition at line 178 of file RODFNet.h.
Referenced by computeTypes().
|
private |
Definition at line 184 of file RODFNet.h.
Referenced by buildApproachList(), and RODFNet().
|
privateinherited |
whether to keep the the vtype distribution in output
Definition at line 536 of file RONet.h.
Referenced by RONet::checkFlows().
|
private |
Definition at line 188 of file RODFNet.h.
Referenced by buildEdgeFlowMap(), and getMaxSpeedFactorLKW().
|
private |
maximum speed factor in measurements
Definition at line 187 of file RODFNet.h.
Referenced by buildEdgeFlowMap(), and getMaxSpeedFactorPKW().
|
privateinherited |
Known nodes.
Definition at line 455 of file RONet.h.
Referenced by RONet::addNode(), and RONet::getNode().
|
privateinherited |
The number of internal edges in the dictionary.
Definition at line 530 of file RONet.h.
Referenced by RONet::addEdge(), and RONet::getInternalEdgeNumber().
|
privateinherited |
|
privateinherited |
vehicles to keep for public transport routing
Definition at line 497 of file RONet.h.
Referenced by RONet::adaptIntermodalRouter(), RONet::addVehicle(), and RONet::~RONet().
|
privateinherited |
|
privateinherited |
The vehicle class specific speed restrictions.
Definition at line 527 of file RONet.h.
Referenced by RONet::addRestriction(), and RONet::getRestrictions().
|
privateinherited |
Known routables.
Definition at line 484 of file RONet.h.
Referenced by RONet::addPerson(), RONet::addVehicle(), RONet::createBulkRouteRequests(), RONet::furtherStored(), RONet::saveAndRemoveRoutesUntil(), and RONet::~RONet().
|
privateinherited |
The file to write the computed route alternatives into.
Definition at line 509 of file RONet.h.
Referenced by RONet::cleanup(), RONet::getRouteOutput(), RONet::openOutput(), and RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
Known routes.
Definition at line 481 of file RONet.h.
Referenced by RONet::addRouteDef(), RONet::getRouteDef(), RONet::saveAndRemoveRoutesUntil(), and RONet::~RONet().
|
privateinherited |
The file to write the computed routes into.
Definition at line 506 of file RONet.h.
Referenced by RONet::cleanup(), RONet::getRouteOutput(), RONet::openOutput(), and RONet::saveAndRemoveRoutesUntil().
|
private |
Definition at line 178 of file RODFNet.h.
Referenced by computeTypes().
|
mutableprivate |
Definition at line 178 of file RODFNet.h.
Referenced by computeTypes().
|
privateinherited |
Known bus / train / container stops and parking areas.
Definition at line 461 of file RONet.h.
Referenced by RONet::adaptIntermodalRouter(), RONet::addStoppingPlace(), RONet::getStoppingPlace(), and RONet::getStoppingPlaceName().
|
privateinherited |
The file to write the vehicle types into.
Definition at line 512 of file RONet.h.
Referenced by RONet::cleanup(), RONet::openOutput(), and RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
Known vehicle types.
Definition at line 464 of file RONet.h.
Referenced by RONet::addVehicleType(), RONet::checkVType(), RONet::getVehicleTypeSecure(), and RONet::RONet().
|
privateinherited |
Known vehicle ids.
Definition at line 449 of file RONet.h.
Referenced by RONet::addVehicle(), and RONet::saveAndRemoveRoutesUntil().
|
privateinherited |
A distribution of vehicle types (probability->vehicle type)
Definition at line 469 of file RONet.h.
Referenced by RONet::addVTypeDistribution(), RONet::checkVType(), and RONet::getVehicleTypeSecure().
|
privateinherited |
The number of written routes.
Definition at line 521 of file RONet.h.
Referenced by RONet::saveAndRemoveRoutesUntil().