55 #include <mesosim/MELoop.h>
56 #include <mesosim/MESegment.h>
59 #ifdef CHECK_MEMORY_LEAKS
61 #endif // CHECK_MEMORY_LEAKS
76 const std::vector<MSEdge*> &edges,
77 SUMOReal prob,
const std::string& file,
bool off)
79 myProbability(prob), myUserProbability(prob), myAmInUserMode(false) {
85 for (std::vector<MSEdge*>::const_iterator j = edges.begin(); j != edges.end(); ++j) {
88 MESegment* s = MSGlobals::gMesoNet->getSegmentForEdge(**j);
93 const std::vector<MSLane*> &destLanes = (*j)->getLanes();
94 for (std::vector<MSLane*>::const_iterator i = destLanes.begin(); i != destLanes.end(); ++i) {
95 (*i)->addMoveReminder(
this);
127 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": No destination edge id given.");
131 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": Destination edge '" + dest +
"' is not known.");
140 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": Attribute 'probability' for destination '" + dest +
"' is negative (must not).");
153 if (closed_id ==
"") {
154 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": closed edge id given.");
158 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": Edge '" + closed_id +
"' to close is not known.");
171 if (routeStr ==
"") {
176 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": Route '" + routeStr +
"' does not exist.");
186 throw ProcessError(
"MSTriggeredRerouter " +
getID() +
": Attribute 'probability' for route '" + routeStr +
"' is negative (must not).");
216 std::vector<RerouteInterval>::const_iterator i =
myIntervals.begin();
219 if ((*i).begin <= time && (*i).end >= time) {
220 if ((*i).edgeProbs.getOverallProb() != 0 || (*i).routeProbs.getOverallProb() != 0 || route.
containsAnyOf((*i).closed)) {
232 std::vector<RerouteInterval>::const_iterator i =
myIntervals.begin();
234 if ((*i).begin <= time && (*i).end >= time) {
235 if ((*i).edgeProbs.getOverallProb() != 0 || (*i).routeProbs.getOverallProb() != 0 || (*i).closed.size() != 0) {
247 std::vector<RerouteInterval>::const_iterator i =
myIntervals.begin();
250 if ((*i).begin <= time && (*i).end >= time) {
251 if ((*i).edgeProbs.getOverallProb() != 0 || (*i).routeProbs.getOverallProb() != 0 || route.
containsAnyOf((*i).closed)) {
263 std::vector<RerouteInterval>::const_iterator i =
myIntervals.begin();
265 if ((*i).edgeProbs.getOverallProb() != 0 || (*i).routeProbs.getOverallProb() != 0 || (*i).closed.size() != 0) {
312 router.prohibit(rerouteDef.
closed);
313 std::vector<const MSEdge*> edges;
315 veh.replaceRouteEdges(edges);