From 946d2a6928192835840a795d7f6389f4578f9fab Mon Sep 17 00:00:00 2001 From: Romain BERNARD <romain.bernard@uca.fr> Date: Thu, 19 Sep 2024 19:24:34 +0200 Subject: [PATCH] fix cases where isEntry wasn't used to differentiate transit entry/exit --- .../Heuristics/MultimodalModularHeuristic.cpp | 11 ++++++++--- src/routes/vehicle/SAEVRoute.cpp | 7 +++++++ src/routes/vehicle/SAEVRoute.h | 2 ++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp b/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp index 588ca10..07fbcc0 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 818a394..8b11c80 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 39ae4f2..78ddd58 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" -- GitLab