static void Main(string[] args) { Stopwatch sw = new Stopwatch(); Algorytmy algorytmy = new Algorytmy(); for (int i = 0; i < 60; i++) { KolejkaZadan kz = new KolejkaZadan("neh_data.txt", i + 1); var kolejnoscZadan = new int[kz.zadania.Length]; for (int x = 0; x < kz.zadania.Length; x++) { kolejnoscZadan[x] = x + 1; } int[,] macierzZadan = Algorytmy.pasreMacierzZadan(kz, kolejnoscZadan); sw.Start(); int[] sekwencja = algorytmy.AlgorytmJohnsona(kz); sw.Stop(); int Cmax = Algorytmy.calculateTotalspan(kz, macierzZadan, sekwencja); Parser.ZapiszWynik(sw, Cmax, kz, "Johnson", i + 1); sw.Reset(); var posortowane = Algorytmy.ZwrocPosortowanePriorytety(kz); sw.Start(); int[] sekwencja2 = Neh.NehBasic(kz, posortowane).ToArray(); sw.Stop(); int Cmax2 = Algorytmy.calculateTotalspan(kz, macierzZadan, sekwencja2); Parser.ZapiszWynik(sw, Cmax2, kz, "NEH", i + 1); sw.Reset(); } }
/* Glowna funkcja programu. Wszystkie operacje zaczynaja sie od tego miejsca */ private void btnUruchom_Click(object sender, EventArgs e) { if (!Int32.TryParse(tbNrInstancji.Text, out nrInstancji)) { MessageBox.Show("Złe dane w polu instancji!"); } else { Algorytmy algorytmy = new Algorytmy(); KolejkaZadan kz = new KolejkaZadan(sciezkaPlikDane, nrInstancji); var kolejnoscZadan = new int[kz.zadania.Length]; for (int x = 0; x < kz.zadania.Length; x++) { kolejnoscZadan[x] = x + 1; } int[,] macierzZadan = Algorytmy.pasreMacierzZadan(kz, kolejnoscZadan); if (cbAlgorytm.SelectedIndex == 0) { //Przeglad zupelny PrzegladZupelny przegladZupelny = new PrzegladZupelny(); int[] sekwencja = przegladZupelny.Przeglad(kz); int Cmax = Algorytmy.calculateTotalspan(kz, macierzZadan, sekwencja); kz.WypiszRezultaty(Cmax, sekwencja); } else if (cbAlgorytm.SelectedIndex == 1) { //Johnson int[] sekwencja = algorytmy.AlgorytmJohnsona(kz); int Cmax = Algorytmy.calculateTotalspan(kz, macierzZadan, sekwencja); kz.WypiszRezultaty(Cmax, sekwencja); } else { //Neh List <Tuple <int, int> > posortowane = Algorytmy.ZwrocPosortowanePriorytety(kz); List <int> sekwencja = Neh.NehBasic(kz, posortowane); int Cmax = Algorytmy.calculateTotalspan(kz, macierzZadan, sekwencja.ToArray()); kz.WypiszRezultaty(Cmax, sekwencja.ToArray()); } //Wizualizacja if (rbVisualize.Checked) { var proces = new Process(); proces.StartInfo.FileName = sciezkaPython; proces.StartInfo.Arguments = @"w_gantt.py"; proces.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; proces.Start(); } } }
static void Main(string[] args) { #region Parametry poczatkowe int nrMetodySasiedztwa = 1; int liczbaIteracji = 5000; int nrInstancji = 1; int liczbaBadanychInstancji = 20; #endregion Parser parser = new Parser("neh_data.txt"); Stopwatch[] stopwatches = new Stopwatch[3] { new Stopwatch(), new Stopwatch(), new Stopwatch() }; #region Badanie algorytmow - poszczegolne algorytmy for (int i = nrInstancji; i < liczbaBadanychInstancji + 1; i++) { int[,] taskMatrix = parser.LoadTasks(i); #region Generowanie poczatkowej kolejnosci int[] startingPoint = new int[taskMatrix.GetLength(0)]; for (int j = 0; j < startingPoint.Length; j++) { startingPoint[j] = j + 1; } #endregion //Neh List <Tuple <int, int> > pP = Algorithms.ZwrocPosortowanePriorytety(taskMatrix); stopwatches[0].Start(); int[] seqNeh = Neh.NehBasic(taskMatrix, pP); stopwatches[0].Stop(); int cMaxNeh = Algorithms.calculateTotalspan(taskMatrix, seqNeh); //Tabu Search stopwatches[1].Start(); int[] seqTs = TabuSearch.tabuSearch(taskMatrix, startingPoint, nrMetodySasiedztwa, liczbaIteracji); stopwatches[1].Stop(); int cMaxTs = Algorithms.calculateTotalspan(taskMatrix, seqTs); //Johnson stopwatches[2].Start(); int[] seqJohn = Johnson.AlgorytmJohnsona(taskMatrix); stopwatches[2].Stop(); int cMaxJohn = Algorithms.calculateTotalspan(taskMatrix, seqJohn); //Zapisywanie wynikow int[] cMaxes = { cMaxNeh, cMaxTs, cMaxJohn }; string[] aNames = { "Neh", "TS", "Johnson" }; Parser.SaveTimeScore("result.txt", stopwatches, i, cMaxes, taskMatrix, aNames, i); //Resetowanie stoperow foreach (Stopwatch sw in stopwatches) { sw.Reset(); } } #endregion }
static void Main(string[] args) { #region Parametry poczatkowe int liczbaIteracji = 5000; int nrInstancji = 1; int liczbaBadanychInstancji = 20; #endregion Parser parser = new Parser("neh_data.txt"); Stopwatch[] stopwatches = new Stopwatch[3] { new Stopwatch(), new Stopwatch(), new Stopwatch() }; #region Badanie algorytmow - poszczegolne algorytmy for (int i = nrInstancji; i < liczbaBadanychInstancji + 1; i++) { int[,] taskMatrix = parser.LoadTasks(i); #region Generowanie poczatkowej kolejnosci - natural int[] startingPointN = new int[taskMatrix.GetLength(0)]; for (int j = 0; j < startingPointN.Length; j++) { startingPointN[j] = j + 1; } #endregion #region Generowanie poczatkowej kolejnosci - randShuffle int[] startingPointR = Algorithms.shuffleOrder(startingPointN); #endregion #region Generowanie poczatkowej kolejnosci - neh List <Tuple <int, int> > pP = Algorithms.ZwrocPosortowanePriorytety(taskMatrix); int[] startingPointNe = Neh.NehBasic(taskMatrix, pP); #endregion //Tabu Search - natural, neighbourhood 1 stopwatches[0].Start(); int[] seqTsN1 = TabuSearch.tabuSearch(taskMatrix, startingPointN, 1, liczbaIteracji); stopwatches[0].Stop(); int cMaxTsN1 = Algorithms.calculateTotalspan(taskMatrix, seqTsN1); //Tabu Search - randShuffle, neighbourhood 1 stopwatches[1].Start(); int[] seqTsR1 = TabuSearch.tabuSearch(taskMatrix, startingPointR, 1, liczbaIteracji); stopwatches[1].Stop(); int cMaxTsR1 = Algorithms.calculateTotalspan(taskMatrix, seqTsR1); //Tabu Search - neh, neighbourhood 1 stopwatches[2].Start(); int[] seqTsNe1 = TabuSearch.tabuSearch(taskMatrix, startingPointNe, 1, liczbaIteracji); stopwatches[2].Stop(); int cMaxTsNe1 = Algorithms.calculateTotalspan(taskMatrix, seqTsNe1); //Zapisywanie wynikow int[] cMaxes = { cMaxTsN1, cMaxTsR1, cMaxTsNe1 }; string[] aNames = { "Natural_1", "RandShuffle_1", "Neh_1" }; Parser.SaveTimeScore("result.txt", stopwatches, i, cMaxes, taskMatrix, aNames, i); //Resetowanie stoperow foreach (Stopwatch sw in stopwatches) { sw.Reset(); } } #endregion }