예제 #1
0
        public int[] Przeglad(KolejkaZadan kolejka)
        {
            var liczbaZadan = kolejka.zadania.Length;

            int[] optymalnaKolejnosc  = new int[liczbaZadan];
            int[] poczatkowaKolejnosc = new int[liczbaZadan];
            int   cmax = int.MaxValue;

            for (int i = 0; i < liczbaZadan; i++)
            {
                poczatkowaKolejnosc[i] = i + 1;
            }
            var algorytmy = new Algorytmy();

            List <int[]> macierzPermutacji = ListToArray(returnPermutation(poczatkowaKolejnosc));
            int          checkedCmax       = int.MaxValue;

            foreach (int[] kolejnosc in macierzPermutacji)
            {
                checkedCmax = algorytmy.calculateTotalspan(kolejka, kolejnosc);
                if (checkedCmax < cmax)
                {
                    cmax = checkedCmax;
                    optymalnaKolejnosc = kolejnosc;
                }
            }

            return(optymalnaKolejnosc);
        }
예제 #2
0
        public int[] Przeglad(KolejkaZadan kolejka)
        {
            var kolejnoscZadan = new int[kolejka.zadania.Length];

            for (int x = 0; x < kolejka.zadania.Length; x++)
            {
                kolejnoscZadan[x] = x + 1;
            }
            int[,] macierzZadan = Algorytmy.pasreMacierzZadan(kolejka, kolejnoscZadan);
            var liczbaZadan = kolejka.zadania.Length;

            int[] optymalnaKolejnosc  = new int[liczbaZadan];
            int[] poczatkowaKolejnosc = new int[liczbaZadan];
            int   cmax = int.MaxValue;

            for (int i = 0; i < liczbaZadan; i++)
            {
                poczatkowaKolejnosc[i] = i + 1;
            }

            List <int[]> macierzPermutacji = ListToArray(returnPermutation(poczatkowaKolejnosc));
            int          checkedCmax       = int.MaxValue;

            foreach (int[] kolejnosc in macierzPermutacji)
            {
                checkedCmax = Algorytmy.calculateTotalspan(kolejka, macierzZadan, kolejnosc);
                if (checkedCmax < cmax)
                {
                    cmax = checkedCmax;
                    optymalnaKolejnosc = kolejnosc;
                }
            }

            return(optymalnaKolejnosc);
        }
예제 #3
0
        public static List <int> NehBasic(KolejkaZadan kz, List <Tuple <int, int> > tl)
        {
            List <int> sequence       = new List <int>();
            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);


            int _counter = 0;

            foreach (Tuple <int, int> t in tl)
            {
                int[] sq = new int[_counter + 1]; //stworzenie listy mozliwych dolozen ktora to jest zawsze +1 do kroku
                for (int i = 0; i < sq.Length; i++)
                {
                    List <int> clone = new List <int>(sequence);                             //kopia to mieszania
                    clone.Insert(i, t.Item1);                                                //ukladanie w po kolei
                    sq[i] = Algorytmy.calculateTotalspan(kz, macierzZadan, clone.ToArray()); //obliczenie nowego cmaxa by sprawdzic ile wynosi
                }
                int minIndex = Array.IndexOf(sq, sq.Min());
                sequence.Insert(minIndex, t.Item1);//dodanie do prawdziwej sekwencji najlepszego wariantu
                _counter++;
            }

            return(sequence);
        }