![]() |
Eclipse SUMO - Simulation of Urban MObility
|
A device that performs vehicle rerouting based on current edge speeds. More...
#include <MSRoutingEngine.h>
Public Types | |
| typedef SUMOAbstractRouter< MSEdge, SUMOVehicle >::Prohibitions | Prohibitions |
Static Public Member Functions | |
| static void | addEdgeTravelTime (const MSEdge &edge, const SUMOTime travelTime) |
| record actual travel time for an edge | |
| static void | applyExtras (const MSEdge *const e, const SUMOVehicle *const v, SUMOTime step, double &effort) |
| apply cost modifications from randomness, priorityFactor and preferences | |
| static void | cleanup () |
| deletes the router instance | |
| static void | cleanupCCH () |
| tears down the CCH state (myCCHLive/myCCHFreeflow/myCCHGraph) only – the ref vehicles owned by the CCH metric families hold a raw MSVehicleType* that MSVehicleControl frees, so this MUST run before MSNet deletes its MSVehicleControl (cleanup() itself runs far later, from MSNet::clearAll(), so this is called separately and first; it is also idempotent/safe to call again from cleanup() afterwards since it nulls out the pointers it deletes) | |
| static MSCCHGraph * | ensureCCHGraph () |
| the shared CCH topology, built on first demand (used by MSNet::getRouterTT to construct its CCH router; the device path builds it through initCCH) | |
| static double | getAssumedSpeed (const MSEdge *edge, const SUMOVehicle *veh) |
| return current travel speed assumption | |
| static ConstMSRoutePtr | getCachedRoute (const std::pair< const MSEdge *, const MSEdge * > &key) |
| return the cached route or nullptr on miss | |
| static double | getEffort (const MSEdge *const e, const SUMOVehicle *const v, double t) |
| Returns the effort to pass an edge. | |
| static double | getEffortBike (const MSEdge *const e, const SUMOVehicle *const v, double t) |
| static double | getEffortExtra (const MSEdge *const e, const SUMOVehicle *const v, double t) |
| static const RoutingKit::CustomizableContractionHierarchyMetric * | getFreeflowCCHMetric (SUMOVehicleClass vClass, SUMOTime time, const SUMOVehicle *veh) |
| the free-flow CCH metric for MSNet's routers (TraCI / triggers / GUI), keyed by vehicle type and filled through MSNet::getTravelTime with a reference vehicle of the type. Free-flow efforts are static, so each metric customizes once; a runtime permission change re-customizes in place. Returns nullptr (-> exact A* fallback) whenever the query cannot be served by a shared metric: individual or global TraCI edge weights, a routing mode other than DEFAULT, or a vehicle-specific type. MAIN-THREAD ONLY – MSNet's routers never run on the worker threads, which is what allows the synchronous lazy build and repair. | |
| static MSTransportableRouter & | getIntermodalRouterTT (const int rngIndex, const Prohibitions &prohibited={}) |
| return the person router instance | |
| static SUMOTime | getLastAdaptation () |
| Information when the last edge weight adaptation occurred. | |
| static const RoutingKit::CustomizableContractionHierarchyMetric * | getPublishedCCHMetric (SUMOVehicleClass vClass, SUMOTime time, const SUMOVehicle *veh) |
| the currently published (customized) CCH metric FOR A GIVEN vehicle class, or nullptr if that class has no CCH metric (then the caller falls back to A*). Lock-free: a plain atomic pointer read. The metric objects live for the whole run, so the raw pointer is always valid; the double buffer guarantees the pointer we hand out is not the one being customized. Called on the routing hot path – allocation- and lock-free. | |
| static MSVehicleRouter & | getRouterTT (const int rngIndex, SUMOVehicleClass svc, const Prohibitions &prohibited={}) |
| return the vehicle router instance | |
| static bool | hasBikeSpeeds () |
| whether the router collects bicycle speeds | |
| static bool | hasEdgeUpdates () |
| returns whether any edge weight updates will take place | |
| static bool | haveExtras () |
| static void | initEdgeWeights (SUMOVehicleClass svc, SUMOTime lastAdaption=-1, int index=-1) |
| initialize the edge weights if not done before | |
| static void | initRouter (SUMOVehicle *vehicle=nullptr) |
| static void | initWeightConstants (const OptionsCont &oc) |
| initialize constants for using myPriorityFactor | |
| static void | initWeightUpdate (SUMOTime lastAdaption=- 1) |
| intialize period edge weight update | |
| static void | invalidateCCHEdge (const MSEdge *e) |
| a runtime permission change (closure / re-opening) hit this edge: invalidate the graph's primed connection masks and both families' metrics (queries divert to the exact fallback until the families re-customize) | |
| static bool | isEnabled () |
| returns whether any routing actions take place | |
| static void | loadState (const SUMOSAXAttributes &attrs) |
| Loads the state. | |
| static void | reroute (MSTransportable &t, const SUMOTime currentTime, const std::string &info, const bool onInit=false, const bool silent=false, const Prohibitions &prohibited={}) |
| initiate the person rerouting, create router / thread pool on first use | |
| static void | reroute (SUMOVehicle &vehicle, const SUMOTime currentTime, const std::string &info, const bool onInit=false, const bool silent=false, const Prohibitions &prohibited={}) |
| initiate the rerouting, create router / thread pool on first use | |
| static void | saveState (OutputDevice &out) |
| Saves the state (i.e. recorded speeds) | |
| static void | setEdgeTravelTime (const MSEdge *const edge, const double travelTime) |
| adapt the known travel time for an edge | |
| static bool | withTaz () |
| whether taz-routing is enabled | |
Static Public Attributes | |
| static SUMOAbstractRouter< MSEdge, SUMOVehicle >::Operation | myEffortFunc = &MSRoutingEngine::getEffort |
Private Types | |
| typedef std::pair< SUMOTime, int > | TimeAndCount |
Private Member Functions | |
| MSRoutingEngine (const MSRoutingEngine &) | |
| Invalidated copy constructor. | |
| MSRoutingEngine & | operator= (const MSRoutingEngine &) |
| Invalidated assignment operator. | |
Static Private Member Functions | |
| static void | _initEdgeWeights (std::vector< double > &edgeSpeeds, std::vector< std::vector< double > > &pastEdgeSpeeds) |
| initialized edge speed storage into the given containers | |
| static SUMOVehicle * | buildCCHRefVehicle (const MSVehicleType *type, int slot) |
| construct the unregistered effort-reference vehicle for a type: never counted, inserted or given devices, with the type's mean speed factor and a deterministic random seed (the family's RefVehicleFactory; the slot picks the frozen random-factor realization, see device.rerouting.cch-ensemble) | |
| static SumoRNG * | getThreadRNG () |
| returns RNG associated with the current thread | |
| static void | initCCH () |
| build the shared CCH + the live family with one metric per loaded type, publish initial metrics | |
Network state adaptation | |
| static SUMOTime | adaptEdgeEfforts (SUMOTime currentTime) |
| Adapt edge efforts by the current edge states. | |
| static double | patchSpeedForTurns (const MSEdge *edge, double currSpeed) |
Static Private Attributes | |
| static SUMOTime | myAdaptationInterval = -1 |
| At which time interval the edge weights get updated. | |
| static int | myAdaptationSteps |
| The number of steps for averaging edge speeds (ring-buffer) | |
| static int | myAdaptationStepsIndex = 0 |
| The current index in the pastEdgeSpeed ring-buffer. | |
| static double | myAdaptationWeight |
| Information which weight prior edge efforts have. | |
| static bool | myBikeSpeeds |
| whether separate speeds for bicycles shall be tracked | |
| static std::map< std::pair< const MSEdge *, const MSEdge * >, ConstMSRoutePtr > | myCachedRoutes |
| The container of pre-calculated routes. | |
| static MSCCHMetricFamily * | myCCHFreeflow = nullptr |
| the STATIC free-flow metric family behind MSNet's routers (TraCI / triggers / GUI, all main-thread); built on first query | |
| static MSCCHGraph * | myCCHGraph = nullptr |
| the immutable shared CCH topology (built once), or nullptr if inactive | |
| static MSCCHMetricFamily * | myCCHLive = nullptr |
| the rerouting device's LIVE metric family over the adaptive speed tables (see utils/router/CCHMetricFamily.h): metrics are keyed by vehicle TYPE – mirroring duarouter's keying – and filled with an OWNED reference vehicle of the type, so the type's maximum speed, vClass speed limits, routing preferences, the bicycle speed table and one frozen weights.random-factor realization are exact per metric. nullptr until initCCH. | |
| static bool | myDynamicRandomness |
| whether randomness varies over time | |
| static std::vector< double > | myEdgeBikeSpeeds |
| static double | myEdgePriorityRange |
| the difference between maximum and minimum priority for all edges | |
| static std::vector< double > | myEdgeSpeeds |
| The container of edge speeds. | |
| static std::vector< TimeAndCount > | myEdgeTravelTimes |
| Sum of travel times experienced by equipped vehicles for each edge. | |
| static Command * | myEdgeWeightSettingCommand = nullptr |
| The weights adaptation/overwriting command. | |
| static bool | myHaveExtras |
| whether extra routing cost modifications are configured | |
| static SUMOTime | myLastAdaptation = -1 |
| Information when the last edge weight adaptation occurred. | |
| static double | myMinEdgePriority |
| Minimum priority for all edges. | |
| static std::vector< std::vector< double > > | myPastEdgeBikeSpeeds |
| static std::vector< std::vector< double > > | myPastEdgeSpeeds |
| The container of past edge speeds (when using a simple moving average) | |
| static double | myPriorityFactor |
| Coefficient for factoring edge priority into routing weight. | |
| static MSRouterProvider * | myRouterProvider = nullptr |
| The router to use. | |
| static bool | myWithTaz |
| whether taz shall be used at initial rerouting | |
A device that performs vehicle rerouting based on current edge speeds.
The routing-device system consists of in-vehicle devices that perform a routing and a simulation-wide (static) methods for colecting edge weights.
The edge weights container "myEdgeSpeeds" is pre-initialised as soon as one device is built and is kept updated via an event that adapts it to the current mean speed on the simulated network's edges.
A device is assigned to a vehicle using the common explicit/probability - procedure.
A device computes a new route for a vehicle as soon as the vehicle is inserted (within "enterLaneAtInsertion") - and, if the given period is larger than 0 - each x time steps where x is the period. This is triggered by an event that executes "wrappedRerouteCommandExecute".
Definition at line 76 of file MSRoutingEngine.h.
| typedef SUMOAbstractRouter<MSEdge,SUMOVehicle>::Prohibitions MSRoutingEngine::Prohibitions |
Definition at line 78 of file MSRoutingEngine.h.
|
private |
Definition at line 312 of file MSRoutingEngine.h.
|
private |
Invalidated copy constructor.
|
staticprivate |
initialized edge speed storage into the given containers
Definition at line 170 of file MSRoutingEngine.cpp.
References OptionsCont::getBool(), MSNet::getCurrentTimeStep(), MSNet::getEdgeControl(), MSEdgeControl::getEdges(), MSNet::getInstance(), OptionsCont::getOptions(), MSNet::getTravelTime(), MSGlobals::gWeightsSeparateTurns, myAdaptationSteps, myEdgeSpeeds, myEdgeTravelTimes, myLastAdaptation, and SIMTIME.
Referenced by initEdgeWeights().
Adapt edge efforts by the current edge states.
This method is called by the event handler at the end of a simulation step. The current edge weights are combined with the previously stored.
| [in] | currentTime | The current simulation time |
Definition at line 236 of file MSRoutingEngine.cpp.
References CCHMetricFamily< E, V, K >::atBarrier(), OutputDevice::closeTag(), DEBUG_COND, OutputDevice::getDeviceByOption(), MSNet::getEdgeControl(), MSEdgeControl::getEdges(), getEffortBike(), MSNet::getInstance(), OptionsCont::getOptions(), MSGlobals::gWeightsSeparateTurns, initEdgeWeights(), OptionsCont::isSet(), CCHMetricFamily< E, V, K >::markDirty(), myAdaptationInterval, myAdaptationSteps, myAdaptationStepsIndex, myAdaptationWeight, myBikeSpeeds, myCachedRoutes, myCCHLive, myEdgeBikeSpeeds, myEdgeSpeeds, myEffortFunc, myLastAdaptation, myPastEdgeBikeSpeeds, myPastEdgeSpeeds, OutputDevice::openTag(), patchSpeedForTurns(), SIMTIME, STEPS2TIME, SUMO_ATTR_BEGIN, SUMO_ATTR_END, SUMO_ATTR_ID, SUMO_TAG_EDGE, SUMO_TAG_INTERVAL, SVC_BICYCLE, SVC_PASSENGER, and OutputDevice::writeAttr().
Referenced by initWeightUpdate().
record actual travel time for an edge
Definition at line 723 of file MSRoutingEngine.cpp.
References MSEdge::getNumericalID(), and myEdgeTravelTimes.
Referenced by MSDevice_Routing::notifyEnter().
|
inlinestatic |
apply cost modifications from randomness, priorityFactor and preferences
Definition at line 104 of file MSRoutingEngine.h.
References MSNet::getInstance(), MSEdge::getNumericalID(), MSNet::getPreference(), MSEdge::getPriority(), SUMOTrafficObject::getRandomSeed(), MSEdge::getRoutingType(), SUMOTrafficObject::getVTypeParameter(), gRoutingPreferences, gWeightsRandomFactor, myDynamicRandomness, myEdgePriorityRange, myMinEdgePriority, myPriorityFactor, and RandHelper::randHash().
Referenced by getEffortExtra(), and MSNet::getTravelTime().
|
staticprivate |
construct the unregistered effort-reference vehicle for a type: never counted, inserted or given devices, with the type's mean speed factor and a deterministic random seed (the family's RefVehicleFactory; the slot picks the frozen random-factor realization, see device.rerouting.cch-ensemble)
Definition at line 378 of file MSRoutingEngine.cpp.
References MSEdge::getAllEdges(), MSVehicleType::getID(), Distribution_Parameterized::getParameter(), MSVehicleType::getSpeedFactor(), MSGlobals::gUseMesoSim, SUMOVehicleParameter::id, and toString().
Referenced by getFreeflowCCHMetric(), and initCCH().
|
static |
deletes the router instance
Definition at line 797 of file MSRoutingEngine.cpp.
References cleanupCCH(), MSGlobals::gNumThreads, myAdaptationInterval, myAdaptationStepsIndex, myCachedRoutes, myEdgeBikeSpeeds, myEdgeSpeeds, myEdgeTravelTimes, myPastEdgeBikeSpeeds, myPastEdgeSpeeds, and myRouterProvider.
Referenced by MSDevice::cleanupAll().
|
static |
tears down the CCH state (myCCHLive/myCCHFreeflow/myCCHGraph) only – the ref vehicles owned by the CCH metric families hold a raw MSVehicleType* that MSVehicleControl frees, so this MUST run before MSNet deletes its MSVehicleControl (cleanup() itself runs far later, from MSNet::clearAll(), so this is called separately and first; it is also idempotent/safe to call again from cleanup() afterwards since it nulls out the pointers it deletes)
Definition at line 779 of file MSRoutingEngine.cpp.
References myCCHFreeflow, myCCHGraph, and myCCHLive.
Referenced by cleanup(), and MSNet::~MSNet().
|
static |
the shared CCH topology, built on first demand (used by MSNet::getRouterTT to construct its CCH router; the device path builds it through initCCH)
Definition at line 337 of file MSRoutingEngine.cpp.
References MSEdge::getAllEdges(), and myCCHGraph.
Referenced by getFreeflowCCHMetric(), MSNet::getRouterTT(), and initCCH().
|
static |
return current travel speed assumption
Definition at line 230 of file MSRoutingEngine.cpp.
References MSEdge::getLength(), and myEffortFunc.
Referenced by MSEdge::getRoutingSpeed(), and MSEdge::getTravelTimeAggregated().
|
static |
return the cached route or nullptr on miss
Definition at line 553 of file MSRoutingEngine.cpp.
References myCachedRoutes.
Referenced by MSDevice_Routing::preInsertionReroute().
|
static |
Returns the effort to pass an edge.
This method is given to the used router in order to obtain the efforts to pass an edge from the internal edge weights container.
The time is not used, here, as the current simulation state is used in an aggregated way.
| [in] | e | The edge for which the effort to be passed shall be returned |
| [in] | v | The vehicle that is rerouted |
| [in] | t | The time for which the effort shall be returned |
Definition at line 200 of file MSRoutingEngine.cpp.
References MSEdge::getLength(), MSEdge::getMinimumTravelTime(), MSEdge::getNumericalID(), MAX2(), and myEdgeSpeeds.
Referenced by getEffortExtra(), MSDevice_Routing::getParameter(), MSNet::getTravelTime(), initCCH(), and initRouter().
|
static |
Definition at line 210 of file MSRoutingEngine.cpp.
References MSEdge::getLength(), MSEdge::getMinimumTravelTime(), MSEdge::getNumericalID(), MAX2(), and myEdgeBikeSpeeds.
Referenced by adaptEdgeEfforts(), getEffortExtra(), and MSNet::getTravelTime().
|
static |
Definition at line 220 of file MSRoutingEngine.cpp.
References applyExtras(), getEffort(), getEffortBike(), SUMOTrafficObject::getVClass(), myBikeSpeeds, SIMSTEP, and SVC_BICYCLE.
Referenced by MSNet::getTravelTime(), and initRouter().
|
static |
the free-flow CCH metric for MSNet's routers (TraCI / triggers / GUI), keyed by vehicle type and filled through MSNet::getTravelTime with a reference vehicle of the type. Free-flow efforts are static, so each metric customizes once; a runtime permission change re-customizes in place. Returns nullptr (-> exact A* fallback) whenever the query cannot be served by a shared metric: individual or global TraCI edge weights, a routing mode other than DEFAULT, or a vehicle-specific type. MAIN-THREAD ONLY – MSNet's routers never run on the worker threads, which is what allows the synchronous lazy build and repair.
Definition at line 447 of file MSRoutingEngine.cpp.
References buildCCHRefVehicle(), MSEdgeWeightsStorage::empty(), ensureCCHGraph(), CCHMetricFamily< E, V, K >::get(), MSNet::getCurrentTimeStep(), MSNet::getInstance(), SUMOTrafficObject::getRoutingMode(), MSNet::getTravelTime(), MSVehicleType::getVehicleClass(), SUMOTrafficObject::getVehicleType(), MSNet::getWeightsStorage(), MSBaseVehicle::getWeightsStorage(), MSVehicleType::isVehicleSpecific(), myCCHFreeflow, libsumo::ROUTING_MODE_DEFAULT, and SUMOTime_MAX.
Referenced by MSNet::getRouterTT().
|
static |
return the person router instance
Definition at line 755 of file MSRoutingEngine.cpp.
References MSNet::getEdgeControl(), MSNet::getInstance(), RouterProvider< E, L, N, V >::getIntermodalRouter(), MFXWorkerThread::Pool::getWorkers(), MSGlobals::gNumThreads, initEdgeWeights(), initRouter(), initWeightUpdate(), myRouterProvider, MFXWorkerThread::Pool::size(), SVC_PEDESTRIAN, and UNUSED_PARAMETER.
Referenced by MSStageTrip::proceed(), reroute(), MSTriggeredRerouter::resetClosedEdges(), and MSTriggeredRerouter::triggerRouting().
|
inlinestatic |
Information when the last edge weight adaptation occurred.
Definition at line 95 of file MSRoutingEngine.h.
References myLastAdaptation.
Referenced by MSDevice_Routing::reroute(), and MSTransportableDevice_Routing::reroute().
|
static |
the currently published (customized) CCH metric FOR A GIVEN vehicle class, or nullptr if that class has no CCH metric (then the caller falls back to A*). Lock-free: a plain atomic pointer read. The metric objects live for the whole run, so the raw pointer is always valid; the double buffer guarantees the pointer we hand out is not the one being customized. Called on the routing hot path – allocation- and lock-free.
Definition at line 429 of file MSRoutingEngine.cpp.
References Named::getID(), SUMOTrafficObject::getVehicleType(), MSVehicleType::isVehicleSpecific(), myCCHLive, and CCHMetricFamily< E, V, K >::published().
Referenced by initRouter().
|
static |
return the vehicle router instance
Definition at line 731 of file MSRoutingEngine.cpp.
References MSNet::getEdgeControl(), MSNet::getInstance(), RouterProvider< E, L, N, V >::getVehicleRouter(), MFXWorkerThread::Pool::getWorkers(), MSGlobals::gNumThreads, initEdgeWeights(), initRouter(), initWeightUpdate(), myRouterProvider, MFXWorkerThread::Pool::size(), and UNUSED_PARAMETER.
Referenced by MSDispatch_GreedyClosest::computeDispatch(), MSDevice_Taxi::dispatchShared(), MSDevice_StationFinder::estimateConsumption(), LIBSUMO_NAMESPACE::Simulation::findRoute(), MSDispatch::getRouter(), MSDevice_StationFinder::getRouter(), MSBaseVehicle::getRouterTT(), MSIdling_TaxiStand::idle(), MSDevice_Routing::notifyEnter(), MSDevice_StationFinder::planOpportunisticCharging(), MSDevice_Taxi::prepareStop(), MSDevice_Routing::reroute(), GUIVehicle::rerouteDRTStop(), MSDevice_StationFinder::rerouteToChargingStation(), MSTriggeredRerouter::resetClosedEdges(), MSDevice_StationFinder::teleportToChargingStation(), and MSTriggeredRerouter::triggerRouting().
|
staticprivate |
returns RNG associated with the current thread
|
inlinestatic |
whether the router collects bicycle speeds
Definition at line 191 of file MSRoutingEngine.h.
References myBikeSpeeds.
Referenced by MSNet::getTravelTime().
|
inlinestatic |
returns whether any edge weight updates will take place
Definition at line 90 of file MSRoutingEngine.h.
References myEdgeWeightSettingCommand.
Referenced by MSDevice_Routing::MSDevice_Routing().
|
inlinestatic |
Definition at line 99 of file MSRoutingEngine.h.
References myHaveExtras.
Referenced by MSNet::getTravelTime().
|
staticprivate |
build the shared CCH + the live family with one metric per loaded type, publish initial metrics
Definition at line 346 of file MSRoutingEngine.cpp.
References buildCCHRefVehicle(), CCHMetricFamily< E, V, K >::customize(), ensureCCHGraph(), getEffort(), OptionsCont::getFloat(), MSNet::getInstance(), OptionsCont::getInt(), OptionsCont::getOptions(), OptionsCont::getString(), MSNet::getVehicleControl(), MSVehicleControl::getVType(), MSVehicleControl::insertVTypeIDs(), MSVehicleType::isVehicleSpecific(), myCCHGraph, myCCHLive, myEffortFunc, CCHMetricFamily< E, V, K >::seedKey(), STEPS2TIME, and string2time().
Referenced by initRouter().
|
static |
initialize the edge weights if not done before
Definition at line 125 of file MSRoutingEngine.cpp.
References _initEdgeWeights(), OptionsCont::getInt(), OptionsCont::getOptions(), OptionsCont::isDefault(), myAdaptationSteps, myAdaptationStepsIndex, myAdaptationWeight, myBikeSpeeds, myEdgeBikeSpeeds, myEdgeSpeeds, myLastAdaptation, myPastEdgeBikeSpeeds, myPastEdgeSpeeds, and SVC_BICYCLE.
Referenced by adaptEdgeEfforts(), getIntermodalRouterTT(), getRouterTT(), MSBaseVehicle::initTransientModelParams(), MSStateHandler::myStartElement(), MSDevice_Routing::reroute(), and MSTransportableDevice_Routing::reroute().
|
static |
Definition at line 567 of file MSRoutingEngine.cpp.
References MSNet::adaptIntermodalRouter(), RouterProvider< E, L, N, V >::clone(), MSEdge::getAllEdges(), OptionsCont::getBool(), SUMOTrafficObject::getChosenSpeedFactor(), MSNet::getEdgeControl(), getEffort(), getEffortExtra(), OptionsCont::getFloat(), MSNet::getInstance(), OptionsCont::getInt(), MSNet::getMapMatcher(), OptionsCont::getOptions(), getPublishedCCHMetric(), OptionsCont::getString(), MSNet::getTravelTime(), SUMOTrafficObject::getVClass(), MFXWorkerThread::Pool::getWorkers(), MSDevice_Taxi::hasFleet(), MSNet::hasPermissions(), initCCH(), OptionsCont::isSet(), myAdaptationInterval, myBikeSpeeds, myCCHGraph, myEffortFunc, myHaveExtras, myRouterProvider, SUMOVehicleParserHelper::parseCarWalkTransfer(), SUMOVehicle::setChosenSpeedFactor(), MFXWorkerThread::Pool::size(), STEPS2TIME, string2time(), SUMOTime_MAX, SVC_PASSENGER, and TLF.
Referenced by getIntermodalRouterTT(), getRouterTT(), and reroute().
|
static |
initialize constants for using myPriorityFactor
Definition at line 146 of file MSRoutingEngine.cpp.
References OptionsCont::getBool(), MSNet::getEdgeControl(), MSEdgeControl::getEdges(), OptionsCont::getFloat(), MSNet::getInstance(), gRoutingPreferences, gWeightsRandomFactor, MAX2(), MIN2(), myDynamicRandomness, myEdgePriorityRange, myHaveExtras, myMinEdgePriority, myPriorityFactor, TL, and WRITE_WARNING.
Referenced by NLBuilder::build().
|
static |
intialize period edge weight update
Definition at line 100 of file MSRoutingEngine.cpp.
References adaptEdgeEfforts(), MSEventControl::addEvent(), OutputDevice::createDeviceByOption(), OptionsCont::getBool(), MSNet::getEndOfTimestepEvents(), OptionsCont::getFloat(), MSNet::getInstance(), OptionsCont::getOptions(), OptionsCont::getString(), myAdaptationInterval, myAdaptationWeight, myEdgeWeightSettingCommand, myLastAdaptation, myWithTaz, string2time(), TL, and WRITE_WARNING.
Referenced by MSTransportableDevice_Routing::buildDevices(), MSDevice_Routing::buildVehicleDevices(), getIntermodalRouterTT(), getRouterTT(), MSBaseVehicle::initTransientModelParams(), and MSStateHandler::myStartElement().
|
static |
a runtime permission change (closure / re-opening) hit this edge: invalidate the graph's primed connection masks and both families' metrics (queries divert to the exact fallback until the families re-customize)
Definition at line 409 of file MSRoutingEngine.cpp.
References CCHMetricFamily< E, V, K >::flagPermissionsStale(), CCHGraph< E, V >::invalidateClassMasks(), CCHMetricFamily< E, V, K >::invalidateEdge(), myCCHFreeflow, myCCHGraph, and myCCHLive.
Referenced by MSEdge::rebuildAllowedLanes().
|
inlinestatic |
returns whether any routing actions take place
Definition at line 177 of file MSRoutingEngine.h.
References myAdaptationInterval, and myWithTaz.
Referenced by MSInsertionControl::determineCandidates(), and MSInsertionControl::emitVehicles().
|
static |
Loads the state.
| [in] | attrs | XML attributes describing the current state |
Definition at line 860 of file MSRoutingEngine.cpp.
References MSEdge::dictionary(), SUMOSAXAttributes::get(), MSEdge::getNumericalID(), SUMOSAXAttributes::getOpt(), SUMOSAXAttributes::getString(), SUMOSAXAttributes::hasAttribute(), MSEdge::markDelayed(), myAdaptationSteps, myBikeSpeeds, myEdgeBikeSpeeds, myEdgeSpeeds, myPastEdgeBikeSpeeds, myPastEdgeSpeeds, SUMO_ATTR_BIKESPEED, SUMO_ATTR_ID, SUMO_ATTR_PASTBIKESPEED, SUMO_ATTR_PASTSPEED, SUMO_ATTR_SPEED, and WRITE_WARNING.
Referenced by MSStateHandler::myStartElement().
|
private |
Invalidated assignment operator.
|
staticprivate |
Definition at line 485 of file MSRoutingEngine.cpp.
References DEBUG_COND, Named::getID(), MSEdge::getLength(), MSEdge::getViaSuccessors(), MSGlobals::gWeightsSeparateTurns, MAX2(), myAdaptationSteps, myAdaptationStepsIndex, myEdgeSpeeds, myEdgeTravelTimes, myPastEdgeSpeeds, SIMTIME, and STEPS2TIME.
Referenced by adaptEdgeEfforts().
|
static |
initiate the person rerouting, create router / thread pool on first use
Definition at line 686 of file MSRoutingEngine.cpp.
References MSNet::getEdgeControl(), MSNet::getInstance(), getIntermodalRouterTT(), MSTransportable::getRNGIndex(), myWithTaz, IntermodalRouter< E, L, N, V >::prohibit(), MSTransportable::reroute(), and MFXWorkerThread::Pool::size().
|
static |
initiate the rerouting, create router / thread pool on first use
Definition at line 651 of file MSRoutingEngine.cpp.
References MFXWorkerThread::Pool::add(), MSNet::getEdgeControl(), MSNet::getInstance(), SUMOTrafficObject::getVClass(), RouterProvider< E, L, N, V >::getVehicleRouter(), initRouter(), myRouterProvider, myWithTaz, SUMOVehicle::reroute(), and MFXWorkerThread::Pool::size().
Referenced by MSDevice_Routing::reroute(), MSTransportableDevice_Routing::reroute(), and MSRailSignal::LinkInfo::reroute().
|
static |
Saves the state (i.e. recorded speeds)
| [in] | out | The OutputDevice to write the information into |
Definition at line 829 of file MSRoutingEngine.cpp.
References OutputDevice::closeTag(), MSNet::getEdgeControl(), MSEdgeControl::getEdges(), MSNet::getInstance(), myAdaptationSteps, myAdaptationStepsIndex, myBikeSpeeds, myEdgeBikeSpeeds, myEdgeSpeeds, myLastAdaptation, myPastEdgeBikeSpeeds, myPastEdgeSpeeds, OutputDevice::openTag(), SUMO_ATTR_BIKESPEED, SUMO_ATTR_ID, SUMO_ATTR_INDEX, SUMO_ATTR_LAST, SUMO_ATTR_PASTBIKESPEED, SUMO_ATTR_PASTSPEED, SUMO_ATTR_SPEED, SUMO_TAG_EDGE, SUMO_TAG_ROUTINGENGINE, and OutputDevice::writeAttr().
Referenced by MSStateHandler::saveState().
|
static |
adapt the known travel time for an edge
Definition at line 718 of file MSRoutingEngine.cpp.
References MSEdge::getLength(), MSEdge::getNumericalID(), and myEdgeSpeeds.
Referenced by MSDevice_Routing::setParameter().
|
inlinestatic |
whether taz-routing is enabled
Definition at line 218 of file MSRoutingEngine.h.
References myWithTaz.
Referenced by MSDevice_Routing::notifyEnter().
|
staticprivate |
At which time interval the edge weights get updated.
Definition at line 301 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanup(), initRouter(), initWeightUpdate(), and isEnabled().
|
staticprivate |
The number of steps for averaging edge speeds (ring-buffer)
Definition at line 307 of file MSRoutingEngine.h.
Referenced by _initEdgeWeights(), adaptEdgeEfforts(), initEdgeWeights(), loadState(), patchSpeedForTurns(), and saveState().
|
staticprivate |
The current index in the pastEdgeSpeed ring-buffer.
Definition at line 310 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanup(), initEdgeWeights(), patchSpeedForTurns(), and saveState().
|
staticprivate |
Information which weight prior edge efforts have.
Definition at line 298 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), initEdgeWeights(), and initWeightUpdate().
|
staticprivate |
whether separate speeds for bicycles shall be tracked
Definition at line 329 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), getEffortExtra(), hasBikeSpeeds(), initEdgeWeights(), initRouter(), loadState(), and saveState().
|
staticprivate |
The container of pre-calculated routes.
Definition at line 335 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanup(), and getCachedRoute().
|
staticprivate |
the STATIC free-flow metric family behind MSNet's routers (TraCI / triggers / GUI, all main-thread); built on first query
Definition at line 368 of file MSRoutingEngine.h.
Referenced by cleanupCCH(), getFreeflowCCHMetric(), and invalidateCCHEdge().
|
staticprivate |
the immutable shared CCH topology (built once), or nullptr if inactive
Definition at line 357 of file MSRoutingEngine.h.
Referenced by cleanupCCH(), ensureCCHGraph(), initCCH(), initRouter(), and invalidateCCHEdge().
|
staticprivate |
the rerouting device's LIVE metric family over the adaptive speed tables (see utils/router/CCHMetricFamily.h): metrics are keyed by vehicle TYPE – mirroring duarouter's keying – and filled with an OWNED reference vehicle of the type, so the type's maximum speed, vClass speed limits, routing preferences, the bicycle speed table and one frozen weights.random-factor realization are exact per metric. nullptr until initCCH.
Definition at line 365 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanupCCH(), getPublishedCCHMetric(), initCCH(), and invalidateCCHEdge().
|
staticprivate |
whether randomness varies over time
Definition at line 346 of file MSRoutingEngine.h.
Referenced by applyExtras(), and initWeightConstants().
|
staticprivate |
Definition at line 316 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanup(), getEffortBike(), initEdgeWeights(), loadState(), and saveState().
|
staticprivate |
the difference between maximum and minimum priority for all edges
Definition at line 343 of file MSRoutingEngine.h.
Referenced by applyExtras(), and initWeightConstants().
|
staticprivate |
The container of edge speeds.
Definition at line 315 of file MSRoutingEngine.h.
Referenced by _initEdgeWeights(), adaptEdgeEfforts(), cleanup(), getEffort(), initEdgeWeights(), loadState(), patchSpeedForTurns(), saveState(), and setEdgeTravelTime().
|
staticprivate |
Sum of travel times experienced by equipped vehicles for each edge.
Definition at line 319 of file MSRoutingEngine.h.
Referenced by _initEdgeWeights(), addEdgeTravelTime(), cleanup(), and patchSpeedForTurns().
|
staticprivate |
The weights adaptation/overwriting command.
Definition at line 295 of file MSRoutingEngine.h.
Referenced by hasEdgeUpdates(), and initWeightUpdate().
|
static |
Definition at line 212 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), getAssumedSpeed(), initCCH(), and initRouter().
|
staticprivate |
whether extra routing cost modifications are configured
Definition at line 349 of file MSRoutingEngine.h.
Referenced by haveExtras(), initRouter(), and initWeightConstants().
|
staticprivate |
Information when the last edge weight adaptation occurred.
Definition at line 304 of file MSRoutingEngine.h.
Referenced by _initEdgeWeights(), adaptEdgeEfforts(), getLastAdaptation(), initEdgeWeights(), initWeightUpdate(), and saveState().
|
staticprivate |
Minimum priority for all edges.
Definition at line 341 of file MSRoutingEngine.h.
Referenced by applyExtras(), and initWeightConstants().
|
staticprivate |
Definition at line 323 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanup(), initEdgeWeights(), loadState(), and saveState().
|
staticprivate |
The container of past edge speeds (when using a simple moving average)
Definition at line 322 of file MSRoutingEngine.h.
Referenced by adaptEdgeEfforts(), cleanup(), initEdgeWeights(), loadState(), patchSpeedForTurns(), and saveState().
|
staticprivate |
Coefficient for factoring edge priority into routing weight.
Definition at line 338 of file MSRoutingEngine.h.
Referenced by applyExtras(), and initWeightConstants().
|
staticprivate |
The router to use.
Definition at line 332 of file MSRoutingEngine.h.
Referenced by cleanup(), getIntermodalRouterTT(), getRouterTT(), initRouter(), and reroute().
|
staticprivate |
whether taz shall be used at initial rerouting
Definition at line 326 of file MSRoutingEngine.h.
Referenced by initWeightUpdate(), isEnabled(), reroute(), reroute(), and withTaz().