à défaut de résoudre les problèmes, ajout de tests A*
This commit is contained in:
parent
65a01d5936
commit
a72387264f
1 changed files with 61 additions and 13 deletions
|
@ -48,26 +48,30 @@ public class DijkstraAlgorithmTest{
|
|||
private static ArcInspector pietime = ArcInspectorFactory.getAllFilters().get(4);
|
||||
|
||||
private static ShortestPathSolution dijkal, dijkcl, dijkat, dijkct, dijkpt, onenodijk, emptydijk, invalidijk;
|
||||
private static ShortestPathSolution bfaal, bfacl, bfaat, bfact, bfapt; //les BF et Dijkstra sur deux lignes différentes par souci de lisibilité
|
||||
private static ShortestPathSolution bfaal, bfacl, bfaat, bfact, bfapt; //les BF, Dijkstra et A* sur trois lignes différentes par souci de lisibilité
|
||||
private static ShortestPathSolution asal, ascl, asat, asct, aspt, asonenod, asempty, asinvalid;
|
||||
|
||||
|
||||
@BeforeClass
|
||||
public static void initAll() throws IOException {
|
||||
|
||||
//gestion des restrictions pour pouvoir créer les Bellman-Ford
|
||||
/*//gestion des restrictions pour pouvoir créer les Bellman-Ford
|
||||
AccessRestrictions voiture, pedestre;
|
||||
AccessRestrictions.AccessRestriction authorise = AccessRestrictions.AccessRestriction.ALLOWED;
|
||||
EnumMap<AccessMode, AccessRestrictions.AccessRestriction> pmap = null, vmap = null;
|
||||
EnumMap<AccessMode, AccessRestrictions.AccessRestriction> pmap, vmap;
|
||||
pmap = null;//dkgfvbwslidfue djeflmmqff^dfomqf^sf652s894fd5swrtwedf+e
|
||||
vmap = new EnumMap<AccessMode, AccessRestrictions.AccessRestriction>();
|
||||
pmap.put(AccessMode.FOOT, authorise);
|
||||
vmap.put(AccessMode.MOTORCAR, authorise);
|
||||
pedestre = new AccessRestrictions(pmap);
|
||||
voiture = new AccessRestrictions(vmap);
|
||||
voiture = new AccessRestrictions(vmap);*/
|
||||
|
||||
RoadInformation speed10 = new RoadInformation(RoadType.MOTORWAY, voiture, false, 36, ""),
|
||||
speed20 = new RoadInformation(RoadType.MOTORWAY, voiture, false, 72, ""),
|
||||
pietonable = new RoadInformation(RoadType.PEDESTRIAN, pedestre, false, 5, "");
|
||||
RoadInformation speed10 = new RoadInformation(RoadType.MOTORWAY, null, false, 36, ""),
|
||||
speed20 = new RoadInformation(RoadType.MOTORWAY, null, false, 72, ""),
|
||||
pietonable = new RoadInformation(RoadType.PEDESTRIAN, null, false, 5, "");
|
||||
//cyclable = new RoadInformation(RoadType.CYCLEWAY, null, false, 20, ""),
|
||||
//toutes les routes ici sont à double sens
|
||||
//attention, les piétons ont une maxspeed définie à 5
|
||||
|
||||
// Create nodes
|
||||
nodes = new Node[8];
|
||||
|
@ -116,9 +120,19 @@ public class DijkstraAlgorithmTest{
|
|||
emptydijk = (new DijkstraAlgorithm(emptydata)).run();//erreur ici
|
||||
//invalidijk = (new DijkstraAlgorithm(invalidata)).run();//et erreur là
|
||||
|
||||
//initialisation des A*
|
||||
asal = (new DijkstraAlgorithm(dataal)).run();
|
||||
ascl = (new DijkstraAlgorithm(datacl)).run();
|
||||
asat = (new DijkstraAlgorithm(dataat)).run();
|
||||
asct = (new DijkstraAlgorithm(datact)).run();
|
||||
//aspt = (new DijkstraAlgorithm(datapt)).run();//erreur ici
|
||||
asonenod = (new DijkstraAlgorithm(onenodata)).run();
|
||||
asempty = (new DijkstraAlgorithm(emptydata)).run();//erreur ici
|
||||
//asinvalid = (new DijkstraAlgorithm(invalidata)).run();//et erreur là
|
||||
|
||||
//initialisation des Bellman-Ford pour comparaison
|
||||
bfaal = (new BellmanFordAlgorithm(dataal)).run();
|
||||
bfacl = (new BellmanFordAlgorithm(datacl)).run();
|
||||
//bfacl = (new BellmanFordAlgorithm(datacl)).run();
|
||||
/*bfaat = (new BellmanFordAlgorithm(dataat)).run();
|
||||
bfact = (new BellmanFordAlgorithm(datact)).run();
|
||||
bfapt = (new BellmanFordAlgorithm(datapt)).run();*/ //erreurs partout ici...
|
||||
|
@ -135,7 +149,7 @@ public class DijkstraAlgorithmTest{
|
|||
-tas valide.)*/
|
||||
|
||||
@Test
|
||||
public void cheminValide() {
|
||||
public void cheminValideD() {
|
||||
assertTrue(dijkal.getPath().isValid());
|
||||
assertTrue(dijkcl.getPath().isValid());
|
||||
assertTrue(dijkat.getPath().isValid());
|
||||
|
@ -147,7 +161,19 @@ public class DijkstraAlgorithmTest{
|
|||
}
|
||||
|
||||
@Test
|
||||
public void faisable() {
|
||||
public void cheminValideA() {
|
||||
assertTrue(asal.getPath().isValid());
|
||||
assertTrue(ascl.getPath().isValid());
|
||||
assertTrue(asat.getPath().isValid());
|
||||
assertTrue(asct.getPath().isValid());
|
||||
//assertTrue(aspt.getPath().isValid());//pas normal
|
||||
assertTrue(asonenod.getPath().isValid());
|
||||
assertTrue(asempty.getPath().isValid());
|
||||
//assertFalse(asinvalid.getPath().isValid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void faisableD() {
|
||||
assertTrue(dijkal.isFeasible());
|
||||
assertTrue(dijkcl.isFeasible());
|
||||
assertTrue(dijkat.isFeasible());
|
||||
|
@ -158,10 +184,21 @@ public class DijkstraAlgorithmTest{
|
|||
//assertFalse(invalidijk.isFeasible());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void faisableA() {
|
||||
assertTrue(asal.isFeasible());
|
||||
assertTrue(ascl.isFeasible());
|
||||
assertTrue(asat.isFeasible());
|
||||
assertTrue(asct.isFeasible());
|
||||
//assertTrue(aspt.isFeasible());
|
||||
assertTrue(asonenod.isFeasible());
|
||||
assertFalse(asempty.isFeasible());
|
||||
//assertFalse(asinvalid.isFeasible());
|
||||
}
|
||||
|
||||
//résultat identique à Bellman-Ford (sur les petits scénarios)
|
||||
@Test
|
||||
public void sameasBF() {
|
||||
public void DsameasBF() {
|
||||
assertTrue(Float.compare(dijkal.getPath().getLength(),bfaal.getPath().getLength())==0);
|
||||
//assertTrue(Float.compare(dijkcl.getPath().getLength(),bfacl.getPath().getLength())==0);
|
||||
//assertTrue(Double.compare(dijkat.getPath().getMinimumTravelTime(),bfaat.getPath().getMinimumTravelTime())==0);
|
||||
|
@ -169,7 +206,16 @@ public class DijkstraAlgorithmTest{
|
|||
//assertTrue(Double.compare(dijkpt.getPath().getMinimumTravelTime(),bfapt.getPath().getMinimumTravelTime())==0);
|
||||
}
|
||||
|
||||
//grands scénarios:
|
||||
@Test
|
||||
public void AsameasBF() {
|
||||
assertTrue(Float.compare(asal.getPath().getLength(),bfaal.getPath().getLength())==0);
|
||||
//assertTrue(Float.compare(ascl.getPath().getLength(),bfacl.getPath().getLength())==0);
|
||||
//assertTrue(Double.compare(asat.getPath().getMinimumTravelTime(),bfaat.getPath().getMinimumTravelTime())==0);
|
||||
//assertTrue(Double.compare(asct.getPath().getMinimumTravelTime(),bfact.getPath().getMinimumTravelTime())==0);
|
||||
//assertTrue(Double.compare(aspt.getPath().getMinimumTravelTime(),bfapt.getPath().getMinimumTravelTime())==0);
|
||||
}
|
||||
|
||||
//grand scénario avec oracle:
|
||||
@Test
|
||||
public void testmap() throws FileNotFoundException, IOException{//A FAIRE
|
||||
|
||||
|
@ -184,8 +230,10 @@ public class DijkstraAlgorithmTest{
|
|||
//quel inspector prendre? Le path est en longueur mais voitures seulement ou tout autorisé?
|
||||
|
||||
DijkstraAlgorithm dijkmap = new DijkstraAlgorithm(new ShortestPathData(graphmap, pathmap.getOrigin(), pathmap.getDestination(), alllen));
|
||||
AStarAlgorithm asmap = new AStarAlgorithm(new ShortestPathData(graphmap, pathmap.getOrigin(), pathmap.getDestination(), alllen));
|
||||
|
||||
assertTrue(dijkmap.run().getPath().getLength()==pathmap.getLength());
|
||||
assertTrue(asmap.run().getPath().getLength()==pathmap.getLength());
|
||||
//comparaison de la longueur
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue