avancement problème ouvert (notamment création de la classe LabelProblemeOuvert qui rajoute la composante d'autonomie au Label

This commit is contained in:
Matteo Sabben 2025-05-18 16:48:27 +02:00
parent 1beedf814d
commit 7086e32f6e
2 changed files with 43 additions and 2 deletions

View file

@ -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;
}
}*/

View file

@ -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 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 ! //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 => va falloir prévilégier l'autoroute ? Ce sera fait implicitement :
c'est donc l'option la plus rapide pour le temps
.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 <'... 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 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;
}
*/ */