You are on page 1of 5

ProgramowanieOgraniczeniowe

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

job2 job3 job2 job3

job3 job2 job1 job2

job4 job4 job4 job1

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),

IntVar[] job2 = new IntVar[4];

job2[0] = czasyTrwania.get(4)); job2[1] = czasyTrwania.get(5)); job2[2] = czasyTrwania.get(6)); job2[3] = czasyTrwania.get(7));

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;

Poprawniezdefiniowaneczasyzadapozwalajnaichprzypisaniedokonkretnych maszyn,anastpnierozwizaniezadaniaprzyuyciumetodyDepthFirstSearchwchodzcej wskadbibliotekiJaCoP. Wynikotrzymanyporozwizaniuzadaniazawieralistzadaprzypisanychdomaszyn orazczasrozpoczcia.


*** Store czasTask1Job1 czasTask2Job1 czasTask3Job1 czasTask4Job1 czasTask1Job2 czasTask2Job2 czasTask3Job2 czasTask4Job2 czasTask1Job3 czasTask2Job3 czasTask3Job3 czasTask4Job3 czasTask1Job4 czasTask2Job4 czasTask3Job4 czasTask4Job4 task1[0] = 0 task2[0] = 30 task3[0] = 75 = = = = = = = = = = = = = = = = 20 15 5 5 10 15 10 5 15 5 10 10 30 10 15 15

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

= = = = = = = = = = = = =

130 20 50 65 125 30 45 55 115 45 75 85 100

= 105

Rys.1Rozwizaniezadaniaplanowani.Kolejnekoloryoznaczajkolejnezadania.

Otrzymanewynikizgadzajsizwynikamiuzyskanymiprzyrozwizaniuzadania metodamimatematycznymi.

You might also like