WOJSKOWA AKADEMIA TECHNICZNA
im. Jarosława Dąbrowskiego
WYDZIAŁ CYBERNETYKI
Metody informatycznego wspomagania decyzji
Autor pracy:
Łukasz Śledzik
Prowadzący:
dr Jarosław Olejniczak
Zad1
W fabryce układów scalonych czterech techników (A, B, C i D) produkuje trzy
układy produkt 1, 2 i 3). Fabryka może sprzedać miesięcznie 80 sztuk produktu 1,
50 sztuk produktu 2 i co najwyżej 50 sztuk produktu 3. Technik A potrafi
wytwarzać tylko produkty 1 i 3. Technik B potrafi wytwarzać tylko produkty 1 i 2,
technik C potrafi wytwarzać tylko produkt 3, a technik D potrafi wytwarzać tylko
produkt 2. Jedna sztuka każdego typu produktu przynosi następujący zysk: produkt
1-6 dolarów; produkt 2-7 dolarów; produkt 3-10 dolarów. Czas (w godzinach)
potrzebny każdemu technikowi do wytworzenia jednego produktu wygląda
następująco:
Produkt
Technik A
Technik B
Technik C
Technik D
1
2
2,5
Nie potrafi
Nie potrafi
2
Nie potrafi
3
Nie potrafi
3,5
3
3
Nie potrafi
4
Nie potrafi
Każdy technik może przepracować miesięcznie do 120 godzin. Jak
zmaksymalizować miesięczny zysk fabryki układów scalonych?
> # Definicja przestrzeni (rozmiar macierzy ograniczeń)
> library(lpSolveAPI)
> lprec <- make.lp(4, 3)
> # Wprowadzenie danych do macierzy ograniczeń
> set.column(lprec, 1, c(2, 2.5, 0, 0))
> set.column(lprec, 2, c(0, 3, 0, 3.5))
> set.column(lprec, 3, c(3, 0, 4, 0))
> # Definicja funkcji celu
> set.objfn(lprec,c(-6, -7, -10))
> # Definicja rodzaju warunków ograniczających
> set.constr.type(lprec,c("<=", "<=", "<=", "<="))
> # Wprowadzenie ograniczeń
> set.rhs(lprec,c(120, 120, 120, 120))
> set.bounds(lprec,upper=c(80, 50, 50),columns=c(1, 2, 3))
> # zmiana typu zmiennych (wartości całkowite) - integer
> set.type(lprec, 1, type = c("integer"))
> set.type(lprec, 2, type = c("integer"))
> set.type(lprec, 3, type = c("integer"))
> # rozwiązanie problemu
> solve(lprec)
[1] 0
> get.objective(lprec)
[1] -582
> get.variables(lprec)
[1] 12 30 30
> get.constraints(lprec)
[1] 114 120 120 105
>
Wnioski:
Maksymalny zysk wciągu jednego miesiąca wynosi 582 zł. Aby to osiągnąć należy
produkować:
−
12 szt. produktu 1
−
30 szt. produktu 2
−
30 szt. produktu 3
Technicy: B oraz C przepracują po 120h
Technik A 114h
Technik C 105h
Zad2
Zakład produkujący komputery wytwarza myszy, klawiatury i joysticki do gier
wideo. Zysk na jednej sztuce, nakład pracy na jedną sztukę, miesięczne
zapotrzebowanie i czas maszyny na jedną sztukę można znaleźć w zamieszczonej
niżej tabeli:
Myszy
Klawiatury
Joysticki
Zysk/sztuka
8 zł
11 zł
9 zł
Czas pracy/sztuka 0,2 godziny
0,3 godziny
O,24 godziny
Czas
maszyny/sztuka
0,04 godziny 0,055 godziny 0,04 godziny
Miesięczne
zapotrzebowanie
15000
25000
11000
Moce produkcyjne zakładu wynoszą miesięcznie 13000 godzin pracy ludzi i
3000 godzin pracy maszyn. Jak ustawić asortyment produkcji, aby zakład uzyskał
maksymalny zysk za jeden miesiąc?
> # Definicja funkcji celu
> set.objfn(lprec, c(-8, -11, -9))
> # Wprowadzenie ograniczeń
> set.constr.type(lprec, c("<=", "<="))
> set.rhs(lprec, c(13000, 3000))
> set.bounds(lprec, upper = c(15000, 25000, 11000), columns = c(1,2,3))
> # Zmiana typu zmiennych na integer
> set.type(lprec, 1, type=c("integer"))
> set.type(lprec, 2, type=c("integer"))
> set.type(lprec, 3, type=c("integer"))
> solve(lprec)
[1] 0
> get.objective(lprec)
[1] -488866
> get.variables(lprec)
[1] 14999 24534 11000
> get.constraints(lprec)
[1] 13000.00 2389.33
> lprec
Model name:
C1 C2 C3
Minimize -8 -11 -9
R1 0.2 0.3 0.24 <= 13000
R2 0.04 0.055 0.04 <= 3000
Kind Std Std Std
Type Int Int Int
Upper 15000 25000 11000
Lower 0 0 0
Wnioski:
Maksymalny zysk będzie osiągalny przy ustawieniu:
Ilość myszy: 14999
Ilość klawiatur: 24534
Ilość joysticków: 11000
Wartość maksymalnego zysku: 488866 zł