public RoutesDTO AStar(string startLatLon, string endLatLon) { KeyValuePair <NodeGraphDTO, NodeGraphDTO> nodes = BeforeCalculateShortestPath(startLatLon, endLatLon); var watch = Stopwatch.StartNew(); NodeGraphDTO node = astar.CalculateShortestPath(nodes.Key, nodes.Value); watch.Stop(); time = watch.Elapsed; return(AfterCalculateShortestPath(node)); }
static void Main(string[] args) { /* Dijkstra dijkstra = new Dijkstra(); * dijkstra.ReadNodeFile("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\nodes.txt"); * dijkstra.ReadEdgeFile("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\edges.txt"); * dijkstra.CalculateShortesPathFromNode(6); * var tmpList = dijkstra.FormatOutput(); * foreach (var item in tmpList) * { * Console.WriteLine(item); * } * Console.WriteLine(); * Floyd floyd = new Floyd(); * floyd.ReadNodeFile("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\nodes.txt"); * floyd.ReadEdgeFile("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\edges.txt"); * floyd.CalculatePath(); * var floydList = floyd.FormatOutput(6); * foreach (var item in tmpList) * { * Console.WriteLine(item); * }*/ AStar astar = new AStar(); /*astar.ReadMyNodes("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\my_nodes.txt"); * astar.ReadMyEdges("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\my_edges.txt"); * astar.ReadMyIncidentEdges("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\my_incident_edges.txt"); * astar.CalculateShortestPath(12, 4);*/ astar.ReadNodes("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\SR_nodes.atr"); astar.ReadNodeCords("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\SR_nodes.vec"); astar.ReadEdges("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\SR_edges.atr"); astar.ReadIncidentEdges("C:\\Users\\miros\\source\\repos\\MetaHeruistiky_csharp\\MetaHeruistiky_csharp\\Data\\SR_edges_incid.txt"); //astar.CalculateShortestPath(12, 4); astar.CalculateShortestPath(154, 12); //astar.TestConnectionOfGraph(); Console.WriteLine("Kontrolujem spojenie"); astar.FindConnectedComponents(); //dijkstra.ReadNodeFile(".\\Data\\nodes.txt"); }
public ActionResult Statistics() { var statistic = new { GraphMemory = Utils.GraphMemory, DisabledGraphMemory = Utils.DisabledGraphMemory, GraphTime = Utils.GraphTime, DisabledGraphTime = Utils.DisabledGraphTime, PocetVrcholov = Utils.PocetVrcholov }; int opakovani = 10; int algoritmus = 0; TimeSpan time; Zakladny zakladny = new Zakladny(); Dijkster dijkster = new Dijkster(); AStar astar = new AStar(); LabelCorrect labelCorrect = new LabelCorrect(); LabelSet labelSet = new LabelSet(); DuplexDijkster duplexDijkster = new DuplexDijkster(); var watch = Stopwatch.StartNew(); Random random = new Random(); NodeGraphDTO[] startNodes = new NodeGraphDTO[opakovani]; NodeGraphDTO[] endNodes = new NodeGraphDTO[opakovani]; List <RoutesDTO> routesAll = new List <RoutesDTO>(6); for (int i = 0; i < opakovani; i++) { startNodes[i] = PrepareData.NodesGraph.Values.ElementAt(random.Next(PrepareData.NodesGraph.Count)); endNodes[i] = PrepareData.NodesGraph.Values.ElementAt(random.Next(PrepareData.NodesGraph.Count)); } for (int j = 0; j < 6; j++) { RoutesDTO routes = new RoutesDTO(); for (int i = 0; i < opakovani; i++) { PrepareData.PrepareNodesGraph(); switch (j) { case 0: PrepareData.PutStartEnd(startNodes[i], endNodes[i]); watch.Restart(); var n = zakladny.CalculateShortestPath(startNodes[i], endNodes[i], PrepareData.DisabledMovementGraph); watch.Stop(); time = watch.Elapsed; AfterCalculateShortestPath(n, time, routes); PrepareData.RemoveStartEnd(startNodes[i], endNodes[i]); break; case 1: PrepareData.PutStartEnd(startNodes[i], endNodes[i]); watch.Restart(); n = dijkster.CalculateShortestPath(startNodes[i], endNodes[i]); watch.Stop(); time = watch.Elapsed; AfterCalculateShortestPath(n, time, routes); PrepareData.RemoveStartEnd(startNodes[i], endNodes[i]); break; case 2: PrepareData.PutStartEnd(startNodes[i], endNodes[i]); watch.Restart(); n = astar.CalculateShortestPath(startNodes[i], endNodes[i]); watch.Stop(); time = watch.Elapsed; var a = routes.Route.Last; AfterCalculateShortestPath(n, time, routes); PrepareData.RemoveStartEnd(startNodes[i], endNodes[i]); break; case 3: PrepareData.PutStartEnd(startNodes[i], endNodes[i]); watch.Restart(); n = labelSet.CalculateShortestPath(startNodes[i], endNodes[i]); watch.Stop(); time = watch.Elapsed; AfterCalculateShortestPath(n, time, routes); PrepareData.RemoveStartEnd(startNodes[i], endNodes[i]); break; case 4: PrepareData.PutStartEnd(startNodes[i], endNodes[i]); watch.Restart(); n = labelCorrect.CalculateShortestPath(startNodes[i], endNodes[i]); watch.Stop(); time = watch.Elapsed; AfterCalculateShortestPath(n, time, routes); PrepareData.RemoveStartEnd(startNodes[i], endNodes[i]); break; case 5: PrepareData.PutStartEnd(startNodes[i], endNodes[i]); watch.Restart(); n = duplexDijkster.CalculateShortestPath(startNodes[i], endNodes[i]); watch.Stop(); time = watch.Elapsed; AfterCalculateShortestPathDuplex(n, time, routes); PrepareData.RemoveStartEnd(startNodes[i], endNodes[i]); break; } } routesAll.Add(routes); } double[] PocetHranCesty = new double[6]; double[] PocetSpracovanychVrcholov = new double[6]; double[] DlzkaCesty = new double[6]; double[] CasVypoctu = new double[6]; algoritmus = 0; foreach (RoutesDTO r in routesAll) { opakovani = r.Route.Count == 0 ? opakovani : r.Route.Count; long PocetHranCestyA = 0; long PocetSpracovanychVrcholovA = 0; double DlzkaCestyA = 0; double CasVypoctuA = 0; foreach (RouteDTO route in r.Route) { PocetHranCestyA += route.PocetHranCesty; PocetSpracovanychVrcholovA += route.PocetSpracovanychVrcholov; DlzkaCestyA += route.DlzkaCesty; CasVypoctuA += route.CasVypoctu; } PocetHranCesty[algoritmus] = (double)PocetHranCestyA / opakovani; PocetSpracovanychVrcholov[algoritmus] = (double)PocetSpracovanychVrcholovA / opakovani; DlzkaCesty[algoritmus] = DlzkaCestyA / opakovani; CasVypoctu[algoritmus] = CasVypoctuA / opakovani; algoritmus++; } return(Json(statistic)); }