LabelStar et commencement problème ouvert
Этот коммит содержится в:
родитель
fc04ffa90b
коммит
585e5a1329
3 изменённых файлов: 85 добавлений и 6 удалений
|
|
@ -40,7 +40,7 @@ public class Label implements Comparable<Label> {
|
||||||
return coutRealise;
|
return coutRealise;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getCost() {
|
public double getTotalCost() { //est override dans LabelStar
|
||||||
return coutRealise;
|
return coutRealise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -52,11 +52,11 @@ public class Label implements Comparable<Label> {
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(Label L) {
|
public int compareTo(Label L) {
|
||||||
int retour;
|
int retour;
|
||||||
if (coutRealise == L.getCoutRealise()) {
|
if (coutRealise == L.getTotalCost()) {
|
||||||
retour = 0;
|
retour = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
retour = (int) (coutRealise - L.getCoutRealise());
|
retour = (int) (coutRealise - L.getTotalCost());
|
||||||
}
|
}
|
||||||
return retour;
|
return retour;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,19 @@ package org.insa.graphs.algorithm.shortestpath;
|
||||||
|
|
||||||
import org.insa.graphs.model.Arc;
|
import org.insa.graphs.model.Arc;
|
||||||
import org.insa.graphs.model.Node;
|
import org.insa.graphs.model.Node;
|
||||||
|
import static org.insa.graphs.model.Point.distance;
|
||||||
|
|
||||||
public class LabelStar extends Label {
|
public class LabelStar extends Label {
|
||||||
|
|
||||||
public LabelStar(Node sommetCourant, Boolean marque, double coutRealise, Arc pere) {
|
private Node destination;
|
||||||
|
public LabelStar(Node sommetCourant, Boolean marque, double coutRealise, Arc pere,Node destination) {
|
||||||
super(sommetCourant, marque, coutRealise, pere);
|
super(sommetCourant, marque, coutRealise, pere);
|
||||||
|
this.destination=destination;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getCoutRealise() {
|
@Override
|
||||||
return (getCost()+); // getCost est pareil que coutRealise
|
public double getTotalCost() { //pourquoi CoutRealise ? psq il est utilisé dans le compareTo
|
||||||
|
return (getCoutRealise()+distance(getSommetCourant().getPoint(),this.destination.getPoint()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
// 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%)
|
||||||
|
cette autonomie est considéré en ville à 200km (à 30km/h de moyenne)
|
||||||
|
en mixte elle devient 154 km (47km/h de moyenne) ~3/4 de l'autonmie
|
||||||
|
en autoroute uniquement 102 km (120km/h de moyenne) ~1/2 de l'autonomie
|
||||||
|
|
||||||
|
Problème il y a 20 types de ROADTYPE :
|
||||||
|
|
||||||
|
Routes principales
|
||||||
|
|
||||||
|
MOTORWAY : Autoroute — voie rapide, à accès contrôlé, sans intersections à niveau, souvent interdite aux piétons, cyclistes, etc.
|
||||||
|
|
||||||
|
TRUNK : Route principale (quasi autoroute) — grande route interurbaine importante, parfois à accès limité, avec peu d’intersections.
|
||||||
|
|
||||||
|
PRIMARY : Route nationale — dessert les grandes villes, avec un trafic important, mais moins prioritaire qu'une "trunk".
|
||||||
|
|
||||||
|
SECONDARY : Route secondaire — relie des villes moyennes ou des centres régionaux.
|
||||||
|
|
||||||
|
TERTIARY : Route tertiaire — dessert des petites villes ou relie des routes secondaires.
|
||||||
|
|
||||||
|
Branches ou bretelles
|
||||||
|
|
||||||
|
MOTORWAY_LINK : Bretelle d’accès ou de sortie d’autoroute.
|
||||||
|
|
||||||
|
TRUNK_LINK : Bretelle ou jonction vers une route "trunk".
|
||||||
|
|
||||||
|
PRIMARY_LINK : Bretelle reliant une route "primary".
|
||||||
|
|
||||||
|
SECONDARY_LINK : Bretelle reliant une route "secondary".
|
||||||
|
|
||||||
|
Réseau local
|
||||||
|
|
||||||
|
RESIDENTIAL : Rue résidentielle — dans un quartier d’habitation, circulation modérée.
|
||||||
|
|
||||||
|
UNCLASSIFIED : Petite route rurale ou de desserte locale, souvent utilisée par défaut si la classification est inconnue.
|
||||||
|
|
||||||
|
LIVING_STREET : Rue résidentielle apaisée — priorité aux piétons, vitesse très réduite (zone de rencontre).
|
||||||
|
|
||||||
|
SERVICE : Voie de service — accès à des bâtiments, parkings, zones industrielles ou fermes.
|
||||||
|
|
||||||
|
Autres types de voies
|
||||||
|
|
||||||
|
ROUNDABOUT : Rond-point — configuration de carrefour circulaire, souvent classée selon le type de route qu’elle relie.
|
||||||
|
|
||||||
|
PEDESTRIAN : Rue piétonne — réservée principalement ou exclusivement aux piétons.
|
||||||
|
|
||||||
|
CYCLEWAY : Piste cyclable — voie dédiée aux vélos.
|
||||||
|
|
||||||
|
TRACK : Chemin agricole ou forestier — destiné aux véhicules tout-terrain ou agricoles, pas pour le trafic général.
|
||||||
|
|
||||||
|
COASTLINE : Littoral — ligne représentant la côte, utilisée pour délimiter les terres et les mers (pas une route au sens circulable).
|
||||||
|
|
||||||
|
|
||||||
|
Donc en fonction de chaque roadtype il faudrait définir quelle autnomie nous avons. Par exemple si on fait de l'autoroute, 1km = 2km d'autonomie
|
||||||
|
|
||||||
|
Après avoir fait les ratios pour chaque roadType qu'on peut obtenir dans roadInformation dans chaque Arc parcouru
|
||||||
|
|
||||||
|
getMinimumTravelTime et getLenght*autonomieSurCeRoadType pour l'autonomie qu'on perd pour chaque arc
|
||||||
|
|
||||||
|
=> pour simplifier les choses on va estimer qu'on roule toujours à la vitesse maximale autorisée
|
||||||
|
comme cela on peut avoir le TravelTime avec getTravelTime pour pour le chemin le plus court
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
Загрузка…
Сослаться в новой задаче