avancement problème ouvert (notamment création de la classe LabelProblemeOuvert qui rajoute la composante d'autonomie au Label
This commit is contained in:
parent
1beedf814d
commit
7086e32f6e
2 changed files with 43 additions and 2 deletions
|
|
@ -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;
|
||||
}
|
||||
}*/
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
*/
|
||||
Loading…
Reference in a new issue