Professional Documents
Culture Documents
Laboratorium ProblemPlanowania
Autorzy: KrystianBabioch KrzysztofKnapik KSS
1.AplikacjawjzykuJava
Do rozwizania wybranego zadania planowania wykorzystano jzyk programowania Java oraz bibliotek JaCoP. Utworzono aplikacje okienkow z wykorzystaniem programu Netbeans pozwalajca na rozwizanie zadania planowanie oraz obserwacj graficzn wynikw.
Obraz.1.Oknogwneprogramu
Wskadaplikacjiwchodzipolezopisemzadaniaplanowania,oknoprezentujceotrzymane wynikiorazwykresgraficzniereprezentujcyrozwizaniezadania.
2.JobShop
Jako problem planowania wybrano problem Job Shop polegajcy na przydziale okrelonych zada pewnej liczbie maszyn, tak aby cakowity czas wykonania wszystkich zadabyjaknajkrtszy. W skad problemu Job Shop w rozwizanym przykadzie wchodz cztery zadania oraz cztery maszyny. Czasy trwania poszczeglnych zada w minutach, na kadej z maszyn s okrelonewnastpujcysposb:
* * * * * Job 1 2 3 4 task1 20 10 15 30 task2 15 15 5 10 task3 5 10 10 15 task4 5 5 10 15
Kolejnoprzydzieleniazadamaszynomrwniezostaaokrelona:
* * * * * kolejno maszyn task1 - job1 task2 - job1 task3 - job3 task4 - job4
Dodatkowymiprzyjtymiograniczeniamijestczasprzestrojeniamaszynorazczasy rozpoczcizada:
* Zadanie 2 zaczyna si 30 po zadaniu 1 * Zadanie 3 zaczyna si 25 po zadaniu 2 * Zadanie 4 zaczyna si 5 po zadaniu 3
3.Rozwizanie
Najistotniejszczezadaniaplanowaniarozwizywanegoprzywykorzystaniu bibliotekiJaCoPjestwaciwezapisaniewszystkichzmiennychopisujcychczasytrwania poszczeglnychzada.
IntVar[] job1 job1[0] = new czasyTrwania.get(0)); job1[1] = new czasyTrwania.get(1)); job1[2] = new czasyTrwania.get(2)); job1[3] = new czasyTrwania.get(3)); = new IntVar[4]; IntVar(store, "czasTask1Job1", czasyTrwania.get(0), IntVar(store, "czasTask2Job1", czasyTrwania.get(1), IntVar(store, "czasTask3Job1", czasyTrwania.get(2), IntVar(store, "czasTask4Job1", czasyTrwania.get(3),
new IntVar(store, "czasTask1Job2", czasyTrwania.get(4), new IntVar(store, "czasTask2Job2", czasyTrwania.get(5), new IntVar(store, "czasTask3Job2", czasyTrwania.get(6), new IntVar(store, "czasTask4Job2", czasyTrwania.get(7), = new IntVar[4]; IntVar(store, "czasTask1Job3", czasyTrwania.get(8), IntVar(store, "czasTask2Job3", czasyTrwania.get(9), IntVar(store, "czasTask3Job3", czasyTrwania.get(10), IntVar(store, "czasTask4Job3", czasyTrwania.get(11), = new IntVar[4]; IntVar(store, "czasTask1Job4", czasyTrwania.get(12), IntVar(store, "czasTask2Job4", czasyTrwania.get(13), IntVar(store, "czasTask3Job4", czasyTrwania.get(14), IntVar(store, "czasTask4Job4", czasyTrwania.get(15),
IntVar[] job3 job3[0] = new czasyTrwania.get(8)); job3[1] = new czasyTrwania.get(9)); job3[2] = new czasyTrwania.get(10)); job3[3] = new czasyTrwania.get(11)); IntVar[] job4 job4[0] = new czasyTrwania.get(12)); job4[1] = new czasyTrwania.get(13)); job4[2] = new czasyTrwania.get(14)); job4[3] = new czasyTrwania.get(15));
IntVar[][] durations = new IntVar[4][]; durations[0] = job1; durations[1] = job2; durations[2] = job3; durations[3] = job4;
task4[0] task1[1] task2[1] task3[1] task4[1] task1[2] task2[2] task3[2] task4[2] task1[3] task2[3] task3[3] task4[3] one = 1 makespan
= = = = = = = = = = = = =
= 105
Rys.1Rozwizaniezadaniaplanowani.Kolejnekoloryoznaczajkolejnezadania.
Otrzymanewynikizgadzajsizwynikamiuzyskanymiprzyrozwizaniuzadania metodamimatematycznymi.