test Astar, vfinale
This commit is contained in:
parent
738b944cdf
commit
d1a0096430
2 changed files with 146 additions and 2 deletions
|
@ -0,0 +1,144 @@
|
|||
package org.insa.graphs.algorithm.utils;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.FileInputStream;
|
||||
import org.insa.graphs.algorithm.ArcInspectorFactory;
|
||||
import org.insa.graphs.algorithm.AbstractSolution.Status;
|
||||
import org.insa.graphs.algorithm.shortestpath.DijkstraAlgorithm;
|
||||
import org.insa.graphs.algorithm.shortestpath.AStarAlgorithm;
|
||||
import org.insa.graphs.algorithm.shortestpath.BellmanFordAlgorithm;
|
||||
import org.insa.graphs.algorithm.shortestpath.ShortestPathData;
|
||||
import org.insa.graphs.algorithm.shortestpath.ShortestPathSolution;
|
||||
import org.insa.graphs.model.Graph;
|
||||
import org.insa.graphs.model.Node;
|
||||
import org.insa.graphs.model.io.BinaryGraphReader;
|
||||
import org.insa.graphs.model.io.GraphReader;
|
||||
import java.io.IOException;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class AstarTest{
|
||||
|
||||
private static ShortestPathSolution solBellman1;
|
||||
private static ShortestPathSolution solDijkstra1;
|
||||
private static ShortestPathSolution solAstar1;
|
||||
|
||||
private static ShortestPathSolution solBellman1p;
|
||||
private static ShortestPathSolution solDijkstra1p;
|
||||
private static ShortestPathSolution solAstar1p;
|
||||
|
||||
private static ShortestPathSolution solBellman2;
|
||||
private static ShortestPathSolution solDijkstra2;
|
||||
private static ShortestPathSolution solAstar2;
|
||||
|
||||
private static ShortestPathSolution solAstar3;
|
||||
|
||||
private static ShortestPathSolution solAstar4;
|
||||
|
||||
private static ShortestPathSolution solAstar5;
|
||||
private static ShortestPathSolution solAstar6;
|
||||
|
||||
|
||||
@BeforeClass
|
||||
public static void initAll() throws IOException{
|
||||
final String mapName1 = "/mnt/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Maps/insa.mapgr";
|
||||
final GraphReader reader1 = new BinaryGraphReader(
|
||||
new DataInputStream(new BufferedInputStream(new FileInputStream(mapName1))));
|
||||
|
||||
final String mapName2 = "/mnt/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Maps/carre.mapgr";
|
||||
final GraphReader reader2 = new BinaryGraphReader(
|
||||
new DataInputStream(new BufferedInputStream(new FileInputStream(mapName2))));
|
||||
|
||||
//pour test Astar1
|
||||
final Graph graph1 = reader1.read();
|
||||
final Node origin1 = graph1.get(969); //chemin long
|
||||
final Node destination1 = graph1.get(1193);
|
||||
final Node origin1p = graph1.get(871); //chemin court
|
||||
final Node destination1p = graph1.get(239);
|
||||
final DijkstraAlgorithm dijkstra1 =new DijkstraAlgorithm(new ShortestPathData(graph1,origin1,destination1,ArcInspectorFactory.getAllFilters().get(0)));//all roads allowed and length
|
||||
solDijkstra1 = dijkstra1.run();
|
||||
final DijkstraAlgorithm dijkstra1p =new DijkstraAlgorithm(new ShortestPathData(graph1,origin1p,destination1p,ArcInspectorFactory.getAllFilters().get(0)));//all roads allowed and length
|
||||
solDijkstra1p = dijkstra1p.run();
|
||||
final AStarAlgorithm Astar1p = new AStarAlgorithm(new ShortestPathData(graph1,origin1p,destination1p,ArcInspectorFactory.getAllFilters().get(0)));//all roads allowed and length
|
||||
final AStarAlgorithm Astar1 = new AStarAlgorithm(new ShortestPathData(graph1,origin1,destination1,ArcInspectorFactory.getAllFilters().get(0)));//all roads allowed and length
|
||||
final BellmanFordAlgorithm bellman1 = new BellmanFordAlgorithm(new ShortestPathData(graph1,origin1,destination1,ArcInspectorFactory.getAllFilters().get(0)));
|
||||
final BellmanFordAlgorithm bellman1p = new BellmanFordAlgorithm(new ShortestPathData(graph1,origin1p,destination1p,ArcInspectorFactory.getAllFilters().get(0)));
|
||||
solDijkstra1 = dijkstra1.run();
|
||||
solBellman1 = bellman1.run();
|
||||
|
||||
solAstar1 = Astar1.run();
|
||||
solDijkstra1p = dijkstra1p.run();
|
||||
solBellman1p = bellman1p.run();
|
||||
solAstar1p = Astar1p.run();
|
||||
|
||||
//pour test Astar2
|
||||
final Graph graph2 = reader2.read();
|
||||
final Node origin2 = graph2.get(23);
|
||||
final Node destination2 = graph2.get(1);
|
||||
final DijkstraAlgorithm dijkstra2 =new DijkstraAlgorithm(new ShortestPathData(graph2,origin2,destination2,ArcInspectorFactory.getAllFilters().get(2)));
|
||||
solDijkstra2 = dijkstra2.run();
|
||||
final BellmanFordAlgorithm bellman2 = new BellmanFordAlgorithm(new ShortestPathData(graph2,origin2,destination2,ArcInspectorFactory.getAllFilters().get(2)));
|
||||
solBellman2 = bellman2.run();
|
||||
final AStarAlgorithm Astar2 = new AStarAlgorithm(new ShortestPathData(graph2,origin2,destination2,ArcInspectorFactory.getAllFilters().get(2)));
|
||||
solAstar2 = Astar2.run();
|
||||
|
||||
//pour test Astar3
|
||||
final Node origin3 = graph1.get(1223);
|
||||
final Node destination3 = graph1.get(1047); //valeurs sur map INSA qui donnent chemin inexistant
|
||||
final AStarAlgorithm Astar3 = new AStarAlgorithm(new ShortestPathData(graph1,origin3,destination3,ArcInspectorFactory.getAllFilters().get(0)));//all roads allowed and length
|
||||
solAstar3 = Astar3.run();
|
||||
|
||||
//pour test Astar4
|
||||
final Node origin4 = graph1.get(0);
|
||||
final Node destination4 = graph1.get(0); //valeurs sur map INSA qui donnent chemin inexistant
|
||||
final AStarAlgorithm Astar4 = new AStarAlgorithm(new ShortestPathData(graph1,origin4,destination4,ArcInspectorFactory.getAllFilters().get(0)));//all roads allowed and length
|
||||
solAstar4 = Astar4.run();
|
||||
|
||||
//pour test Astar5
|
||||
final AStarAlgorithm Astar5 = new AStarAlgorithm(new ShortestPathData(graph2,origin2,destination2,ArcInspectorFactory.getAllFilters().get(1)));
|
||||
solAstar5 = Astar5.run();
|
||||
final AStarAlgorithm Astar6 = new AStarAlgorithm(new ShortestPathData(graph2,origin2,destination2,ArcInspectorFactory.getAllFilters().get(2)));
|
||||
solAstar6 = Astar6.run();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAstar1(){//test en distance (chemin court)
|
||||
assertEquals(solAstar1.getPath().getLength(),solBellman1.getPath().getLength(),0.00001);
|
||||
assertEquals(solAstar1.getPath().getLength(),solDijkstra1.getPath().getLength(),0.00001);
|
||||
}
|
||||
|
||||
@Test//test trajet court
|
||||
public void testAstar1p(){//test en distance (chemin long)
|
||||
assertEquals(solAstar1p.getPath().getLength(),solBellman1p.getPath().getLength(),0.00001);
|
||||
assertEquals(solAstar1p.getPath().getLength(),solDijkstra1p.getPath().getLength(),0.00001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAstar2(){//test en temps que pour les voitures
|
||||
assertEquals(solAstar2.getPath().getMinimumTravelTime(),solBellman2.getPath().getMinimumTravelTime(),0.00001);
|
||||
assertEquals(solAstar2.getPath().getMinimumTravelTime(),solDijkstra2.getPath().getMinimumTravelTime(),0.00001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAstar3(){//test Astar pour chemin inexistant
|
||||
assertTrue(solAstar3.getStatus().equals(Status.INFEASIBLE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAstar4(){//test Astar pour chemin longueur nulle
|
||||
assertTrue(solAstar4.getPath().getLength()==0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDijkstra5(){//test de cohérence
|
||||
assertTrue(solAstar5.getPath().getLength() <= solAstar6.getPath().getLength());
|
||||
assertTrue(solAstar5.getPath().getMinimumTravelTime() >= solAstar6.getPath().getMinimumTravelTime());
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -110,7 +110,7 @@ public class DijkstraTest {
|
|||
//}
|
||||
//System.out.println(i3 + " " + i4);
|
||||
destination2 = graph1.get(i2);
|
||||
dijkstra2 = new DijkstraAlgorithm(new ShortestPathData(graph1,origin1,destination1,ArcInspectorFactory.getAllFilters().get(2)));//only roads for cars and time1
|
||||
dijkstra2 = new DijkstraAlgorithm(new ShortestPathData(graph1,origin1,destination1,ArcInspectorFactory.getAllFilters().get(2)));//only roads for cars and time
|
||||
bellman2 = new BellmanFordAlgorithm(new ShortestPathData(graph1,origin1,destination1,ArcInspectorFactory.getAllFilters().get(2)));
|
||||
solDijkstra2 = dijkstra2.run();
|
||||
solBellman2 = bellman2.run();
|
||||
|
@ -149,7 +149,7 @@ public class DijkstraTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testDijkstra5(){//test de cohérence
|
||||
public void testDijkstra5(){//test de cohérence
|
||||
assertTrue(solDijkstra5.getPath().getLength() <= solDijkstra2.getPath().getLength());
|
||||
assertTrue(solDijkstra5.getPath().getMinimumTravelTime() >= solDijkstra2.getPath().getMinimumTravelTime());
|
||||
|
||||
|
|
Loading…
Reference in a new issue