diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java index 365a856..2b5aff6 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java @@ -3,7 +3,7 @@ import org.insa.graphs.algorithm.AbstractSolution.Status; import org.insa.graphs.algorithm.utils.BinaryHeap; import org.insa.graphs.model.Arc; - import org.insa.graphs.model.Node; +import org.insa.graphs.model.Node; import org.insa.graphs.model.Path; import java.util.ArrayList; import java.util.Collections;//trier tout ça @@ -35,7 +35,7 @@ ShortestPathSolution solution = new ShortestPathSolution(data,Status.UNKNOWN);//modifié if (data.getDestination()==null || data.getOrigin()==null) { - solution= new ShortestPathSolution(data, Status.INFEASIBLE, new Path(null)); + solution= new ShortestPathSolution(data, Status.INFEASIBLE, new Path(data.getGraph())); }else { //initialisation @@ -95,7 +95,7 @@ } if (!arrive) { - solution= new ShortestPathSolution(data,Status.INFEASIBLE); + solution= new ShortestPathSolution(data,Status.INFEASIBLE, new Path(data.getGraph())); }else { this.notifyDestinationReached(data.getDestination()); diff --git a/be-graphes-algos/src/test/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm_et_AStarTest.java b/be-graphes-algos/src/test/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm_et_AStarTest.java index 723ee30..a8878a0 100644 --- a/be-graphes-algos/src/test/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm_et_AStarTest.java +++ b/be-graphes-algos/src/test/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm_et_AStarTest.java @@ -125,7 +125,6 @@ public class DijkstraAlgorithm_et_AStarTest{ onenodijk = (new DijkstraAlgorithm(onenodata)).run(); emptydijk = (new DijkstraAlgorithm(emptydata)).run(); invalidijk = (new DijkstraAlgorithm(invalidata)).run(); - System.out.print(invalidijk.toString());//----------------------hey, look here //initialisation des A* asal = (new DijkstraAlgorithm(dataal)).run(); @@ -165,8 +164,8 @@ public class DijkstraAlgorithm_et_AStarTest{ assertTrue(dijkpt.getPath().isValid()); assertTrue(onenodijk.getPath().isValid()); assertTrue(emptydijk.getPath().isValid()); - assertFalse(invalidijk.getPath().isValid()); - } + assertTrue(invalidijk.getPath().isValid()); + }//note: invalidata ne peut pas trouver de chemin et contient ainsi un path null, donc valide @Test public void cheminValideA() { @@ -177,7 +176,7 @@ public class DijkstraAlgorithm_et_AStarTest{ assertTrue(aspt.getPath().isValid()); assertTrue(asonenod.getPath().isValid()); assertTrue(asempty.getPath().isValid()); - assertFalse(asinvalid.getPath().isValid()); + assertTrue(asinvalid.getPath().isValid()); } @Test @@ -225,7 +224,7 @@ public class DijkstraAlgorithm_et_AStarTest{ //grand scénario avec oracle: @Test - public void testmap() throws FileNotFoundException, IOException{//A FAIRE + public void testMap() throws FileNotFoundException, IOException{//A FAIRE String mapaddr = "/home/favary/Bureau/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Maps/haute-garonne.mapgr"; String pathaddr ="/home/favary/Bureau/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Paths/path_fr31_insa_aeroport_length.path"; @@ -244,23 +243,27 @@ public class DijkstraAlgorithm_et_AStarTest{ //comparaison de la longueur } - //TODO: sans oracle + //long car la map bretagne (sans oracle possible) est assez importante @Test public void testMapNoOracle() throws FileNotFoundException, IOException{//A FAIRE - /*String mapaddr = "/home/favary/Bureau/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Maps/bretagne.mapgr"; + String mapaddr = "/home/favary/Bureau/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Maps/bretagne.mapgr"; GraphReader graphread = new BinaryGraphReader(new DataInputStream(new BufferedInputStream(new FileInputStream(mapaddr)))); Graph graphmap = graphread.read(); - Node Origine = null; - Node Destination = null;//ces trois lignes à faire! - Path pathmap = Path.createShortestPathFromNodes(graphmap, null); + Node Origine = graphmap.getNodes().get(100000);//Brest + Node Destination = graphmap.getNodes().get(6000);//Rennes + + //sans possibilité d'utiliser un pathmap, on fait une estimation arbitrairement basée sur la distance réelle + float estimation=1.2f*(float) (Origine.getPoint().distanceTo(Destination.getPoint())); + //1.2 très arbitraire, choisi car entre 1 (absurde) et sqrt(2) + //ne peut pas être adapté à tous les trajets, mais ici le graphe est assez couvrant et le trajet assez long DijkstraAlgorithm dijkmap = new DijkstraAlgorithm(new ShortestPathData(graphmap, Origine, Destination, carlen)); AStarAlgorithm asmap = new AStarAlgorithm(new ShortestPathData(graphmap, Origine, Destination, carlen)); - assertTrue(dijkmap.run().getPath().getLength()<=pathmap.getLength()); - assertTrue(asmap.run().getPath().getLength()<=pathmap.getLength()); - //comparaison de la longueur */ + assertTrue(dijkmap.run().getPath().getLength()