public Tester() { Random rnd = new Random(DateTime.Now.Millisecond); double losowa2; czasEtykiety = 0; czasFloyd = 0; bool okej = false; int a, b; while (okej != true) { try { #region inicjacje + wczytywanie siec = new Siec(); wczytywanie(); //generacja macierzy poprzednikow siec.macierz_poprzednikow = new int[siec.liczbaWezlow + 1, siec.liczbaWezlow + 1]; //generacja macierzy sasiedztwa siec.macierz_sasiedztwa = new double[siec.liczbaWezlow + 1, siec.liczbaWezlow + 1]; #region zapisywanie sieci (sasiedzkich wezlow) for (int i = 1; i <= liczbaLaczy; i++) { a = lacze[i].wezelPoczatkowy; b = lacze[i].wezelKoncowy; wezly[a].tablica_sasiadow[wezly[a].liczba_sasiadow] = b; wezly[a].idLacza[wezly[a].liczba_sasiadow] = lacze[i].idLacza; wezly[a].liczba_sasiadow++; } #endregion #region pokazywanie sieci Console.WriteLine("Wczytana siec: "); for (int i = 1; i <= liczbaLaczy; i++) { Console.WriteLine(lacze[i].idLacza + ". " + "Wezel poczatkowy: " + lacze[i].wezelPoczatkowy + " wezel koncowy: " + lacze[i].wezelKoncowy + " koszt: " + lacze[i].koszt); } Console.WriteLine(); #endregion PoprawianieEtykiet poprawianie_etykiet = new PoprawianieEtykiet(liczbaWezlow); poprawianie_etykiet.siec = siec; poprawianie_etykiet.lacza = lacze; poprawianie_etykiet.wezly = wezly; //Console.WriteLine(poprawianie_etykiet.wszystkieSciezki()); //Console.ReadLine(); Floyd floyd = new Floyd(); floyd.siec = siec; floyd.lacza = lacze; floyd.wezly = wezly; floyd.sciezkaAll(); #endregion Console.WriteLine("Podaj liczbę wykonań operacji znajdowania sciezek: [A]"); A = int.Parse(Console.ReadLine()); okej = true; for (int i = 0; i < A; i++) { czasEtykiety += poprawianie_etykiet.sciezkaAll(); czasFloyd += floyd.sciezkaAll(); for (int j = 0; j < liczbaLaczy; j++) //randomizacja łaczy { losowa2 = rnd.NextDouble(); lacze[j + 1] = new Lacze(j + 1, lacze[j + 1].wezelPoczatkowy, lacze[j + 1].wezelKoncowy, losowa2); } } } catch (Exception except) { Console.WriteLine(except.Message); okej = false; } Console.WriteLine("Laczny czas operacji Floyda: " + czasFloyd.ToString() + "ms"); Console.WriteLine("Laczny czas operacji Etykiety: " + czasEtykiety.ToString() + "ms"); Console.WriteLine("X: " + (czasFloyd / (double)A).ToString() + "ms"); Console.WriteLine("Y: " + (czasEtykiety / (double)A).ToString() + "ms"); } Console.ReadLine(); }
public void wczytywanie() { bool ok = false; Random rnd = new Random(DateTime.Now.Millisecond); double losowa; while (!ok) { System.IO.StreamReader sr; string[] wyrazy; ok = true; try { Console.WriteLine("Przeciagnij tu plik wejsciowy i wcisnij ENTER..."); sciezkaWejscia = Console.ReadLine(); if (sciezkaWejscia[0] == '\"') { sciezkaWejscia = sciezkaWejscia.Substring(1, sciezkaWejscia.Length - 2); } Console.WriteLine(" "); sr = new System.IO.StreamReader(sciezkaWejscia); String linia = ""; #region wezly linia = ""; while (linia.Length < 2 || linia[0] == '#') { linia = sr.ReadLine(); } wyrazy = linia.Split(' '); if (wyrazy[0] == "WEZLY" && wyrazy[2] != "") { liczbaWezlow = int.Parse(wyrazy[2]); siec.liczbaWezlow = liczbaWezlow; } else { throw (new Exception("Zla liczba wezlow")); } #endregion #region lacza linia = ""; while (linia.Length < 2 || linia[0] == '#') { linia = sr.ReadLine(); } wyrazy = linia.Split(' '); if (wyrazy[0] == "LACZA" && wyrazy[2] != "") { liczbaLaczy = int.Parse(wyrazy[2]); siec.liczbaKrawedzi = liczbaLaczy; } else { throw (new Exception("Zla liczba pojemności kolejki")); } #endregion #region wczytywanie konfiguracji laczy lacze = new Lacze[liczbaLaczy + 1]; wezly = new Wezel[liczbaWezlow + 1]; for (int i = 1; i <= liczbaWezlow; i++) { wezly[i] = new Wezel(i, 0); // wezel[0] jest 0 } wezly[0] = null; for (int i = 0; i < liczbaLaczy; i++) { losowa = rnd.NextDouble(); linia = ""; while (linia.Length < 2 || linia[0] == '#') { linia = sr.ReadLine(); } wyrazy = linia.Split(' '); lacze[i + 1] = new Lacze(int.Parse(wyrazy[0]), int.Parse(wyrazy[1]), int.Parse(wyrazy[2]), losowa); // losowa - zmienna okreslajaca przepustowosc } #endregion } catch (Exception e) { Console.WriteLine("Zla sciezka. Sprobuj jeszcze raz."); Console.WriteLine(e.Message); ok = false; } } }