Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        /* 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();
                }
            }
        }
Exemplo n.º 3
0
        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
        }
Exemplo n.º 4
0
        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
        }