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
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
Loading…
Reference in a new issue