23 #ifndef AStarRouterTT_h
24 #define AStarRouterTT_h
68 template<
class E,
class V,
class PF>
78 for (
size_t i = 0; i < noE; i++) {
95 edge(E::dictionary(id)),
134 return nod1->
edge->getNumericalID() > nod2->
edge->getNumericalID();
149 for (
typename std::vector<EdgeInfo*>::iterator i =
myFound.begin(); i !=
myFound.end(); i++) {
157 virtual void compute(
const E* from,
const E* to,
const V*
const vehicle,
158 SUMOTime msTime, std::vector<const E*>& into) {
159 assert(from != 0 && to != 0);
164 EdgeInfo*
const fromInfo = &(
myEdgeInfos[from->getNumericalID()]);
165 fromInfo->traveltime = 0;
174 const E*
const minEdge = minimumInfo->edge;
177 myFound.push_back(minimumInfo);
186 minimumInfo->visited =
true;
187 const SUMOReal traveltime = minimumInfo->traveltime +
getEffort(minEdge, vehicle, time + minimumInfo->traveltime);
190 const unsigned int length_size = minEdge->getNoFollowing();
191 for (i = 0; i < length_size; i++) {
192 const E*
const follower = minEdge->getFollower(i);
193 EdgeInfo*
const followerInfo = &(
myEdgeInfos[follower->getNumericalID()]);
195 if (PF::operator()(follower, vehicle)) {
198 const SUMOReal oldEffort = followerInfo->traveltime;
199 if (!followerInfo->visited && traveltime < oldEffort) {
201 const SUMOReal heuristic_remaining = minEdge->getDistanceTo(to) / vehicle->getMaxSpeed();
202 followerInfo->traveltime = traveltime;
203 followerInfo->heuristicTime = traveltime + heuristic_remaining;
204 followerInfo->prev = minimumInfo;
224 for (
typename std::vector<const E*>::const_iterator i = edges.begin(); i != edges.end(); ++i) {
225 if (PF::operator()(*i, v)) {
236 std::deque<const E*> tmp;
237 while (rbegin != 0) {
238 tmp.push_front((E*) rbegin->edge);
239 rbegin = rbegin->prev;
241 std::copy(tmp.begin(), tmp.end(), std::back_inserter(edges));
261 template<
class E,
class V,
class PF>
281 template<
class E,
class V,
class PF>