예제 #1
0
        public static void SzukanieCzasowZakonczenia(Zadanie zad, List <Zadanie> nastepniki)
        {
            if (minimalna.Count() == 0)
            {
                minimalna.Add(zad.oczekiwanyCzasZakonczenia);
            }

            foreach (Zadanie zadanie in nastepniki)
            {
                minimalna.Add(zadanie.oczekiwanyCzasZakonczenia);
                SzukanieCzasowZakonczenia(zad, zadanie.nastepneZadania);
            }
        }
예제 #2
0
        public static void Wczytaj(string plik)
        {
            string[] lines = System.IO.File.ReadAllLines(@"D:\Uczelnia\semestr_6\SzeregowanieZadan\zad03\ZmodyfikowanyLiu\" + plik);

            for (int i = 0; i < lines.Length; i += 5)
            {
                int numerZadania = Int32.Parse(lines[i]);
                int czasTrwania  = Int32.Parse(lines[i + 1]);
                int oczekiwanyCzasZakonczenia = Int32.Parse(lines[i + 3]);
                int czasPrzyjsciaDoSystemu    = Int32.Parse(lines[i + 4]);

                Zadanie z = new Zadanie(numerZadania, czasTrwania, oczekiwanyCzasZakonczenia, czasPrzyjsciaDoSystemu, new List <Zadanie>(), new List <Zadanie>());
                ManagerZadan.zadania.Add(z);
            }



            int j = 0;

            for (int i = 2; i < lines.Length; i += 5)
            {
                List <string> zadaniaPoprzednie = new List <string>();
                foreach (string zad in lines[i].Split(' '))
                {
                    zadaniaPoprzednie.Add(zad);
                }

                foreach (string zad in zadaniaPoprzednie)
                {
                    if (int.TryParse(zad, out int a))
                    {
                        int b = Convert.ToInt32(zad);
                        ManagerZadan.zadania.ElementAt(j).poprzednieZadania.Add(ManagerZadan.zadania.ElementAt(b - 1));
                        ManagerZadan.zadania.ElementAt(b - 1).nastepneZadania.Add(ManagerZadan.zadania.ElementAt(j));
                    }
                }

                j++;
            }
        }
예제 #3
0
        public static void UstawienieZadanNaMaszynie()
        {
            ulozoneZadania = zadania.OrderBy(zad => zad.czasPrzyjsciaDoSystemu).ToList();
            List <Zadanie> aktualne = new List <Zadanie>();
            int            min      = 100000;

            os = 0;
            int pom;

            while (true)
            {
                if (CzyKoniec() == false)
                {
                    aktualne = AktualneZadaniaDoWykonania(os, aktualne);

                    int i = 0;
                    while (true)
                    {
                        // WyswietlenieMaszyny();


                        if (CzyKoniec() == true)
                        {
                            break;
                        }



                        for (int k = 0; k < aktualne.Count(); k++)
                        {
                            if (min > aktualne.ElementAt(k).zmodyfikowanyCzasZakonczenia&& aktualne.ElementAt(k).czasTrwania != 0)
                            {
                                min = aktualne.ElementAt(k).zmodyfikowanyCzasZakonczenia;
                                i   = k;
                            }
                        }
                        min = 5000000;
Znalazlo:
                        if (aktualne.Count() != 0)
                        {
                            if (aktualne.ElementAt(i).poprzednieZadania.Count() == 0 && aktualne.ElementAt(i).czasTrwania != 0)
                            {
                                Zadanie z = new Zadanie(aktualne.ElementAt(i).numerZadania, os, os + 1);
                                aktualne.ElementAt(i).czasTrwania -= 1;
                                maszyna.Add(z);
                            }
                            else
                            {
                                for (int j = 0; j < aktualne.ElementAt(i).poprzednieZadania.Count(); j++)
                                {
                                    pom = aktualne.IndexOf(aktualne.ElementAt(i).poprzednieZadania.ElementAt(j));
                                    if (pom != -1)
                                    {
                                        if (aktualne.ElementAt(pom).czasTrwania > 0)
                                        {
                                            i = pom;
                                            goto Znalazlo;
                                        }
                                    }
                                    else
                                    {
                                        goto Dalej;
                                    }
                                }

                                if (aktualne.ElementAt(i).czasTrwania != 0)
                                {
                                    Zadanie z = new Zadanie(aktualne.ElementAt(i).numerZadania, os, os + 1);
                                    aktualne.ElementAt(i).czasTrwania -= 1;
                                    maszyna.Add(z);
                                }
                            }
                        }
Dalej:
                        os      += 1;
                        aktualne = AktualneZadaniaDoWykonania(os, aktualne);
                    }
                }
                else
                {
                    break;
                }
            }
        }