Badania operacyjne Problem Model matematyczny Metoda rozwiązania Znaleźć optymalny program produkcji. Zmaksymalizować 1 +3 2 2 3 (1) Przy ograniczeniach 3 1 2 +2 3 7 (2) 2 1 +4 2 12 (3) 4 1 +3 2 +8 3 10 (4) 1, 2, 3 0 (5) Algorytm simple Metoda Chaczijana Algorytm programowania dynamicznego 8 Programowanie liniowe Algorytm sympleks 9 1
Plan wykładu Problem programowania liniowego Postać kanoniczna Postać standardowa Algorytm sympleks Początkowa baza dopuszczalna Tablica sympleks Warunek optymalności rozwiązania Zmiana bazy Transformacja tablicy Metoda sztucznej bazy Metoda graficzna 10 Przykład zastosowania PL Mały warsztat naprawia trzy rodzaje urządzeń B1, B2, B3. Każde urządzenie zawiera trzy podstawowe elementy: E 1, E 2, E 3. Naprawa polega na demontażu i/lub montażu elementów E 1,E 2,E 3 według określonej technologii. Tabela przedstawia przebieg każdej naprawy, zysk z naprawy urządzenia określonego typu oraz zapas elementów E 1,E 2, E 3 w firmie. 11 2
Przykład zastosowania PL Element Urządzenie E1 E2 E3 zysk [$/szt] B1 3-2 -4-1 B2-1 4 3 3 B3 2 0 8-2 Zapas [szt.] 7 12 10 Aby określić optymalny z punktu widzenia maksymalizacji zysku zakres napraw budujemy model liniowy problemu. 12 Sformułowanie problemu Niech 1 oznacza planowaną liczbę sztuk urządzenia B1 2 oznacza planowaną liczbę sztuk urządzenia B2 oznacza planowaną liczbę sztuk urządzenia B3 3 Całkowity zysk z naprawy urządzeń: 1 +3 2 2 3 Zakład ma zapas 7 sztuk elementu E1 Liczba sztuk elementu E1 potrzebna do realizacji produkcji: Podobnie dla elementów E2 i E3: 3 1 2 +2 3 7 2 1 + 4 2 12 4 1 +3 2 +8 3 10 13 3
Sformułowanie problemu Zmaksymalizować 1 +3 2 2 3 (1) Przy ograniczeniach 3 1 2 +2 3 7 (2) 2 1 +4 2 12 (3) 4 1 +3 2 +8 3 10 (4) 1, 2, 3 0 (5) 14 Model liniowy zmaksymalizować n j= 1 j= 1 c przy ograniczeniach a b, i = 1, K,m ograniczenia n j j ij j i 0, j = 1, K,n j funkcja celu (kryterium) 15 4
Model liniowy zmaksymalizować n j= 1 n j= 1 c przy ograniczeniach a b, i = 1, K,m parametry j j ij j i 0, j = 1, K,n j zmienna decyzyjna (i) (ii) (iii) 16 Model liniowy postać kanoniczna zmaksymalizować n j= 1 j= 1 c przy ograniczeniach a b, i = 1, K,m n j j ij j i 0, j = 1, K,n j 17 5
Model liniowy zminimalizować n j= 1 j= 1 c przy ograniczeniach a b, i = 1, K,m n j j ij j i 0, j = 1, K,n j 18 c = Model liniowy postać standardowa zmaksymalizować przy ograniczeniach [ c,c, K,c ] 1 2 n 1 2 = K n c A = b 0 a11 K a1n A = K K K am1 K amn b1 b 2 b = K bm 19 6
Podstawowe definicje Rozwiązaniem dopuszczalnym zagadnienia programowania liniowego jest wektor =( 1, 2,..., n ), spełniający warunki (ii) oraz (iii). Rozwiązaniem bazowym układu równań (ii) nazywamy rozwiązanie układu powstałego przez przyrównanie do zera n m zmiennych przy założeniu, że wyznacznik współczynników pozostałych m zmiennych jest niezerowy. Te m zmiennych nazywamy zmiennymi bazowymi. Niezdegenerowanym rozwiązaniem bazowym dopuszczalnym nazywamy bazowe rozwiązanie dopuszczalne, w którym wszystkie zmienne bazowe są dodatnie. Maksymalnym (minimalnym) rozwiązaniem dopuszczalnym jest rozwiązanie dopuszczalne, które maksymalizuje (minimalizuje) funkcję celu (i). 20 Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik >0, i B; b. przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 21 7
Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik 0, i B; b. przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 22 Postać kanoniczna problemu PL Zmaksymalizować: 1 + 3 2 2 3 Przy ograniczeniach: 3 1 2 + 2 3 7 2 1 + 4 2 12 4 1 + 3 2 + 8 3 10 1, 2, 3 0 23 8
Postać standardowa problemu PL Wszystkie ograniczenia mają postać równań dodajemy zmienne osłabiające (s i 0), z Jak to zrobić? zerowymi współczynnikami w funkcji celu Wektor prawych stron ograniczeń jest nieujemny (b 0) mnożymy obustronnie równanie przez ( 1) Funkcja celu jest maksymalizowana Jak to zrobić? mnożymy funkcję celu przez ( 1) Jak to zrobić? 24 Sprowadzenie ograniczeń do postaci równań Funkcja celu jest maksymalizowana Zmaksymalizować: 3 1 1 + 3 3 2 2 2 3 3 + 0s 1 + 0s 2 + 0s 3 Przy ograniczeniach: 3 1 2 + 2 3 + s 1 = 7 2 1 + 4 2 + s 2 = 12 4 1 + 3 2 + 8 3 + s 3 10 = 10 Wektor prawych stron ograniczeń jest dodatni 1, 12, 23, s 31, s 2 0, s 3 0 25 9
Problem w postaci standardowej Zmaksymalizować: 1 + 3 2 2 3 + 0s 1 + 0s 2 + 0s 3 Przy ograniczeniach: 3 1 2 + 2 3 + s 1 = 7 2 1 + 4 2 + s 2 = 12 4 1 + 3 2 + 8 3 + s 3 = 10 1, 2, 3, s 1, s 2, s 3 0 26 Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. Wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik 0, i B; b. Przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 27 10
Dopuszczalne rozwiązanie bazowe Rozwiązaniem bazowym jest rozwiązanie, które powstaje przez przyrównanie do zera n m zmiennych i rozwiązanie powstałego układu równań. Jeżeli w rozwiązaniu bazowym Uwaga: wartości w postaci standardowej zawsze n>m wszystkich zmiennych są nieujemne, to jest ono rozwiązaniem bazowym dopuszczalnym. 28 Znalezienie bazy początkowej Zmaksymalizować: 1 + 3 2 2 3 Przy ograniczeniach: 3 1 2 + 2 3 + s 1 = 7 2 1 + 4 2 + s 2 = 12 4 1 + 3 2 + 8 3 + s 3 = 10 Niech 1 = 2 = 3 = 0 1, 12, 23, s 13, s 2 0, s 3 0 29 11
Znalezienie bazy początkowej Niech 1 = 2 = 3 = 0 3 1 2 + 2 3 + s 1 = 7 2 1 + 4 2 + s 2 = 12 4 1 + 3 2 + 8 3 + s 3 = 10 Jest to rozwiązanie bazowe dopuszczalne 30 Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. Wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik 0, i B; b. Przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 31 12
i 1 2 3 4 32 i Numer wiersza tablicy. Liczba wierszy: m+1. 1 2 3 4 33 13
i B Nazwy wektorów tworzących bazę. 1 s 1 2 s 2 3 s 3 4 34 i B c B 1 s 1 0 Współczynniki przy zmiennych bazowych w funkcji celu. 2 s 2 0 3 s 3 0 4 35 14
i B c B Wartości zmiennych RHS bazowych w bieżącym rozwiązaniu. 1 s 1 0 7 2 s 2 0 12 3 s 3 0 10 4 36 i B c B RHS 1 2 3 s 1 s 2 s 3 1 s 1 0 7 2 s 2 0 12 3 s 3 0 10 4 Nazwy wszystkich zmiennych. 37 15
Współczynniki przy zmiennych w funkcji celu. 1 2 3 s 1 s 2 s 3 1 s 1 0 7 2 s 2 0 12 3 s 3 0 10 4 38 Współczynniki przy zmiennych w ograniczeniach. 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 39 16
j i B z = c 1 2 3 s 1 s 2 s 3 i ij 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 Wiersz wskaźnikowy. Wartości c j -z j 40 j i B z = c 1 2 3 s 1 s 2 s 3 i ij 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 Wiersz wskaźnikowy. Wartości c j -z j 41 17
1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 Wartość funkcji celu w bieżącym rozwiązaniu. 42 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 43 18
Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. Wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik 0, i B; b. Przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 44 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 45 19
1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 46 Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. Wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik >0, i B; b. Przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: Jeżeli ' wszystkie = ik ij ij ik 0, i B, to funkcja celu może lk przyjmować dowolnie duże c. wrócić wartości do kroku (rozwiązanie 4. nieograniczone). ' = lk 47 20
kolumna k 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 48 kolumna k 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 12/4 < 10/3 49 21
kolumna k 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 2 s 2 0 2 4 0 0 1 0 12 wiersz l 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 element centralny przekształcenia 50 kolumna k 1 2 3 s 1 s 2 s 3 wiersz l 1 s 1 0 3 1 2 1 0 0 7 2 2 3 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 zmienna 2 (z kolumny k) zastępuje w bazie zmienną s 2 (z wiersza l) 51 22
Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. Wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik 0, i B; b. Przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 52 kolumna j kolumna k 1 2 3 s 1 s 2 s 3 wiersz i wiersz l 1 s 1 0 3 1 2 1 0 0 7 2 2 3 2 4 0 0 1 0 12 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 53 23
kolumna j kolumna k 1 2 3 s 1 s 2 s 3 1 s 1 0 3 1 2 1 0 0 7 wiersz i 2 2 3 2 4 0 0 1 0 12 wiersz l 3 s 3 0 4 3 8 0 0 1 10 4 1 3 2 0 0 0 0 * =2,5 54 kolumna k 1 2 3 s 1 s 2 s 3 1 s 1 0 5/2 0 2 1 1/4 0 10 2 2 3 2 4 0 0 1 0 12 wiersz l 3 s 3 0 5/2 0 8 0 3/4 1 1 4 1/2 0 2 0 3/4 0 55 24
kolumna k 1 2 3 s 1 s 2 s 3 1 s 1 0 5/2 0 2 1 1/4 0 10 2 2 3 1/2 1 0 0 1/4 0 3 wiersz l 3 s 3 0 5/2 0 8 0 3/4 1 1 4 1/2 0 2 0 3/4 0 56 Algorytm sympleks 1. sprowadzić problem do postaci standardowej; 2. znaleźć dopuszczalne rozwiązanie bazowe; 3. zbudować początkową tablicę sympleks; 4. wybrać największy element wiersza wskaźnikowego ( m+1,k ); 5. jeżeli jego wartość jest dodatnia, to a. Wyznaczyć element lk o najmniejszym ilorazie b ik / ik dla ik 0, i B; b. Przekształcić tablicę sympleks przyjmując element lk za element centralny przekształcenia stosując następujące wzory: ' = ik ij ij c. wrócić do kroku 4. lk ' = lk 57 25
Tablica sympleks 1 2 3 s 1 s 2 s 3 1 s 1 0 5/2 0 2 1 1/4 0 10 2 2 3 1/2 1 0 0 1/4 0 3 3 s 3 0 5/2 0 8 0 3/4 1 1 4 1/2 0 2 0 3/4 0 9 58 Tablica sympleks 1 2 3 s 1 s 2 s 3 1 s 1 0 5/2 0 2 1 1/4 0 10 2 2 3 1/2 1 0 0 1/4 0 3 3 s 3 0 5/2 0 8 0 3/4 1 1 4 1/2 0 2 0 3/4 0 9 59 26
Tablica sympleks 1 2 3 s 1 s 2 s 3 1 s 1 0 5/2 0 2 1 1/4 0 10 2 2 3 1/2 1 0 0 1/4 0 3 3 s 3 0 5/2 0 8 0 3/4 1 1 4 1/2 0 2 0 3/4 0 9 60 Tablica sympleks 1 2 3 s 1 s 2 s 3 1 s 1 0 5/2 0 2 1 1/4 0 10 2 2 3 1/2 1 0 0 1/4 0 3 3 s 3 0 5/2 0 8 0 3/4 1 1 4 1/2 0 2 0 3/4 0 9 61 27
Końcowa tablica sympleks 1 2 3 s 1 s 2 s 3 1 1 1 1 0 4/5 2/5 1/10 0 4 2 2 3 0 1 2/5 1/5 3/10 0 5 3 s 3 0 0 0 10 1-1/2 1 11 4 0 0-12/5-1/5-4/5 0 11 62 1 =4 Rozwiązanie 2 =5 optymalne 3 =0 z=11 s 1 i=0 B c B 1 3 2 0 0 0 RHS s 2 =0 s 3 =11 1 2 3 s 1 s 2 s 3 1 1 1 1 0 4/5 2/5 1/10 0 4 2 2 3 0 1 2/5 1/5 3/10 0 5 3 s 3 0 0 0 10 1-1/2 1 11 4 0 0-12/5-1/5-4/5 0 11 63 28
Interpretacja rozwiązania Maksymalny zysk to 11$. Należy naprawić 4 szt. urządzenia B1 i 5 szt. urządzenia B2, natomiast nie należy przyjmować zleceń na naprawę urządzenia B3. Wartości zmiennych uzupełniających oznaczają zapas części, który pozostanie w magazynie po zakończeniu produkcji. Elementy E1 i E2 zostaną zużyte, natomiast pozostanie 11 szt. Elementu E3. 64 Problem w postaci standardowej Zmaksymalizować: 1 + 3 2 2 3 + 0s 1 + 0s 2 + 0s 3 Przy ograniczeniach: 3 1 2 + 2 3 + s 1 = 7 2 1 + 4 2 + s 2 = 12 4 1 + 3 2 + 8 3 + s 3 = 10 1, 2, 3, s 1, s 2, s 3 0 65 29
Przykład 2 Zminimalizować: 2 1 + 2 + 3 Przy ograniczeniach: 1 + 3 2 + 3 3 2 1 + 2 + 2 3 5 2 1 + 2 2 + 3 2 1, 2, 3 0 66 Postać standardowa Zmaksymalizować: - (2 1 + 2 + 3 ) Przy ograniczeniach: 1 + 3 2 + 3 s 1 = 3 2 1 + 2 + 2 3 + s 2 = 5 Baza dopuszczalna? 2 1 + 2 2 + 3 s 3 = 2 1, 2, 3 0 67 30
Metoda sztucznej bazy Algorytm sympleks 68 Metoda sztucznej bazy I. Wprowadzamy k m zmiennych sztucznych. Zmienne te są nieujemne, a ich współczynniki w funkcji celu przyjmują wartość ( M), gdzie M jest dużą liczbą dodatnią. II. Tablicę sympleks ze sztucznymi wektorami przekształcamy jak zwykłą tablicę, dopóki: 1. wszystkie sztuczne wektory zostaną wyeliminowane z bazy, tj. mamy bazę dopuszczalną pierwotnego zagadnienia; 2. brak dodatnich współczynników przy M w wierszu wskaźnikowym a. jeżeli sztuczna część funkcji celu jest dodatnia, to zagadnienie nie ma rozwiązania dopuszczalnego; b. jeśli sztuczna część funkcji celu jest równa zero, to mamy zdegenerowane rozwiązanie dopuszczalne pierwotnego zagadnienia, które zawiera co najwyżej jeden sztuczny wektor. Przekształcamy tablicę sympleks wprowadzając do bazy wektor, który odpowiada największemu dodatniemu elementowi wiersza wskaźnikowego przy zerowej wartości współczynnika przy M. III. Kolumny odpowiadające zmiennym sztucznym, które opuściły bazę można eliminować z obliczeń. IV. Po otrzymaniu bazy dopuszczalnej zagadnienia pierwotnego kontynuujemy realizację algorytmu sympleks aż do otrzymania rozwiązania problemu pierwotnego. 69 31
Sztuczna baza Zmaksymalizować: -(2 1 + 2 + 3 ) Ma 1 Ma 3 Przy ograniczeniach: 1 + 3 2 + 3 s 1 + a 1 = 3 2 1 + 2 + 2 3 + s 2 = 5 2 1 + 2 2 + 3 s 3 + a 3 = 2 1, 2, 3, s 1, s 2, s 3, a 1, a 3 0 1 = 2 = 3 = s 1 = s 3 = 0 70 Sztuczna baza Zmaksymalizować: 2 1 + 2 + 3 Ma 1 Ma 3 Przy ograniczeniach: a 1 = 3 s 2 = 5 a 3 = 2 1 = 2 = 3 = s 1 = s 3 = 0 71 32
i B c B 2 1 1 0 0 0 -M -M RHS 1 2 3 s 1 s 2 s 3 a 1 a 3 1 a 1 -M 1 3 1-1 0 0 1 0 3 2 s 2 0 2 1 2 0 1 0 0 0 5 3 a 3 -M 2 2 1 0 0-1 0 1 2 4 2+3M 1+5M 1+2M -M 0 -M 0 0-5M 72 Rozwiązanie EploreLP.ee 73 33
Przykład 3 Zminimalizować: 2 1 + 3 2 Przy ograniczeniach: 1 + 3 2 5 1 + 2 2 2 5 1 + 2 7 1, 2 0 74 Rozwiązanie EploreLP.ee 75 34
Podsumowanie Sformułowanie problemu PL w postaci standardowej Algorytm sympleks Metoda sztucznej bazy Metoda graficzna 76 35