A* valide long/time

This commit is contained in:
Favary Pierre 2021-05-12 11:00:18 +02:00
parent 3c2d58faec
commit d8fe9068ac
3 changed files with 21 additions and 8 deletions

View file

@ -1,22 +1,41 @@
package org.insa.graphs.algorithm.shortestpath;
import org.insa.graphs.algorithm.AbstractInputData.Mode;
import org.insa.graphs.model.Arc;
import org.insa.graphs.model.Node;
public class AStarAlgorithm extends DijkstraAlgorithm {
private int sineg(int a, int b) {
int retour=a;
if (a<1)
retour=b;
return retour;
}
private int vitessemax=sineg(data.getMaximumSpeed(), data.getGraph().getGraphInformation().getMaximumSpeed());
public AStarAlgorithm(ShortestPathData data) {
super(data);
}
public Label LabelTyped(Node sommet, Arc padre, float prix) {
return new LabelStar(sommet, padre, prix, (float)this.getInputData().getDestination().getPoint().distanceTo(sommet.getPoint()));
float difference=(float)this.getInputData().getDestination().getPoint().distanceTo(sommet.getPoint());
//prend la valeur de la distance à vol d'oiseau
if (data.getMode()==Mode.TIME)
difference=difference/this.vitessemax;
return new LabelStar(sommet, padre, prix, difference);
}
//particularités de A*:
//-comment trouver la distance à vol d'oiseau entre deux nodes?--------node.getpoint().distanceTo()?
//comment avoir (le temps min ou) la vitesse max?
//-comment initialiser le labelstar.estim de chaque node avec cette méthode
//-comment avoir des LabelStar et non des Label

View file

@ -51,7 +51,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
tablabel[x].marque=true;
this.notifyNodeMarked(tablabel[x].sommet_courant);
//System.out.printf("%f\n",tablabel[x].cout);
//System.out.printf("%f\n",tablabel[x].getTotalCost());
//System.out.printf("%d\n",tablabel[x].sommet_courant.getNumberOfSuccessors());
nomark--;
int y;
@ -76,7 +76,6 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
}
}
//penser à gérer le cas "aucun chemin n'existe" (avec l'initialisation par défaut?)
}
}
}
@ -103,7 +102,6 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
//System.out.printf("distance réelle origine-destination (test): %f", (float)this.getInputData().getOrigin().getPoint().distanceTo(this.getInputData().getDestination().getPoint()));
//comparer le coût avec celui de la méthode Path en utilisant equals ou compareTo, mais Dijkstra ne renvoie pas de coût de lui-même, ni ShortestPathSolution?
}
return solution;

View file

@ -25,10 +25,6 @@ public class LabelStar extends Label implements Comparable<Label>{
return this.cout+this.estim;
}
//...
public void setEstimation(Node destination) {
this.estim=(float)destination.getPoint().distanceTo(this.sommet_courant.getPoint());
}
//note: pourquoi l'icône de ce fichier dans eclipse est-elle un peu différente?
}