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..38fae38 --- /dev/null +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelProblemeOuvert @@ -0,0 +1,17 @@ +/* +public class LabelBattery extends Label { + private double autonomieRestante; + + public LabelBattery(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/problemeOuvert.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/problemeOuvert.java index 91de00c..752db69 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/problemeOuvert.java @@ -64,12 +64,36 @@ 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; +} */ \ No newline at end of file