static void Main(string[] args) { Dane.Wczytaj("dane3.txt"); //ManagerZadan.WyswietlenieWszystkichZadan(); ManagerZadan.UstawianiePoziomow(); //Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); // ManagerZadan.WyswietlenieWszystkichZadan(); ManagerMaszyn.PrzygotowanieHarmonogramu(); // ManagerZadan.WyswietlenieWszystkichZadan(); ManagerMaszyn.WyswietlHarmonogram(); Console.ReadKey(); }
public static void PrzygotowanieHarmonogramu() { int time = 0; if (ManagerZadan.StatusWDrzewie == "out-tree") { foreach (Zadanie zadanie in ManagerZadan.zadania) { List <Zadanie> tymczasowa = new List <Zadanie>(); if (zadanie.poprzednieZadania.Count() != 0) { foreach (Zadanie poprzednie in zadanie.poprzednieZadania) { tymczasowa = zadanie.poprzednieZadania; zadanie.nastepneZadania.Add(poprzednie); poprzednie.poprzednieZadania.Add(zadanie); } zadanie.poprzednieZadania = new List <Zadanie>(); } zadanie.nastepneZadania = tymczasowa; } ManagerZadan.UstawianiePoziomow(); } while (!ManagerZadan.UkonczoneZadania(ManagerZadan.zadania, 0)) { int maxLevel = ManagerZadan.zadania.First().poziom; List <Zadanie> zadaniaBezPoprzednich = new List <Zadanie>(); List <Zadanie> zadaniaDoWykonania = new List <Zadanie>(); foreach (Zadanie zadanie in ManagerZadan.zadania) { if (zadanie.poprzednieZadania.Count() == 0 && zadanie.czyZakonczone == false) { zadaniaBezPoprzednich.Add(zadanie); } } zadaniaBezPoprzednich.Sort(Porownaj); if (zadaniaBezPoprzednich.Count() <= maszyny.Count()) { zadaniaDoWykonania = zadaniaBezPoprzednich; while (zadaniaDoWykonania.Count() < maszyny.Count()) { zadaniaDoWykonania.Add(new Zadanie(0, 1, 0, new List <Zadanie>(), new List <Zadanie>(), false)); } } else { for (int i = 0; i < maszyny.Count(); i++) { zadaniaDoWykonania.Insert(i, zadaniaBezPoprzednich.ElementAt(i)); } } for (int i = 0; i < zadaniaDoWykonania.Count(); i++) { maszyny.ElementAt(i).ustawienieZadan.Add(zadaniaDoWykonania.ElementAt(i)); Zadanie zadanieDoWykonania = zadaniaDoWykonania.ElementAt(i); ManagerZadan.ZakonczZadanie(zadanieDoWykonania.numerZadania); } time++; } if (ManagerZadan.StatusWDrzewie == "out-tree") { foreach (Maszyna m in maszyny) { m.ustawienieZadan.Reverse(); } } }