diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java index 8b9a051..7c8f963 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java @@ -110,6 +110,7 @@ public class ArcInspectorFactory { } }; + // Ajout de l'ArcInspector qui évalue les PCC en temps à vélo public static class BicyleByTime implements ArcInspector { static int maxBicycleSpeed = 20; @@ -142,6 +143,7 @@ public class ArcInspectorFactory { } } + // Ajout de l'ArcInspector qui évalue les PCC en distance à vélo public static class BicyleByLength implements ArcInspector { static int maxBicycleSpeed = 20; diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java index d447351..9304620 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java @@ -4,16 +4,25 @@ import org.insa.graphs.model.Node; public class AStarAlgorithm extends DijkstraAlgorithm { + /* + L'algorithme A* est une variante de Dijkstra. + Au lieu de réimplémenter bêtement un algorithme tout entier, nous nous sommes rendu compte que l'on pouvait simplement modifier une fonction createLabel() + et que l'ensemble des itérations restaient les mêmes. Notre classe AStarAlgorithm hérite donc de DijkstraAlgorithm, et on modifie seulement la fonction createLabel(). + */ + public AStarAlgorithm(ShortestPathData data) { super(data); } @Override protected Label createLabel(Node node) { - final LabelStar labelStar = new LabelStar(node); final ShortestPathData data = (ShortestPathData)this.data; + // Création du LabelStar "vide" + final LabelStar labelStar = new LabelStar(node); + + // Contrairement à Dijkstra où on créé juste un Label "vide", ici on doit en plus calculer la distance entre le Node et le départ du chemin. final Double distance = data.getDestination().getPoint().distanceTo(node.getPoint()); // en mètres - + // En fonction de si on fait un PCC en distance ou en temps de trajet, notre heuristique ne sera pas la même switch (data.getMode()) { case LENGTH: labelStar.setCoutEstime(distance); // en mètres diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java index 2c09554..4eea833 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java @@ -22,8 +22,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { protected HashMap labels; // clé-valeur pour retrouver le label associé à un noeud à partir de son id protected BinaryHeap