A* valide long/time
This commit is contained in:
parent
3c2d58faec
commit
d8fe9068ac
3 changed files with 21 additions and 8 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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?
|
||||
}
|
Loading…
Reference in a new issue