diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/problemeOuvert.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraProblemeOuvert.java similarity index 63% rename from be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/problemeOuvert.java rename to be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraProblemeOuvert.java index 91de00c..0658cce 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/problemeOuvert.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraProblemeOuvert.java @@ -1,4 +1,4 @@ -// ce fichier n'est qu'en pseudo code + /* je considère que les 200km d'autonomie atteint (200km avec le 22 kWh - Q90 Renault ZOE chargé à 90%) @@ -64,12 +64,45 @@ Autres types de voies et nous n'avons pas besoin d'associer une vitesse à chaque roadtype, juste une perte d'autonomie //Rappel les bornes de recharges ne sont que sur les autoroutes ! - => va falloir prévilégier l'autoroute ? on va plus vite et on recharge seulement en 2mn - c'est donc l'option la plus rapide pour le temps + => va falloir prévilégier l'autoroute ? Ce sera fait implicitement : + + .Pour le temps : Comme on suppose rouler à la vitesse maximale autorisée, et que les autoroutes ont les vitesses les plus élevées, getMinimumTravelTime() + sera naturellement plus bas pour les arcs d'autoroute, les favorisant si l'objectif est le temps. + + .Pour la recharge : Le fait que les recharges ne soient possibles que sur les autoroutes rendra leur utilisation nécessaire pour les longs trajets. + L'algorithme, en explorant les états (y compris ceux après recharge), déterminera si un détour par une autoroute pour recharger et ensuite continuer + (potentiellement plus vite) est la meilleure solution globale. concrètement dans le Dijkstra il va falloir rajouter une composante. Après le if 'newCost <'... il faut vérifier que l'autonomie est correcte + La condition de mise à jour d'un label prend en compte le coût ET l'autonomie restante (à coût égal, plus d'autonomie c'est mieux) + + Aux nœuds d'autoroute, on offre la possibilité de "recharger", ce qui crée une nouvelle option (un nouveau label avec batterie pleine et coût de recharge + ajouté) pour ce même nœud, à insérer dans le tas. + + labels[data.getOrigin().getId()] = new LabelBattery(data.getOrigin(), false, 0, null, MAX_AUTONOMY); pour l'initialisation + + + //permet de savoir si un node est un noeud d'autoroute + private boolean isHighwayNode(Node node) { + // Un nœud est sur une autoroute si au moins un de ses arcs entrants ou sortants est une autoroute. + // RoadType est accessible via arc.getRoadInfo().getType() + for (Arc arc : node.getSuccessors()) { + if (arc.getRoadInfo().getType().equals(RoadType.MOTORWAY)) { + return true; + } + } + return false; +} + +normalement juste faut faire le verif de newcost avec l'autonomie + +avoir une option chemin impossible (trop éloigné des stations de recharges) -*/ \ No newline at end of file +gérer le problème de la recharge, quand la faire ? + +*/ + + diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelProblemeOuvert b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelProblemeOuvert new file mode 100644 index 0000000..3478429 --- /dev/null +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelProblemeOuvert @@ -0,0 +1,16 @@ +/*public class LabelProblemeOuvert extends Label { + private double autonomieRestante; + + public LabelProblemeOuvert(Node sommet, boolean marque, double cout, Arc pere, double autonomieRestante) { + super(sommet, marque, cout, pere); + this.autonomieRestante = autonomieRestante; + } + + public double getAutonomieRestante() { + return autonomieRestante; + } + + public void setAutonomieRestante(double autonomieRestante) { + this.autonomieRestante = autonomieRestante; + } +}*/ diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java index 2107f1c..f5722ab 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java @@ -1,4 +1,4 @@ -/* package org.insa.graphs.algorithm.shortestpath; +/*package org.insa.graphs.algorithm.shortestpath; import org.insa.graphs.model.Arc; import org.insa.graphs.model.Node; @@ -9,7 +9,7 @@ public class LabelStar extends Label { private Node destination; public LabelStar(Node sommetCourant, Boolean marque, double coutRealise, Arc pere,Node destination) { super(sommetCourant, marque, coutRealise, pere); - this.destination=destination; + this.destination=destination; //ou alors on le met juste en paramètre } @Override @@ -17,5 +17,5 @@ public class LabelStar extends Label { return (getCoutRealise()+distance(getSommetCourant().getPoint(),this.destination.getPoint())); } -} - */ \ No newline at end of file +}*/ + \ No newline at end of file