From 57eed9e3862be671d211442c4305c1a4352c1827 Mon Sep 17 00:00:00 2001
From: Romain BERNARD <romain.bernard@uca.fr>
Date: Thu, 12 Sep 2024 18:41:59 +0200
Subject: [PATCH] add isEntryFulfilled method TODO: handle diverse
 fail/unfulfilled cases wrt list size, isEntry etc

---
 src/algorithm/DARP/Heuristics/BestInsertionHeuristic.cpp    | 2 +-
 .../Multimodal/Heuristics/SimpleModularHeuristic.cpp        | 6 +++++-
 .../Multimodal/Heuristics/SimpleModularHeuristic.h          | 2 ++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/algorithm/DARP/Heuristics/BestInsertionHeuristic.cpp b/src/algorithm/DARP/Heuristics/BestInsertionHeuristic.cpp
index 378bf99..c067ef8 100644
--- a/src/algorithm/DARP/Heuristics/BestInsertionHeuristic.cpp
+++ b/src/algorithm/DARP/Heuristics/BestInsertionHeuristic.cpp
@@ -43,7 +43,7 @@ size_t BestInsertionHeuristic::doBestRequestInsertionForRoute(SAEVKeyPoint &requ
     size_t vehicleId = 0;
     bool insertionSuccess{false};
     //Iteratively try inserting in every active vehicle and the first inactive vehicle
-    do {
+    do { //TODO: improve this to mutualize best insertions amongst best vehicles ?
         insertionSuccess = tryVehicleBestInsertion(requestKp, vehicleId, route).success();
     } while(!insertionSuccess && ++vehicleId <= route.getLastActiveVehicleId() + 1);
 
diff --git a/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.cpp b/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.cpp
index b7a3468..e42e56f 100644
--- a/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.cpp
+++ b/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.cpp
@@ -127,7 +127,7 @@ SimpleModularHeuristic::insertBestTransitAccessInRoute(const std::vector<Request
         //If no active vehicle insertion worked, do best insertion on a new vehicle with the first subrequest (supposedly it's the most advantageous)
         DEBUG_MSG("CREATE VEHICLE");
         updateSubRequest(baseRequestId, accessSubRequestsList[0], isEntry);
-        _route->insertRequestInNewVehicle(_route->getEntrySubRequestOrigin(baseRequestId));
+        _route->insertRequestInNewVehicle(_route->getExitSubRequestOrigin(baseRequestId));
     }
 
     return getSubrequest(baseRequestId, isEntry);
@@ -259,3 +259,7 @@ const std::vector<bool> &SimpleModularHeuristic::getUnfulfilledTransitExit() con
 const std::vector<bool> &SimpleModularHeuristic::getUnfulfilledTransitEntry() const {
     return _unfulfilledTransitEntry;
 }
+
+bool SimpleModularHeuristic::isEntryFulfilled(size_t baseRequestId) {
+    return !_unfulfilledTransitEntry[baseRequestId];
+}
diff --git a/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.h b/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.h
index 57848ad..e06ec5b 100644
--- a/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.h
+++ b/src/algorithm/Multimodal/Heuristics/SimpleModularHeuristic.h
@@ -178,6 +178,8 @@ protected:
                                uint transitExitTimestamp) const;
 
     void updateUnfulfilledSubrequest(size_t baseRequestId, bool isEntry, bool value);
+
+    bool isEntryFulfilled(size_t baseRequestId);
 };
 
 
-- 
GitLab