public static void generateTestCzworki(Map.Data.MapData map) { int powtorzenia = 100; map.randomFill(10); long[] elapsedMs1 = new long[powtorzenia]; for (int i = 0; i < powtorzenia; i++) { System.GC.Collect(); ServiceAAuth.tab = null; if (ServiceAAuth.tab == null) { var watch1 = System.Diagnostics.Stopwatch.StartNew(); ServiceAAuth.makeTab(map, false); watch1.Stop(); elapsedMs1[i] = watch1.ElapsedMilliseconds; } } using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\generateTestCzworki.txt", true)) { file.WriteLine("Generowanie czworki"); foreach (var el in elapsedMs1) { file.WriteLine(el); } } }
internal static void MacierzSasiedztwa(Map.Data.MapData map, bool debug) { System.GC.Collect(); var watch = System.Diagnostics.Stopwatch.StartNew(); if (macierzSasiedztwa == null) { macierzSasiedztwa = new int[NewTabLength][]; for (int i = 0; i < NewTabLength; i++) { macierzSasiedztwa[i] = new int[NewTabLength]; for (int j = 0; j < NewTabLength; j++) { macierzSasiedztwa[i][j] = INF; } } } for (int i = start; i < end; i++) { for (int j = start; j < end; j++) { int i_ = i - offset + num / 2; int j_ = j - offset + num / 2; int me = posInTable(i_, j_); int top = posInTable(i_ + 1, j_); int bot = posInTable(i_ - 1, j_); int r = posInTable(i_, j_ + 1); int l = posInTable(i_, j_ - 1); //Debug.Log("W Nowej " + "i " + i_ + " j" + j_ + " me" + me); //Debug.Log("W GLOWNEJ " + "i " + i + " j" + j); if (map.Table[i][j] != null && (map.Table[i][j].objectType == ObjectType.Rock || map.Table[i][j].objectType == ObjectType.Building)) { } else { //Debug.Log("me " + me + "i " + i_ + " j" + j_); //top if (i_ + 1 < num && i_ + 1 >= 0 && top >= 0) { if (map.Table[i + 1][j] != null && (map.Table[i + 1][j].objectType == ObjectType.Rock || map.Table[i + 1][j].objectType == ObjectType.Building)) { //tab[me][top] = 0; } else { //Debug.Log("top polaczenie " + me + ' ' + top); macierzSasiedztwa[me][top] = 1; } } //bot if (i_ - 1 >= 0 && bot >= 0) { if (map.Table[i - 1][j] != null && (map.Table[i - 1][j].objectType == ObjectType.Rock || map.Table[i - 1][j].objectType == ObjectType.Building)) { //tab[me][bot] = 0; } else { //Debug.Log("bot polaczenie " + me + ' ' + top); macierzSasiedztwa[me][bot] = 1; } } //r if (j_ + 1 < num && j_ + 1 > 0 && r >= 0) { if (map.Table[i][j + 1] != null && (map.Table[i][j + 1].objectType == ObjectType.Rock || map.Table[i][j + 1].objectType == ObjectType.Building)) { //tab[me][r] = 0; } else { //Debug.Log("r polaczenie " + me + ' ' + r); macierzSasiedztwa[me][r] = 1; } } //l if (j_ - 1 >= 0 && l >= 0) { if (map.Table[i][j - 1] != null && (map.Table[i][j - 1].objectType == ObjectType.Rock || map.Table[i][j - 1].objectType == ObjectType.Building)) { //tab[me][l] = 0; } else { //Debug.Log("l polaczenie " + me + ' ' + l); macierzSasiedztwa[me][l] = 1; } } } } } if (debug) { watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\logs-times.txt", true)) { //Debug.Log("Tworzenie macierzy sasiedztwa czas[ms]: " + elapsedMs); file.WriteLine("Tworzenie macierzy sasiedztwa czas[ms]: " + elapsedMs); } //Debug.Log("savetofile"); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\wygenerowana-macierz-sasiedztwa.txt")) { for (int i = 0; i < NewTabLength; i++) { for (int j = 0; j < NewTabLength; j++) { file.Write(macierzSasiedztwa[i][j] + " "); } file.WriteLine(""); } } } }
internal static void ListaIncydencji(Map.Data.MapData map, bool debug) { var watch = System.Diagnostics.Stopwatch.StartNew(); if (listaIncydencji == null) { listaIncydencji = new IList <int> [NewTabLength]; for (int i = 0; i < NewTabLength; i++) { listaIncydencji[i] = new List <int>(); } } for (int i = start; i < end; i++) { for (int j = start; j < end; j++) { int i_ = i - offset + num / 2; int j_ = j - offset + num / 2; int me = posInTable(i_, j_); int top = posInTable(i_ + 1, j_); int bot = posInTable(i_ - 1, j_); int r = posInTable(i_, j_ + 1); int l = posInTable(i_, j_ - 1); //Debug.Log("W Nowej " + "i " + i_ + " j" + j_ + " me" + me); //Debug.Log("W GLOWNEJ " + "i " + i + " j" + j); if (map.Table[i][j] != null && (map.Table[i][j].objectType == ObjectType.Rock || map.Table[i][j].objectType == ObjectType.Building)) { } else { //Debug.Log("me " + me + "i " + i_ + " j" + j_); //top if (i_ + 1 < num && i_ + 1 >= 0 && top >= 0) { if (map.Table[i + 1][j] != null && (map.Table[i + 1][j].objectType == ObjectType.Rock || map.Table[i + 1][j].objectType == ObjectType.Building)) { } else { //Debug.Log("top polaczenie " + me + ' ' + top); listaIncydencji[me].Add(top); } } //bot if (i_ - 1 >= 0 && bot >= 0) { if (map.Table[i - 1][j] != null && (map.Table[i - 1][j].objectType == ObjectType.Rock || map.Table[i - 1][j].objectType == ObjectType.Building)) { } else { //Debug.Log("bot polaczenie " + me + ' ' + top); listaIncydencji[me].Add(bot); } } //r if (j_ + 1 < num && j_ + 1 > 0 && r >= 0) { if (map.Table[i][j + 1] != null && (map.Table[i][j + 1].objectType == ObjectType.Rock || map.Table[i][j + 1].objectType == ObjectType.Building)) { } else { //Debug.Log("r polaczenie " + me + ' ' + r); listaIncydencji[me].Add(r); } } //l if (j_ - 1 >= 0 && l >= 0) { if (map.Table[i][j - 1] != null && (map.Table[i][j - 1].objectType == ObjectType.Rock || map.Table[i][j - 1].objectType == ObjectType.Building)) { //tab[me][l] = 0; } else { //Debug.Log("l polaczenie " + me + ' ' + l); listaIncydencji[me].Add(l); } } } } } if (debug) { watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\logs-times.txt", true)) { //Debug.Log("Tworzenie listy incydencji czas[ms]: " + elapsedMs); file.WriteLine("Tworzenie listy incydencji czas[ms]: " + elapsedMs); } //Debug.Log("savetofile"); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\wygenerowana-lista-incydencji.txt")) { for (int i = 0; i < NewTabLength; i++) { file.Write("w: " + i + " laczy sie z: "); foreach (var elem in listaIncydencji[i]) { file.Write(elem + ", "); } file.WriteLine(""); } } } }
internal static void ListaSasiedztwa(Map.Data.MapData map, bool debug) { var watch = System.Diagnostics.Stopwatch.StartNew(); if (listaSasiedztwa == null) { listaSasiedztwa = new List <Edge>(); } for (int i = start; i < end; i++) { for (int j = start; j < end; j++) { int i_ = i - offset + num / 2; int j_ = j - offset + num / 2; int me = posInTable(i_, j_); int bot = posInTable(i_ - 1, j_); int r = posInTable(i_, j_ + 1); if (map.Table[i][j] != null && (map.Table[i][j].objectType == ObjectType.Rock || map.Table[i][j].objectType == ObjectType.Building)) { } else { //bot if (i_ - 1 >= 0 && bot >= 0) { if (map.Table[i - 1][j] != null && (map.Table[i - 1][j].objectType == ObjectType.Rock || map.Table[i - 1][j].objectType == ObjectType.Building)) { //tab[me][bot] = 0; } else { //Debug.Log("bot polaczenie " + me + ' ' + top); //tab[me][bot] = 1; listaSasiedztwa.Add(new Edge(me, bot, 1)); } } //r if (j_ + 1 < num && j_ + 1 > 0 && r >= 0) { if (map.Table[i][j + 1] != null && (map.Table[i][j + 1].objectType == ObjectType.Rock || map.Table[i][j + 1].objectType == ObjectType.Building)) { //tab[me][r] = 0; } else { //Debug.Log("r polaczenie " + me + ' ' + r); //tab[me][r] = 1; listaSasiedztwa.Add(new Edge(me, r, 1)); } } } } } if (debug) { watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\logs-times.txt", true)) { //Debug.Log("Tworzenie listy sasiedzctwa czas[ms]: " + elapsedMs); file.WriteLine("Tworzenie listy sasiedzctwa czas[ms]: " + elapsedMs); } //Debug.Log("savetofile"); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\wygenerowana-lista-sasiedztwa.txt")) { foreach (Edge elem in listaSasiedztwa) { file.WriteLine(elem.toString()); } } } }
public static void FindWayDistTestCzworki(Map.Data.MapData map) { int powtorzenia = 10; map.randomFill(10); for (int j = 1; j < 300; j = j + 50) { Vector2 from = new Vector2(0, 0); Vector2 to = new Vector2(j, j); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTestCzworki.txt", true)) { file.WriteLine("PKTY (0, 0) (" + j + ", " + j + ") odleglosc: " + ServiceA.cost(from, to)); } ServiceAAuth.tab = null; if (ServiceAAuth.tab == null) { ServiceAAuth.makeTab(map, false); } long[] elapsedMs1 = new long[powtorzenia]; long[] elapsedMs5 = new long[powtorzenia]; System.GC.Collect(); for (int i = 0; i < powtorzenia; i++) { map.Table[(int)from.x + 800][(int)from.y + 800] = null; map.Table[(int)to.x + 800][(int)to.y + 800] = null; var watch1 = System.Diagnostics.Stopwatch.StartNew(); ServiceAAuth.FindWay(from, to, map, false); watch1.Stop(); elapsedMs1[i] = watch1.ElapsedMilliseconds; var watch5 = System.Diagnostics.Stopwatch.StartNew(); ServiceA.FindWay(from, to, map, false); watch5.Stop(); elapsedMs5[i] = watch5.ElapsedMilliseconds; } using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTestCzworki.txt", true)) { file.WriteLine("A* Auth "); long sum = 0; foreach (var el in elapsedMs1) { sum = sum + el; } file.WriteLine(sum / powtorzenia); sum = 0; file.WriteLine("A*"); foreach (var el in elapsedMs5) { sum = sum + el; } file.WriteLine(sum / powtorzenia); } } }
public static void FindWayDistTest(Map.Data.MapData map) { int powtorzenia = 100; map.randomFill(10); for (int j = 1; j < 300; j = j + 50) { Vector2 from = new Vector2(0, 0); Vector2 to = new Vector2(j, j); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTest.txt", true)) { file.WriteLine("PKTY (0, 0) (" + j + ", " + j + ") odleglosc: " + ServiceA.cost(from, to)); } ServiceData.start = 800 - 300 / 2; ServiceData.end = 800 + 300 / 2; ServiceData.num = (ServiceData.end - ServiceData.start); ServiceData.NewTabLength = ServiceData.num * ServiceData.num; Debug.Log("0"); long[] elapsedMs1 = new long[powtorzenia]; long[] elapsedMs2 = new long[powtorzenia]; long[] elapsedMs3 = new long[powtorzenia]; long[] elapsedMs4 = new long[powtorzenia]; long[] elapsedMs5 = new long[powtorzenia]; System.GC.Collect(); ServiceData.listaSasiedztwa = null; ServiceData.macierzSasiedztwa = null; ServiceData.listaIncydencji = null; ServiceData.ListaIncydencji(map, false); //ServiceData.MacierzSasiedztwa(map, false); for (int i = 0; i < powtorzenia; i++) { Debug.Log("1 " + ((int)from.x + 800) + " " + ((int)from.y + 800)); map.Table[(int)from.x + 800][(int)from.y + 800] = null; Debug.Log("1 " + ((int)to.x + 800) + " " + ((int)to.y + 800)); map.Table[(int)to.x + 800][(int)to.y + 800] = null; var watch1 = System.Diagnostics.Stopwatch.StartNew(); ServiceDjikstra.FindWay(from, to, map, true); watch1.Stop(); elapsedMs1[i] = watch1.ElapsedMilliseconds; var watch5 = System.Diagnostics.Stopwatch.StartNew(); ServiceA.FindWay(from, to, map); watch5.Stop(); elapsedMs5[i] = watch5.ElapsedMilliseconds; Debug.Log("3"); } using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTest.txt", true)) { file.WriteLine("Djikstra lista "); long sum = 0; foreach (var el in elapsedMs1) { sum = sum + el; } file.WriteLine(sum / powtorzenia); sum = 0; file.WriteLine("A*"); foreach (var el in elapsedMs5) { sum = sum + el; } file.WriteLine(sum / powtorzenia); } } }
public static void FindWaySizeTest(Map.Data.MapData map) { int powtorzenia = 100; map.randomFill(10); for (int j = 10; j < 200; j = j + 10) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWaySizeTest.txt", true)) { file.WriteLine("Rozmiar " + j); } ServiceData.start = 800 - j / 2; ServiceData.end = 800 + j / 2; ServiceData.num = (ServiceData.end - ServiceData.start); ServiceData.NewTabLength = ServiceData.num * ServiceData.num; long[] elapsedMs1 = new long[powtorzenia]; long[] elapsedMs2 = new long[powtorzenia]; long[] elapsedMs3 = new long[powtorzenia]; long[] elapsedMs4 = new long[powtorzenia]; long[] elapsedMs5 = new long[powtorzenia]; long[] elapsedMs6 = new long[powtorzenia]; System.GC.Collect(); ServiceData.listaSasiedztwa = null; ServiceData.macierzSasiedztwa = null; ServiceData.listaIncydencji = null; ServiceData.ListaSasiedztwa(map, false); ServiceData.MacierzSasiedztwa(map, false); ServiceData.ListaIncydencji(map, false); for (int i = 0; i < powtorzenia; i++) { Vector2 from = new Vector2(2, 2); Vector2 to = new Vector2(50, 50); map.Table[(int)from.x][(int)from.y] = null; map.Table[(int)to.x][(int)to.y] = null; var watch1 = System.Diagnostics.Stopwatch.StartNew(); ServiceDjikstra.FindWay(from, to, map, true); watch1.Stop(); elapsedMs1[i] = watch1.ElapsedMilliseconds; var watch2 = System.Diagnostics.Stopwatch.StartNew(); ServiceDjikstra.FindWay(from, to, map, false); watch2.Stop(); elapsedMs2[i] = watch2.ElapsedMilliseconds; var watch3 = System.Diagnostics.Stopwatch.StartNew(); //ServiceFord.FindWay(from, to, map, true); watch3.Stop(); elapsedMs3[i] = watch3.ElapsedMilliseconds; var watch4 = System.Diagnostics.Stopwatch.StartNew(); //ServiceFord.FindWay(from, to, map, false); watch4.Stop(); elapsedMs4[i] = watch4.ElapsedMilliseconds; var watch5 = System.Diagnostics.Stopwatch.StartNew(); ServiceA.FindWay(from, to, map); watch5.Stop(); elapsedMs5[i] = watch5.ElapsedMilliseconds; var watch6 = System.Diagnostics.Stopwatch.StartNew(); ServiceA.FindWay(from, to, map); watch6.Stop(); elapsedMs6[i] = watch6.ElapsedMilliseconds; } using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWaySizeTest.txt", true)) { file.WriteLine("Djikstra lista "); foreach (var el in elapsedMs1) { file.WriteLine(el); } file.WriteLine("Djikstra macierz "); foreach (var el in elapsedMs2) { file.WriteLine(el); } file.WriteLine("Ford Lista"); foreach (var el in elapsedMs3) { file.WriteLine(el); } file.WriteLine("Ford macierz"); foreach (var el in elapsedMs4) { file.WriteLine(el); } file.WriteLine("A*"); foreach (var el in elapsedMs5) { file.WriteLine(el); } file.WriteLine("A* Modified"); foreach (var el in elapsedMs6) { file.WriteLine(el); } } } }
public static void generateTest(Map.Data.MapData map) { int powtorzenia = 100; map.randomFill(10); for (int j = 10; j < 1000; j = j + 10) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\generateTest.txt", true)) { file.WriteLine("Rozmiar " + j); } ServiceData.start = 800 - j / 2; ServiceData.end = 800 + j / 2; ServiceData.num = (ServiceData.end - ServiceData.start); ServiceData.NewTabLength = ServiceData.num * ServiceData.num; long[] elapsedMs1 = new long[powtorzenia]; long[] elapsedMs2 = new long[powtorzenia]; long[] elapsedMs3 = new long[powtorzenia]; for (int i = 0; i < powtorzenia; i++) { System.GC.Collect(); ServiceData.listaSasiedztwa = null; ServiceData.macierzSasiedztwa = null; ServiceData.listaIncydencji = null; if (ServiceData.listaSasiedztwa == null) { var watch1 = System.Diagnostics.Stopwatch.StartNew(); ServiceData.ListaSasiedztwa(map, false); watch1.Stop(); elapsedMs1[i] = watch1.ElapsedMilliseconds; } if (ServiceData.macierzSasiedztwa == null) { var watch2 = System.Diagnostics.Stopwatch.StartNew(); ServiceData.MacierzSasiedztwa(map, false); watch2.Stop(); elapsedMs2[i] = watch2.ElapsedMilliseconds; } if (ServiceData.listaIncydencji == null) { var watch3 = System.Diagnostics.Stopwatch.StartNew(); ServiceData.ListaIncydencji(map, false); watch3.Stop(); elapsedMs3[i] = watch3.ElapsedMilliseconds; } } using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\generateTest.txt", true)) { file.WriteLine("ListaSasiedztwa"); foreach (var el in elapsedMs1) { file.WriteLine(el); } file.WriteLine("macierzSasiedztwa"); foreach (var el in elapsedMs2) { file.WriteLine(el); } file.WriteLine("listaIncydencji"); foreach (var el in elapsedMs3) { file.WriteLine(el); } } } }