public void AStarAlgorithmExecuteTest() { Func <IGraphEdge, Double> weightFunction = edge => Convert.ToDouble(edge["Weight"]); IDictionary <OperationParameter, Object> parameters = new Dictionary <OperationParameter, Object>(); parameters[GraphOperationParameters.SourceVertex] = _sourceVertex; parameters[GraphOperationParameters.TargetVertex] = _targetVertex; parameters[GraphOperationParameters.WeightMetric] = weightFunction; AStarAlgorithm operation = new AStarAlgorithm(_sourceGraph, parameters); operation.Execute(); Assert.AreEqual(_resultGraph.VertexCount, operation.Result.VertexCount); Assert.AreEqual(_resultGraph.EdgeCount, operation.Result.EdgeCount); foreach (IGraphVertex resultVertex in operation.Result.Vertices) { IGraphVertex vertex = _resultGraph.GetVertex(resultVertex.Coordinate); Assert.IsNotNull(vertex); Assert.AreEqual(vertex["Distance"], resultVertex["Distance"]); Assert.IsTrue(operation.Result.OutEdges(resultVertex).All(edge => _resultGraph.GetAllEdges(edge.Source.Coordinate, edge.Target.Coordinate).Count == 1)); } }
public static void TestAstar(string mesh_type) { int[] sizes_mesh = new int[21] { 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50 }; int[] final_positions = new int[21] { 99, 143, 195, 255, 323, 399, 483, 575, 675, 783, 899, 1023, 1155, 1295, 1443, 1599, 1763, 1935, 2115, 2303, 2499 }; for (int i = 0; i < sizes_mesh.Length; i++) { string size = "_" + sizes_mesh[i] + "x" + sizes_mesh[i] + ".txt"; string file_name = mesh_type + size; Console.WriteLine("Init Execution -> " + file_name); //------------------------------------------------------------------- //Create the mesh environment MeshEnvironment env = new MeshEnvironment(_start: 0, _final: final_positions[i], _file_name: file_name, sizes_mesh[i]); env.InitEnviroment(type_mesh: mesh_type); //------------------------------------------------------------------- for (int j = 0; j < num_test; j++) { AStarAlgorithm as1 = new AStarAlgorithm(); as1.Execute(ref env); //Insert the obstacle in a middle zone of the current optimal solution env.FillDistanceMatrix(); InsertSeveralObstacle(ref env, num_obstacle: 2, num_routes: 2); env.FillDistanceMatrix(); AStarAlgorithm as2 = new AStarAlgorithm(); as2.Execute(ref env); ////Store variables in a txt Console.WriteLine("Execution {0} of " + file_name, j); StoreVariable_AStar(mesh_type, ref env, ref as1, ref as2); env.ClearObstacles(); } Console.WriteLine("End Execution -> " + file_name); Console.WriteLine("---------------------------------------------"); } }