Wykład 6. Programowanie liniowe
Zakład może wytwarzać dwa produkty: P 1 i P 2. Ich produkcja jest limitowana dostępnymi zasobami trzech środków: S 1, S 2, S 3. Zasoby tych środków wynoszą odpowiednio, 14, 8 i 16 jednostek. Nakład środka S 1 na wytworzenie produktu P 1 wynosi 2 jednostki, a na wytworzenie produktu P 2 - również 2 jednostki. Nakłady środka S 2 wynoszą odpowiednio, 1 i 2 jednostki, natomiast środka S 3-4 i 0 jednostek. Zysk osiągany z wytworzenia jednostki produktu P 1 wynosi 2 jednostki, a z wytworzenia jednostki produktu P 2-3 jednostki. Należy zaplanować produkcję tak aby maksymalizować zysk. Zmienne decyzyjne: x 1, x 2 - planowana wielkość produkcji wyrobu odpowiednio, P 1, P 2. Funkcja celu: Ograniczenia: F x 1, x 2 = 2x 1 + 3x 2 2x 1 + 2x 2 14 x 1 + 2x 2 8 4x 1 + 0x 2 16 x 1 0, x 2 0
2x 1 + 2x 2 14 2x 1 + 3x 2 = 12 4x 1 16 2x 1 + 3x 2 = 18 Funkcja celu: F x 1, x 2 = 2x 1 + 3x 2 Ograniczenia: 2x 1 + 2x 2 14 x 1 + 2x 2 8 4x 1 + 0x 2 16 x 1 0, x 2 0 x 1 + 2x 2 8 x 2 0 xf 2 ( x) = 3 x 1 = 4 x 2 = 2 x 1 0 2x 1 + 3x 2 = 0 2x 1 + 3x 2 = 14
Zadanie jak poprzednio, z tym że łączna produkcja nie może być mniejsza niż 8 2x 1 + 2x 2 14 2x 1 + 3x 2 = 14 x 1 + 2x 2 8 4x 1 16 2x 1 + 3x 2 = 18 Funkcja celu: F x 1, x 2 = 2x 1 + 3x 2 Ograniczenia: 2x 1 + 2x 2 14 x 1 + 2x 2 8 4x 1 + 0x 2 16 x 1 + x 2 8 x 1 0, x 2 0 x 2 0 xf 2 ( x) = 3 x 1 + x 2 8 D x = Zbiór rozwiązań dopuszczalnych jest pusty x 1 0
Zadanie jak na wstępie, z tym że zysk jednostkowy dla produktu P 2 wynosi 4 2x 1 + 2x 2 14 x 1 = 0 x 2 = 4 x 1 + 2x 2 8 2x 1 + 4x 2 = 8 x 2 0 Zbiór rozwiązań alternatywnych xf Funkcja celu: 4x F x 1, x 2 = 2x 1 + 4x 2 1 16 Ograniczenia: 2x 1 + 2x 2 14 x 1 + 2x 2 8 4x 1 + 0x 2 16 x 1 = 4 x 1 0, x 2 0 x 2 = 2 2x 1 + 4x 2 = 20 2 ( x) = 4 x 1 0 2x 1 + 4x 2 = 16
Rozważmy problem planowania produkcji, w którym występuje jedynie ograniczenie dotyczące środka S 3 (jego zużycie nie może przekraczać 16 jednostek) oraz sformułowano dolne ograniczenie na łączną wielkość produkcji, która nie może być mniejsza od 3 jednostek. Zysk z poszczególnych produktów jak poprzednio. Funkcja celu: F x 1, x 2 = 2x 1 + 3x 2 x 1 + x 2 3 4x 1 16 Ograniczenia: 4x 1 + 0x 2 16 x 1 + x 2 3 x 1 0, x 2 0 x 2 0 xf 2 ( x) = 3 2x 1 + 3x 2 = 16 Rozwiązanie nieograniczone x 1 0 2x 1 + 3x 2 = 12
x F x = min x D x F x D x = x R s, φ l x = 0, l = 1, 2,, L, ψ m x 0, m = 1, 2,, M F x = c T x = c s x s S s=1 S φ l x = a T l x b l = a ls x s b l = 0 l = 1, 2,, L s=1 S ψ m x = a T m x b m 0 = a ms x s b m 0 m = 1, 2,, M x s 0 s = 1, 2,, S s=1
1. Rozwiązanie leży w wierzchołku
2. Rozwiązanie leży na odcinku
3. Rozwiązanie nieograniczone lub 4. Zbiór rozwiązań dopuszczalnych jest pusty t.j.: D x =
F x = 2x 1 + x 2 min D x = {x R 2, x 1 x 2 + 1 0, 2x 1 + 3x 2 6 0, x 1, x 2 0} x F x = 2 1 x F x = 2 1
F(x) = c T x A: D X = x R s, Ax b = 0 L, x 0 S lub B: D x = {x R s, Ax b 0 L, x 0 S } c = c 1 c S, b = b 1, x = b L x 1, A SxL = x S a 11 a 1S a L1 a LS
ҧ ҧ ҧ B A 1 a T L x b l 0 wprowadzamy sztuczną zmienną x S+1 0 a l T x + x S+1 b l = 0 czyli ഥa l = a L1 a LS 1, x ҧ = x 1 x S x S+1, c ҧ = c 1 cs 0 F x = ഥa l T c T x x b L = 0
A B 2 a l T x b l = 0 a l T x b l 0 (a l T x b l ) 0 3 x s - nie jest ograniczone x s = x s x s x s 0, x s 0 x ҧ = x 1 x s 1 x s s x x s+1 x s, c ҧ = c 1 c s 1 c s c s c s+1 c s, ഥa l = a l1 a ls 1 a ls a ls a ls+1 a ls
F x = 2x 1 + x 2 F x = 2x 1 + x 2 +0x 3 +0x 4 x 1 x 2 + 1 0 x 1 x 2 + x 3 + 1 = 0 x 3 0 2x 1 + 3x 2 6 0 2x 1 + 3x 2 + x 4 6 = 0 x 4 0 A = 1 1 1 0 2 3 0 1, b = 1 6, x = x 1 x 2 x 3 x 4, c = 2 1 0 0
F x = c T x D X = x R s : Ax b = 0 L, x 0 L x, λ = c T x + λ T Ax b μ T x x L x, λ = c + A T λ μ = 0 S λ L x, λ = Ax b = 0 L!!! μ T μ L = μ T x = 0 μ 0 S x 0 S
Rozwiązanie dopuszczalne x D x Rozwiązanie Bazowe Ax = b Rz A = L S L x B = B 1 b B macierz L kolumn z macierzy A maksymalna liczba? S L = S! L! S L! Rozwiązanie Bazowe Dopuszczalne x B 0 L Niezdegenerowane Rozwiązanie Bazowe Dopuszczalne x B > 0 L
1. Wyznaczenie rozwiązania początkowego 2. Kryterium zbieżności zatrzymanie procedury 3. Przechodzenie z jednej bazy do drugiej 4. Postępowanie przy rozwiązaniach zdegenerowanych
Warunek zatrzymania procedury Ax = b x B = B 1 b - rozwiązanie bazowe x B = B 1 Ax Ax b = 0 L /B 1 B 1 Ax B 1 b = 0 L c T x = c T x c T B B 1 Ax B 1 b = c T c T B B 1 A x c T BB 1 b = c T c T B B 1 A x c T Bx B
c 1 c k c S Zmienne bazowe c B h 0 h 1 h k h S h s0 h sk h sk 0 x j1 c j1 h 10 h 11 h 1k h 1s x jl c jl h l0 h l1 h lk h ls x jl c jl h L0 h L1 h Lk h Ls c 1 z 1 c k z k c s z s z k = s I B c s h sk h ls h ls ; h lk s = 1, 2,, S h is = h is h ikh ls h lk i = 0, 1,, S s I B \{l}
1. Wyznaczamy początkową bazę dopuszczalną 2. Badamy czy c c B B 1 A 0 S. Jeżeli tak to x B - rozwiązanie problem x = [x B 0] 3. Wstawiamy do bazy k takie, że c k z k = min 1 s S (c s z s ) 4. Badamy, czy h k 0, jeśli tak funkcja nieograniczona 5. Wyrzucamy z bazy l takie, że 6. I B I B l k h l0 = min h {h s0, h lk 1 s S h sk > 0} sk I B = {j 1, 2,, S x j jest elementem bazy } 7. Jeżeli wskaźnik optymalności zmiennej nie bazowej jest równy 0 to istnieje kolejne rozwiązanie (rozwiązania alternatywne)
c 1 c k c S Zmienne bazowe c B h 0 h 1 h k h S h s0 h sk h sk 0 x j1 c j1 h 10 h 11 h 1k h 1s x jl c jl h l0 h l1 h lk h ls x jl c jl h L0 h L1 h Lk h Ls c 1 z 1 c k z k c s z s z k = s I B c s h sk h ls h ls ; h lk s = 1, 2,, S h is = h is h ikh ls h lk i = 0, 1,, S s I B \{l}
F x = 2x 1 3x 2 F x = 2x 1 3x 2 + 0x 3 + 0x 4 + 0x 5 2x 1 + 2x 2 14 0 2x 1 + 2x 2 + x 3 = 14 x 1 + 2x 2 8 0 x 1 + 2x 2 + x 4 = 8 4x 1 16 0 4x 1 + x 5 = 16 F x = [ 2 3 0 0 0] 2 2 1 0 0 1 2 0 1 0 4 0 0 0 1 x 1 x 2 x 3 x 4 x 5 = 14 8 16 x 1 x 2 x 3 x 4 x 5
-2-3 0 0 0 Zmienne c bazowe B h 0 h 1 h 2 h 3 h 4 h 5 h 0 h 2 x 3 0 14 2 2 1 0 0 14 2 x 4 0 8 1 2 0 1 0 8 2 x 5 0 16 4 0 0 0 1-0 -2-3 0 0 0 I B = {3, 4, 5}
-2-3 0 0 0 Zmienne c bazowe B h 0 h 1 h 2 h 3 h 4 h 5 h 0 h 1 x 3 0 6 1 0 1-1 0 6 1 x 2-3 4 1 1 0 1 0 4 2 2 1 2 x 5 0 16 4 0 0 0 1 16 1 2 0 0 3 2 0 4
x B -2-3 0 0 0 Zmienne bazowe c B h 0 h 1 h 2 h 3 h 4 h 5 x 3 0 2 0 0 1-1 1 4 x 2-3 2 0 1 0 1 2 1 8 x 1-2 4 1 0 0 0 1 4 0 0 0 3 2 1 8 0 Rozwiązanie [4 2 2 0 0]
Ax = b x 0 S Zmodyfikuj zbiór Ax + Ix a = b x 0, x a 0 Zadanie pomocnicze min x a 1 T x a
F x = c T x + M1 T x a Przy ograniczeniach Ax + IX a = b, x 0, x A 0
29
F x = x T D X + c T x+d D x = x R s, Ax = b, x 0 L x, λ = x T D x + C T x + d + λ T (Ax b) = x L x, λ = c + 2D x A T λ 0 = x L x, λ 0 x x L x, λ = 0 λ L x, λ = 0 x T X L x, λ = x T c + 2D x A T λ = 0 λ L x, λ = Ax b = 0 c + 2D x A T λ = 0 x T = 0 Ax = b
Ax = b 2D x A T λ = c x T = 0, x 0, 0 A 0 0 2D A T I x λ = b c x 0, 0, x T = 0
Teraz sztuczne zmienne należy usunąć Stosujemy zadanie programowania liniowego Przy ograniczeniach F u = 1 T u A 0 0 0 0 2D A T A T I E Zadanie programowania liniowego x λ λ u = b c
Bx B = b - rozwiązanie bazowe Ax = b 2D x + A T λ +Eu = c D B u sztuczna zmienna u 0 - macierz, której kolumny macierzy D odpowiadają A w B E diagonalna Δj = +1 c j 2d Bj x B 0 1 c j 2d Bj x B < 0 u j = c j 2d Bj x B, j = 1, 2,, S, λ = 0, = 0 d Bj - j-ty wiersz macierzy D B
34