From cbca50bdd79be5f16fdea4f62a4e37ab3adbcdb4 Mon Sep 17 00:00:00 2001 From: Thior Youssouf-Ben-Abdallah Date: Sun, 13 Apr 2025 16:00:51 +0200 Subject: [PATCH] implementation createfastestPathFromNodes() --- .../main/java/org/insa/graphs/model/Path.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java index 73d364c..84ad626 100644 --- a/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java +++ b/be-graphes-model/src/main/java/org/insa/graphs/model/Path.java @@ -31,12 +31,36 @@ public class Path { throws IllegalArgumentException { List arcs = new ArrayList(); - for(Node node : nodes) + if(nodes.size() == 1) { - for( Arc arc : node.getSuccessors()) + return new Path(graph, nodes.get(0)); + } + + for(int i = 0; i < nodes.size() - 1;i++) + { + Node origin = nodes.get(i); + Node destination = nodes.get(i+1); + + List successors = origin.getSuccessors(); + Arc bestArc = null; + float speedMin = Float.MAX_VALUE; + for(Arc successor : successors) { - + double timeSuccessor = successor.getMinimumTravelTime(); + if(successor.getDestination().equals(destination)) + { + if (timeSuccessor < speedMin) + { + bestArc = successor; + speedMin = successor.getLength(); + } + } } + if (bestArc == null) + { + throw new IllegalArgumentException("No arc from " + origin.getId()+ "to " + destination.getId()); + } + arcs.add(bestArc); }