Eclipse SUMO - Simulation of Urban MObility
CHRouter< E, V > Class Template Reference

Computes the shortest path through a contracted network. More...

#include <CHRouter.h>

Inheritance diagram for CHRouter< E, V >:
[legend]
Collaboration diagram for CHRouter< E, V >:
[legend]

Data Structures

class  Unidirectional
 

Public Types

typedef std::pair< const typename SUMOAbstractRouter< E, V >::EdgeInfo *, const typename SUMOAbstractRouter< E, V >::EdgeInfo * > Meeting
 A meeting point of the two search scopes. More...
 
typedef double(* Operation) (const E *const, const V *const, double)
 Type of the function that is used to retrieve the edge effort. More...
 

Public Member Functions

void buildPathFromMeeting (Meeting meeting, std::vector< const E * > &into) const
 normal routing methods More...
 
 CHRouter (const std::vector< E * > &edges, bool unbuildIsWarning, typename SUMOAbstractRouter< E, V >::Operation operation, const SUMOVehicleClass svc, SUMOTime weightPeriod, const bool havePermissions, const bool haveRestrictions)
 Constructor. More...
 
 CHRouter (const std::vector< E * > &edges, bool unbuildIsWarning, typename SUMOAbstractRouter< E, V >::Operation operation, const SUMOVehicleClass svc, typename CHBuilder< E, V >::Hierarchy *hierarchy, const bool havePermissions, const bool haveRestrictions)
 Cloning constructor, should be used only for time independent instances which build a hierarchy only once. More...
 
virtual SUMOAbstractRouter< E, V > * clone ()
 
virtual bool compute (const E *from, const E *to, const V *const vehicle, SUMOTime msTime, std::vector< const E * > &into, bool silent=false)
 Builds the route between the given edges using the minimum traveltime in the contracted graph. More...
 
bool compute (const E *from, double fromPos, const E *to, double toPos, const V *const vehicle, SUMOTime msTime, std::vector< const E * > &into, bool silent=false)
 Builds the route between the given edges using the minimum effort at the given time, also taking into account position along the edges to ensure currect handling of looped routes The definition of the effort depends on the wished routing scheme. More...
 
bool computeLooped (const E *from, const E *to, const V *const vehicle, SUMOTime msTime, std::vector< const E * > &into, bool silent=false)
 Builds the route between the given edges using the minimum effort at the given time if from == to, return the shortest looped route. More...
 
void endQuery (int visits)
 
double getEffort (const E *const e, const V *const v, double t) const
 
double getTravelTime (const E *const e, const V *const v, const double t, const double effort) const
 
const std::string & getType () const
 
bool isProhibited (const E *const edge, const V *const vehicle) const
 
virtual void prohibit (const std::vector< E * > &)
 
double recomputeCosts (const std::vector< const E * > &edges, const V *const v, double fromPos, double toPos, SUMOTime msTime, double *lengthp=nullptr) const
 
double recomputeCosts (const std::vector< const E * > &edges, const V *const v, SUMOTime msTime, double *lengthp=nullptr) const
 
virtual void reset (const V *const vehicle)
 trigger hierarchy rebuild More...
 
void setAutoBulkMode (const bool mode)
 
void setBulkMode (const bool mode)
 
void startQuery ()
 
void updateViaCost (const E *const prev, const E *const e, const V *const v, double &time, double &effort, double &length) const
 
void updateViaEdgeCost (const E *viaEdge, const V *const v, double &time, double &effort, double &length) const
 
virtual ~CHRouter ()
 Destructor. More...
 

Protected Attributes

bool myAutoBulkMode
 whether we are currently trying to detect bulk mode automatically More...
 
bool myBulkMode
 whether we are currently operating several route queries in a bulk More...
 
MsgHandler *const myErrorMsgHandler
 the handler for routing errors More...
 
const bool myHavePermissions
 whether edge permissions need to be considered More...
 
const bool myHaveRestrictions
 whether edge restrictions need to be considered More...
 
Operation myOperation
 The object's operation to perform. More...
 
std::vector< E * > myProhibited
 
Operation myTTOperation
 The object's operation to perform for travel times. More...
 

Private Member Functions

const E * getVia (const E *forwardFrom, const E *forwardTo) const
 

Private Attributes

Unidirectional myBackwardSearch
 
const std::vector< E * > & myEdges
 all edges with numerical ids More...
 
Unidirectional myForwardSearch
 the unidirectional search queues More...
 
CHBuilder< E, V >::Hierarchy * myHierarchy
 
CHBuilder< E, V > * myHierarchyBuilder
 
long long int myNumQueries
 
long long int myQueryStartTime
 the time spent querying in milliseconds More...
 
long long int myQueryTimeSum
 
long long int myQueryVisits
 counters for performance logging More...
 
const SUMOVehicleClass mySVC
 the permissions for which the hierarchy was constructed More...
 
const std::string myType
 the type of this router More...
 
SUMOTime myValidUntil
 the validity duration of the current hierarchy (exclusive) More...
 
const SUMOTime myWeightPeriod
 the validity duration of one weight interval More...
 

Detailed Description

template<class E, class V>
class CHRouter< E, V >

Computes the shortest path through a contracted network.

The template parameters are:

Parameters
EThe edge class to use (MSEdge/ROEdge)
VThe vehicle class to use (MSVehicle/ROVehicle)
PFThe prohibition function to use (prohibited_withPermissions/noProhibitions)

The router is edge-based. It must know the number of edges for internal reasons and whether a missing connection between two given edges (unbuild route) shall be reported as an error or as a warning.

The template parameters are:

Parameters
EThe edge class to use (MSEdge/ROEdge)
VThe vehicle class to use (MSVehicle/ROVehicle)

The router is edge-based. It must know the number of edges for internal reasons and whether a missing connection between two given edges (unbuild route) shall be reported as an error or as a warning.

Definition at line 59 of file CHRouter.h.

Member Typedef Documentation

◆ Meeting

template<class E , class V >
typedef std::pair<const typename SUMOAbstractRouter<E, V>::EdgeInfo*, const typename SUMOAbstractRouter<E, V>::EdgeInfo*> CHRouter< E, V >::Meeting

A meeting point of the two search scopes.

Definition at line 63 of file CHRouter.h.

◆ Operation

template<class E , class V >
typedef double(* SUMOAbstractRouter< E, V >::Operation) (const E *const, const V *const, double)
inherited

Type of the function that is used to retrieve the edge effort.

Definition at line 94 of file SUMOAbstractRouter.h.

Constructor & Destructor Documentation

◆ CHRouter() [1/2]

template<class E , class V >
CHRouter< E, V >::CHRouter ( const std::vector< E * > &  edges,
bool  unbuildIsWarning,
typename SUMOAbstractRouter< E, V >::Operation  operation,
const SUMOVehicleClass  svc,
SUMOTime  weightPeriod,
const bool  havePermissions,
const bool  haveRestrictions 
)
inline

Constructor.

Parameters
[in]validatePermissionsWhether a multi-permission hierarchy shall be built If set to false, the net is pruned in synchronize() and the hierarchy is tailored to the svc

Definition at line 218 of file CHRouter.h.

◆ CHRouter() [2/2]

template<class E , class V >
CHRouter< E, V >::CHRouter ( const std::vector< E * > &  edges,
bool  unbuildIsWarning,
typename SUMOAbstractRouter< E, V >::Operation  operation,
const SUMOVehicleClass  svc,
typename CHBuilder< E, V >::Hierarchy *  hierarchy,
const bool  havePermissions,
const bool  haveRestrictions 
)
inline

Cloning constructor, should be used only for time independent instances which build a hierarchy only once.

Definition at line 235 of file CHRouter.h.

◆ ~CHRouter()

template<class E , class V >
virtual CHRouter< E, V >::~CHRouter ( )
inlinevirtual

Destructor.

Definition at line 251 of file CHRouter.h.

References CHRouter< E, V >::myHierarchy, and CHRouter< E, V >::myHierarchyBuilder.

Member Function Documentation

◆ buildPathFromMeeting()

template<class E , class V >
void CHRouter< E, V >::buildPathFromMeeting ( Meeting  meeting,
std::vector< const E * > &  into 
) const
inline

normal routing methods

Builds the path from marked edges

Definition at line 338 of file CHRouter.h.

References CHRouter< E, V >::getVia().

Referenced by CHRouter< E, V >::compute().

Here is the caller graph for this function:

◆ clone()

◆ compute() [1/2]

template<class E , class V >
virtual bool CHRouter< E, V >::compute ( const E *  from,
const E *  to,
const V *const  vehicle,
SUMOTime  msTime,
std::vector< const E * > &  into,
bool  silent = false 
)
inlinevirtual

◆ compute() [2/2]

template<class E , class V >
bool SUMOAbstractRouter< E, V >::compute ( const E *  from,
double  fromPos,
const E *  to,
double  toPos,
const V *const  vehicle,
SUMOTime  msTime,
std::vector< const E * > &  into,
bool  silent = false 
)
inlineinherited

Builds the route between the given edges using the minimum effort at the given time, also taking into account position along the edges to ensure currect handling of looped routes The definition of the effort depends on the wished routing scheme.

Definition at line 157 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::compute(), and SUMOAbstractRouter< E, V >::computeLooped().

◆ computeLooped()

template<class E , class V >
bool SUMOAbstractRouter< E, V >::computeLooped ( const E *  from,
const E *  to,
const V *const  vehicle,
SUMOTime  msTime,
std::vector< const E * > &  into,
bool  silent = false 
)
inlineinherited

Builds the route between the given edges using the minimum effort at the given time if from == to, return the shortest looped route.

Definition at line 172 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::compute(), MsgHandler::informf(), SUMOAbstractRouter< E, V >::myErrorMsgHandler, SUMOAbstractRouter< E, V >::recomputeCosts(), and SVC_IGNORING.

Referenced by SUMOAbstractRouter< E, V >::compute(), MSBaseVehicle::reroute(), and MSTriggeredRerouter::rerouteParkingArea().

Here is the caller graph for this function:

◆ endQuery()

template<class E , class V >
void SUMOAbstractRouter< E, V >::endQuery ( int  visits)
inlineinherited

Definition at line 279 of file SUMOAbstractRouter.h.

References SysUtils::getCurrentMillis(), SUMOAbstractRouter< E, V >::myQueryStartTime, SUMOAbstractRouter< E, V >::myQueryTimeSum, and SUMOAbstractRouter< E, V >::myQueryVisits.

Referenced by AStarRouter< E, V >::compute(), CHRouter< E, V >::compute(), and DijkstraRouter< E, V >::compute().

Here is the caller graph for this function:

◆ getEffort()

template<class E , class V >
double SUMOAbstractRouter< E, V >::getEffort ( const E *const  e,
const V *const  v,
double  t 
) const
inlineinherited

◆ getTravelTime()

template<class E , class V >
double SUMOAbstractRouter< E, V >::getTravelTime ( const E *const  e,
const V *const  v,
const double  t,
const double  effort 
) const
inlineinherited

Definition at line 207 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::myTTOperation.

Referenced by AStarRouter< E, V >::compute(), DijkstraRouter< E, V >::compute(), SUMOAbstractRouter< E, V >::updateViaCost(), and SUMOAbstractRouter< E, V >::updateViaEdgeCost().

Here is the caller graph for this function:

◆ getType()

template<class E , class V >
const std::string& SUMOAbstractRouter< E, V >::getType ( ) const
inlineinherited

Definition at line 143 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::myType.

◆ getVia()

template<class E , class V >
const E* CHRouter< E, V >::getVia ( const E *  forwardFrom,
const E *  forwardTo 
) const
inlineprivate

Definition at line 373 of file CHRouter.h.

References CHRouter< E, V >::myHierarchy.

Referenced by CHRouter< E, V >::buildPathFromMeeting().

Here is the caller graph for this function:

◆ isProhibited()

template<class E , class V >
bool SUMOAbstractRouter< E, V >::isProhibited ( const E *const  edge,
const V *const  vehicle 
) const
inlineinherited

Definition at line 201 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::myHavePermissions, and SUMOAbstractRouter< E, V >::myHaveRestrictions.

Referenced by SUMOAbstractRouter< E, V >::recomputeCosts().

Here is the caller graph for this function:

◆ prohibit()

template<class E , class V >
virtual void SUMOAbstractRouter< E, V >::prohibit ( const std::vector< E * > &  )
inlinevirtualinherited

Reimplemented in RailwayRouter< E, V >, PedestrianRouter< E, L, N, V >, IntermodalRouter< E, L, N, V >, DijkstraRouter< E, V >, and AStarRouter< E, V >.

Definition at line 205 of file SUMOAbstractRouter.h.

Referenced by IntermodalRouter< E, L, N, V >::prohibit(), and RailwayRouter< E, V >::prohibit().

Here is the caller graph for this function:

◆ recomputeCosts() [1/2]

template<class E , class V >
double SUMOAbstractRouter< E, V >::recomputeCosts ( const std::vector< const E * > &  edges,
const V *const  v,
double  fromPos,
double  toPos,
SUMOTime  msTime,
double *  lengthp = nullptr 
) const
inlineinherited

◆ recomputeCosts() [2/2]

◆ reset()

template<class E , class V >
virtual void CHRouter< E, V >::reset ( const V *const  vehicle)
inlinevirtual

trigger hierarchy rebuild

Reimplemented from SUMOAbstractRouter< E, V >.

Definition at line 270 of file CHRouter.h.

References CHRouter< E, V >::myHierarchy, CHRouter< E, V >::myHierarchyBuilder, CHRouter< E, V >::myValidUntil, and CHRouter< E, V >::myWeightPeriod.

Referenced by CHRouter< E, V >::compute().

Here is the caller graph for this function:

◆ setAutoBulkMode()

template<class E , class V >
void SUMOAbstractRouter< E, V >::setAutoBulkMode ( const bool  mode)
inlineinherited

Definition at line 288 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::myAutoBulkMode.

Referenced by LandmarkLookupTable< E, V >::LandmarkLookupTable().

Here is the caller graph for this function:

◆ setBulkMode()

template<class E , class V >
void SUMOAbstractRouter< E, V >::setBulkMode ( const bool  mode)
inlineinherited

Definition at line 284 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::myBulkMode.

Referenced by ROMAAssignments::incremental().

Here is the caller graph for this function:

◆ startQuery()

template<class E , class V >
void SUMOAbstractRouter< E, V >::startQuery ( )
inlineinherited

Definition at line 274 of file SUMOAbstractRouter.h.

References SysUtils::getCurrentMillis(), SUMOAbstractRouter< E, V >::myNumQueries, and SUMOAbstractRouter< E, V >::myQueryStartTime.

Referenced by AStarRouter< E, V >::compute(), CHRouter< E, V >::compute(), and DijkstraRouter< E, V >::compute().

Here is the caller graph for this function:

◆ updateViaCost()

template<class E , class V >
void SUMOAbstractRouter< E, V >::updateViaCost ( const E *const  prev,
const E *const  e,
const V *const  v,
double &  time,
double &  effort,
double &  length 
) const
inlineinherited

Definition at line 221 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::getEffort(), SUMOAbstractRouter< E, V >::getTravelTime(), and SUMOAbstractRouter< E, V >::updateViaEdgeCost().

Referenced by IntermodalRouter< E, L, N, V >::compute(), and SUMOAbstractRouter< E, V >::recomputeCosts().

Here is the caller graph for this function:

◆ updateViaEdgeCost()

template<class E , class V >
void SUMOAbstractRouter< E, V >::updateViaEdgeCost ( const E *  viaEdge,
const V *const  v,
double &  time,
double &  effort,
double &  length 
) const
inlineinherited

Definition at line 211 of file SUMOAbstractRouter.h.

References SUMOAbstractRouter< E, V >::getEffort(), and SUMOAbstractRouter< E, V >::getTravelTime().

Referenced by AStarRouter< E, V >::compute(), DijkstraRouter< E, V >::compute(), and SUMOAbstractRouter< E, V >::updateViaCost().

Here is the caller graph for this function:

Field Documentation

◆ myAutoBulkMode

template<class E , class V >
bool SUMOAbstractRouter< E, V >::myAutoBulkMode
protectedinherited

whether we are currently trying to detect bulk mode automatically

Definition at line 306 of file SUMOAbstractRouter.h.

Referenced by DijkstraRouter< E, V >::clone(), DijkstraRouter< E, V >::compute(), and SUMOAbstractRouter< E, V >::setAutoBulkMode().

◆ myBackwardSearch

template<class E , class V >
Unidirectional CHRouter< E, V >::myBackwardSearch
private

Definition at line 390 of file CHRouter.h.

Referenced by CHRouter< E, V >::compute().

◆ myBulkMode

template<class E , class V >
bool SUMOAbstractRouter< E, V >::myBulkMode
protectedinherited

whether we are currently operating several route queries in a bulk

Definition at line 303 of file SUMOAbstractRouter.h.

Referenced by AStarRouter< E, V >::compute(), DijkstraRouter< E, V >::compute(), and SUMOAbstractRouter< E, V >::setBulkMode().

◆ myEdges

template<class E , class V >
const std::vector<E*>& CHRouter< E, V >::myEdges
private

all edges with numerical ids

Definition at line 386 of file CHRouter.h.

Referenced by CHRouter< E, V >::clone().

◆ myErrorMsgHandler

◆ myForwardSearch

template<class E , class V >
Unidirectional CHRouter< E, V >::myForwardSearch
private

the unidirectional search queues

Definition at line 389 of file CHRouter.h.

Referenced by CHRouter< E, V >::compute().

◆ myHavePermissions

template<class E , class V >
const bool SUMOAbstractRouter< E, V >::myHavePermissions
protectedinherited

◆ myHaveRestrictions

template<class E , class V >
const bool SUMOAbstractRouter< E, V >::myHaveRestrictions
protectedinherited

◆ myHierarchy

template<class E , class V >
CHBuilder<E, V>::Hierarchy* CHRouter< E, V >::myHierarchy
private

◆ myHierarchyBuilder

template<class E , class V >
CHBuilder<E, V>* CHRouter< E, V >::myHierarchyBuilder
private

◆ myNumQueries

template<class E , class V >
long long int SUMOAbstractRouter< E, V >::myNumQueries
privateinherited

◆ myOperation

template<class E , class V >
Operation SUMOAbstractRouter< E, V >::myOperation
protectedinherited

◆ myProhibited

template<class E , class V >
std::vector<E*> SUMOAbstractRouter< E, V >::myProhibited
protectedinherited

◆ myQueryStartTime

template<class E , class V >
long long int SUMOAbstractRouter< E, V >::myQueryStartTime
privateinherited

the time spent querying in milliseconds

Definition at line 324 of file SUMOAbstractRouter.h.

Referenced by SUMOAbstractRouter< E, V >::endQuery(), and SUMOAbstractRouter< E, V >::startQuery().

◆ myQueryTimeSum

template<class E , class V >
long long int SUMOAbstractRouter< E, V >::myQueryTimeSum
privateinherited

◆ myQueryVisits

template<class E , class V >
long long int SUMOAbstractRouter< E, V >::myQueryVisits
privateinherited

counters for performance logging

Definition at line 321 of file SUMOAbstractRouter.h.

Referenced by SUMOAbstractRouter< E, V >::endQuery(), and SUMOAbstractRouter< E, V >::~SUMOAbstractRouter().

◆ mySVC

template<class E , class V >
const SUMOVehicleClass CHRouter< E, V >::mySVC
private

the permissions for which the hierarchy was constructed

Definition at line 402 of file CHRouter.h.

Referenced by CHRouter< E, V >::clone().

◆ myTTOperation

template<class E , class V >
Operation SUMOAbstractRouter< E, V >::myTTOperation
protectedinherited

The object's operation to perform for travel times.

Definition at line 300 of file SUMOAbstractRouter.h.

Referenced by DijkstraRouter< E, V >::clone(), and SUMOAbstractRouter< E, V >::getTravelTime().

◆ myType

template<class E , class V >
const std::string SUMOAbstractRouter< E, V >::myType
privateinherited

the type of this router

Definition at line 318 of file SUMOAbstractRouter.h.

Referenced by SUMOAbstractRouter< E, V >::getType(), and SUMOAbstractRouter< E, V >::~SUMOAbstractRouter().

◆ myValidUntil

template<class E , class V >
SUMOTime CHRouter< E, V >::myValidUntil
private

the validity duration of the current hierarchy (exclusive)

Definition at line 399 of file CHRouter.h.

Referenced by CHRouter< E, V >::compute(), and CHRouter< E, V >::reset().

◆ myWeightPeriod

template<class E , class V >
const SUMOTime CHRouter< E, V >::myWeightPeriod
private

the validity duration of one weight interval

Definition at line 396 of file CHRouter.h.

Referenced by CHRouter< E, V >::clone(), CHRouter< E, V >::compute(), and CHRouter< E, V >::reset().


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