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); } }
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++; } }
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; } } }