From 1a2ed9419f523b94a0c94f2317c95b90e282c131 Mon Sep 17 00:00:00 2001 From: Romain BERNARD <romain.bernard@uca.fr> Date: Wed, 19 Jun 2024 18:18:41 +0200 Subject: [PATCH] fix weight update (use of mixed reference/pointer caused unexpected affectations) --- src/routes/vehicle/SAEVRoute.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/routes/vehicle/SAEVRoute.cpp b/src/routes/vehicle/SAEVRoute.cpp index 9b6a764..a447646 100644 --- a/src/routes/vehicle/SAEVRoute.cpp +++ b/src/routes/vehicle/SAEVRoute.cpp @@ -399,24 +399,24 @@ BestInsertionQueue SAEVRoute::getBestInsertionsQueue(size_t requestId, size_t ve } void SAEVRoute::addRequestWeightToRoute(size_t requestId) { - SAEVKeyPoint& currentKP = getOrigin(requestId); - int requestWeight = currentKP.getRequest()->getWeight(); - currentKP.setCurrentOccupation(currentKP.getPredecessor()->getCurrentOccupation() + requestWeight); //O.Weight = Prec(O).Weight + R.Weight (request enters the vehicle=) + SAEVKeyPoint* currentKP = &getOrigin(requestId); + int requestWeight = currentKP->getRequest()->getWeight(); + currentKP->setCurrentOccupation(currentKP->getPredecessor()->getCurrentOccupation() + requestWeight); //O.Weight = Prec(O).Weight + R.Weight (request enters the vehicle=) do { - currentKP = *currentKP.getSuccessor(); - currentKP.setCurrentOccupation(currentKP.getCurrentOccupation() + requestWeight); - } while (currentKP != getDestination(requestId)); - currentKP.setCurrentOccupation(currentKP.getPredecessor()->getCurrentOccupation() - requestWeight); //D.Weight = Prec(D).Weight - R.Weight (request leaves the vehicle) + currentKP = currentKP->getSuccessor(); + currentKP->setCurrentOccupation(currentKP->getCurrentOccupation() + requestWeight); + } while (currentKP != &getDestination(requestId)); + currentKP->setCurrentOccupation(currentKP->getPredecessor()->getCurrentOccupation() - requestWeight); //D.Weight = Prec(D).Weight - R.Weight (request leaves the vehicle) } void SAEVRoute::removeRequestWeightFromRoute(size_t requestId) { - SAEVKeyPoint& currentKP = getOrigin(requestId); - int requestWeight = currentKP.getRequest()->getWeight(); - currentKP.setCurrentOccupation(0); //reset request weight on origin KP + SAEVKeyPoint* currentKP = &getOrigin(requestId); + int requestWeight = currentKP->getRequest()->getWeight(); + currentKP->setCurrentOccupation(0); //reset request weight on origin KP do { - currentKP = *currentKP.getSuccessor(); - currentKP.setCurrentOccupation(currentKP.getCurrentOccupation() - requestWeight); - } while (currentKP != getDestination(requestId)); - currentKP.setCurrentOccupation(0); //reset request weight on destination KP + currentKP = currentKP->getSuccessor(); + currentKP->setCurrentOccupation(currentKP->getCurrentOccupation() - requestWeight); + } while (currentKP != &getDestination(requestId)); + currentKP->setCurrentOccupation(0); //reset request weight on destination KP } -- GitLab