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,
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(
int numericalID,
const _IntermodalEdge* inEdge,
const _IntermodalEdge* outEdge,
193 _IntermodalEdge(inEdge->
getID() +
":" + outEdge->
getID(), numericalID, outEdge->
getEdge(),
"!access"),
194 myTransferTime(transferTime) { }
197 return myTransferTime;
CarEdge(int numericalID, const E *edge, const SUMOReal pos=-1.)
StopEdge(const std::string id, int numericalID, const E *edge)
void addSchedule(const SUMOTime begin, const SUMOTime end, const SUMOTime period, const SUMOReal travelTimeSec)
bool prohibits(const IntermodalTrip< E, N, V > *const trip) const
const std::vector< _IntermodalEdge * > & getSuccessors(SUMOVehicleClass vClass) const
Schedule(const SUMOTime _begin, const SUMOTime _end, const SUMOTime _period, const SUMOReal _travelTimeSec)
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
bool includeInRoute(bool) const
IntermodalEdge & operator=(const IntermodalEdge &src)
Invalidated assignment operator.
IntermodalEdge< E, L, N, V > _IntermodalEdge
SUMOReal getTravelTime(const IntermodalTrip< E, N, V > *const trip, SUMOReal time) const
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.
const IntermodalEdge< E, L, N, V > * getEntryStop() const
const std::string & getID() const
Returns the id.
SUMOReal getLength() const
bool prohibits(const IntermodalTrip< E, N, V > *const trip) const
const IntermodalEdge< E, L, N, V > *const myEntryStop
const E * getEdge() const
std::multimap< SUMOReal, Schedule > mySchedules
std::map< SUMOVehicleClass, std::vector< _IntermodalEdge * > > myClassesSuccessorMap
The successors available for a given vClass.
const SVCPermissions modeSet
IntermodalEdge< E, L, N, V > _IntermodalEdge
bool includeInRoute(bool) const
the "vehicle" type that is given to the internal router (SUMOAbstractRouter)
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
AccessEdge(int numericalID, const _IntermodalEdge *inEdge, const _IntermodalEdge *outEdge, const SUMOReal transferTime=NUMERICAL_EPS)
the base edge type that is given to the internal router (SUMOAbstractRouter)
const SUMOReal travelTimeSec
PublicTransportEdge(const std::string id, int numericalID, const IntermodalEdge< E, L, N, V > *entryStop, const E *endEdge, const std::string &line)
const SUMOReal arrivalPos
const SUMOReal myTransferTime
SUMOReal getTravelTime(const IntermodalTrip< E, N, V > *const, SUMOReal time) const
the public transport edge type connecting the stop edges
bool includeInRoute(bool) const
const SUMOReal myStartPos
the starting position for split edges
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) ...
SUMOReal getTravelTime(const IntermodalTrip< E, N, V > *const, SUMOReal) const