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ł