diff --git a/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp b/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp index 588ca109902ae1de7700bf74ee50cc6cba5967c0..07fbcc0dcc90405aa844ca1dd278508ae5df8e10 100644 --- a/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp +++ b/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp @@ -109,7 +109,7 @@ MultimodalModularHeuristic::insertBestTransitAccessInRoute(const std::vector<Req for(const auto& subreq : accessSubRequestsList) { updateSubRequest(baseRequestId, subreq, isEntry); SAEVRouteChangelist changeList = BestInsertionHeuristic::tryBestRequestInsertionInActiveVehicle( - _route->getEntrySubRequestOrigin(baseRequestId), *_route); + _route->getSubRequestOrigin(baseRequestId, isEntry), *_route); //If we've found an insertion that doesn't create a vehicle, stop there if(changeList.success()) { DEBUG_MMH_MSG("ENTRY CANDIDATE SUCCESS : " + subreq.to_string()); @@ -162,8 +162,13 @@ void MultimodalModularHeuristic::updateSubRequest(size_t requestId, const Reques else _exitSubRequests[requestId] = request; - _route->getEntrySubRequestOrigin(requestId).setRequest(&getSubrequest(requestId, isEntry)); - _route->getEntrySubRequestDestination(requestId).setRequest(&getSubrequest(requestId, isEntry)); + if(isEntry) { + _route->getEntrySubRequestOrigin(requestId).setRequest(&getSubrequest(requestId, isEntry)); + _route->getEntrySubRequestDestination(requestId).setRequest(&getSubrequest(requestId, isEntry)); + } else { + _route->getExitSubRequestOrigin(requestId).setRequest(&getSubrequest(requestId, isEntry)); + _route->getExitSubRequestDestination(requestId).setRequest(&getSubrequest(requestId, isEntry)); + } } const Request& MultimodalModularHeuristic::getSubrequest(size_t requestId, bool isEntry) { diff --git a/src/routes/vehicle/SAEVRoute.cpp b/src/routes/vehicle/SAEVRoute.cpp index 818a394524e942d8cde1357b453215ecd662baef..8b11c80265ec8e381a46545d9429692a442b2696 100644 --- a/src/routes/vehicle/SAEVRoute.cpp +++ b/src/routes/vehicle/SAEVRoute.cpp @@ -565,3 +565,10 @@ SAEVRouteChangelist SAEVRoute::removeRequestWithPropagation(size_t requestId) { return removeRequestWithPropagation(getRequestOrigin(requestId)); } +SAEVKeyPoint &SAEVRoute::getSubRequestOrigin(size_t baseRequestId, bool isEntry) { + if(isEntry) + return getEntrySubRequestOrigin(baseRequestId); + else + return getExitSubRequestOrigin(baseRequestId); +} + diff --git a/src/routes/vehicle/SAEVRoute.h b/src/routes/vehicle/SAEVRoute.h index 39ae4f2d3916798df8209e2dda29636237eef495..78ddd58b35a28ede3ecfbe0316404d5246bd98d4 100644 --- a/src/routes/vehicle/SAEVRoute.h +++ b/src/routes/vehicle/SAEVRoute.h @@ -231,6 +231,8 @@ public: */ std::string to_string(size_t vehicleId); void exportToFile(); + + SAEVKeyPoint &getSubRequestOrigin(size_t baseRequestId, bool isEntry); }; #include "propagation/SAEVRouteChangelist.h"