43 template<
class E,
class L,
class N,
class V>
50 _IntermodalEdge(edge->
getID() +
"_car" +
toString(pos), numericalID, edge,
"!car"),
62 FXMutexLock locker(myLock);
64 typename std::map<SUMOVehicleClass, std::vector<_IntermodalEdge*> >::const_iterator i =
myClassesSuccessorMap.find(vClass);
70 const std::set<const E*> classedCarFollowers = std::set<const E*>(this->
getEdge()->getSuccessors(vClass).begin(), this->
getEdge()->getSuccessors(vClass).end());
72 if (!(*e)->includeInRoute(
true) || (*e)->getEdge() == this->
getEdge() || classedCarFollowers.count((*e)->getEdge()) > 0) {
96 return travelTime * distTravelled / this->
getEdge()->getLength();
107 mutable FXMutex myLock;
114 template<
class E,
class L,
class N,
class V>
117 StopEdge(
const std::string
id,
unsigned int numericalID,
const E* edge) :
131 template<
class E,
class L,
class N,
class V>
136 : begin(_begin), end(_end), period(_period), travelTimeSec(_travelTimeSec) {}
148 IntermodalEdge<E, L, N, V>(line +
":" + (id !=
"" ? id : endEdge->
getID()), numericalID, endEdge, line), myEntryStop(entryStop) { }
159 mySchedules.insert(std::make_pair(
STEPS2TIME(begin),
Schedule(begin, end, period, travelTimeSec)));
164 for (
typename std::multimap<SUMOReal, Schedule>::const_iterator it = mySchedules.begin(); it != mySchedules.end(); ++it) {
165 if (it->first > minArrivalSec) {
170 const SUMOTime nextDepart = it->second.begin + running * it->second.period;
171 minArrivalSec =
MIN2(
STEPS2TIME(nextDepart) + it->second.travelTimeSec, minArrivalSec);
174 return minArrivalSec - time;
185 template<
class E,
class L,
class N,
class V>
191 AccessEdge(
unsigned int numericalID,
const _IntermodalEdge* inEdge,
const _IntermodalEdge* outEdge,
193 _IntermodalEdge(inEdge->
getID() +
":" + outEdge->
getID(), numericalID, outEdge->
getEdge(),
"!access"),
194 myTransferTime(transferTime) { }
197 return myTransferTime;
SUMOReal getLength() const
bool prohibits(const IntermodalTrip< E, N, V > *const trip) const
void addSchedule(const SUMOTime begin, const SUMOTime end, const SUMOTime period, const SUMOReal travelTimeSec)
PublicTransportEdge(const std::string id, unsigned int numericalID, const IntermodalEdge< E, L, N, V > *entryStop, const E *endEdge, const std::string &line)
Schedule(const SUMOTime _begin, const SUMOTime _end, const SUMOTime _period, const SUMOReal _travelTimeSec)
StopEdge(const std::string id, unsigned int numericalID, const E *edge)
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
SUMOReal getTravelTime(const IntermodalTrip< E, N, V > *const , SUMOReal time) const
IntermodalEdge & operator=(const IntermodalEdge &src)
Invalidated assignment operator.
IntermodalEdge< E, L, N, V > _IntermodalEdge
the car edge type that is given to the internal router (SUMOAbstractRouter)
std::vector< IntermodalEdge * > myFollowingEdges
List of edges that may be approached from this edge.
bool includeInRoute(bool) const
const IntermodalEdge< E, L, N, V > *const myEntryStop
bool prohibits(const IntermodalTrip< E, N, V > *const trip) const
std::multimap< SUMOReal, Schedule > mySchedules
const std::string & getID() const
Returns the id.
std::map< SUMOVehicleClass, std::vector< _IntermodalEdge * > > myClassesSuccessorMap
The successors available for a given vClass.
const SVCPermissions modeSet
IntermodalEdge< E, L, N, V > _IntermodalEdge
const std::vector< _IntermodalEdge * > & getSuccessors(SUMOVehicleClass vClass) const
the "vehicle" type that is given to the internal router (SUMOAbstractRouter)
bool includeInRoute(bool) const
CarEdge(unsigned int numericalID, const E *edge, const SUMOReal pos=-1.)
const E * getEdge() const
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
the base edge type that is given to the internal router (SUMOAbstractRouter)
AccessEdge(unsigned int numericalID, const _IntermodalEdge *inEdge, const _IntermodalEdge *outEdge, const SUMOReal transferTime=NUMERICAL_EPS)
const SUMOReal travelTimeSec
const SUMOReal arrivalPos
const SUMOReal myTransferTime
the public transport edge type connecting the stop edges
SUMOReal getTravelTime(const IntermodalTrip< E, N, V > *const trip, SUMOReal time) const
const SUMOReal myStartPos
the starting position for split edges
const IntermodalEdge< E, L, N, V > * getEntryStop() const
SUMOReal getTravelTime(const IntermodalTrip< E, N, V > *const , SUMOReal) const
bool includeInRoute(bool) const
the stop edge type representing bus and train stops
vehicles ignoring classes
the access edge connecting diferent modes that is given to the internal router (SUMOAbstractRouter) ...