Programowanie liniowe metoda sympleks Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW wykład z algebry liniowej Warszawa, styczeń 2012 Mirosław Sobolewski (UW) Warszawa, 2012 1 / 12
Metoda sympleks Twórca George Dantzig, USA 1947 rok Cel: rozwiazywanie zadania programowania liniowego określonego w postaci standardowej f (x 1,..., x n ) = c 1 x 1 + + c n x n min (f funkcja celu) przy warunkach a 11 x 1 + + a 1n x n = b 1 U :......, x 1 0,..., x n 0, gdzie b i 0 a m1 x m1 + + a mn x n = b m dla i = 1,..., m. W skrócie : a 11 a 1n Min{c x : Ax = b, x 0}, gdzie A =....., a m1 a mn b = b 1. b m, x = x 1. x n, c = c 1. c n. Zakładamy, że r(a) = m. Mirosław Sobolewski (UW) Warszawa, 2012 2 / 12
Schemat przeszukiwania: Zaczynajac od pewnego rozwiazania bazowego dopuszczalnego, przechodzimy kolejno do innych rozwiazań rozwiazań bazowych dopuszczalnych, w każdym kroku zastępujac jeden element zbioru bazowego innym, dopóki da się pomniejszać wartość funkcji celu f. Interpretacja geometryczna: Rozwiazania bazowe dopuszczalne = wierzchołki zbioru dopuszczalnego X. Wymiana jednego elementu w zbiorze bazowym = przejście do sasiedniego ( tzn. połaczonego krawędzia) wierzchołka X. Wędrówkę po wierzchołkach kończymy w wierzchołku najniższym w sensie funkcji celu f. Mirosław Sobolewski (UW) Warszawa, 2012 3 / 12
(Szczegóły metody sympleks ) Szukamy największej wartości funkcji g(x 1, x 2, x 3, x 4, x 5 ) = 16x 1 + 10x 2 + x 3, przy ograniczeniach : x 1 + x 3 = 2 x 2 + x 4 = 3 x 1 + x 2 + x 5 = 4 x 1 0,..., x 5 0 Sprowadzamy problem do postaci standardowej zastępujac maksymalizację funkcji g minimalizacja funkcji f (x 1, x 2, x 3, x 4, x 5 ) = 16x 1 10x 2 x 3. Inaczej można to zadanie zapisać w postaci f (x 1, x 2, x 3, x 4, x 5 ) = 16x 1 10x 2 x 3 min przy x 1 1 0 1 0 0 x 2 2 Ax = b, x 0, gdzie A = 0 1 0 1 0, x = x 3 1 1 0 0 1 x 4, B = 3 4 x 5 Mirosław Sobolewski (UW) Warszawa, 2012 4 / 12
(cd) Macierza rozszerzona układu jest: 1 0 1 0 0 2 0 1 0 1 0 3 1 1 0 0 1 4 Widzimy stad, że wybierajac jako zmienne bazowe (zależne) x 3, x 4, x 5 mamy rozwiazanie ogólne postaci: x 3 = 2 x 1 U 1 : x 4 = 3 x 2 x 5 = 4 x 1 x 2 Poczatkowym wektorem bazowym dopuszczalnym jest (x 1, x 2, x 3, x 4, x 5 ) = (0, 0, 2, 3, 4), zbiór bazowy to {3, 4, 5}. Wyrażamy funkcję celu f przy pomocy zmiennych wolnych x 1, x 2 : f (x) = 16x 1 10x 2 x 3 = 16x 1 10x 2 (2 x 1 ) = 2 15x 1 10x 2. Dla poczatkowego rozwiazania bazowego dopuszczalnego wartość f wynosi 2 (bo x 1 = x 2 = 0). Czy możemy ja polepszyć (tj. pomniejszyć)? Tak, powiększajac x 1 albo x 2. Mirosław Sobolewski (UW) Warszawa, 2012 5 / 12
(cd) Wybieramy więc x 1 jako nowa zmienna bazowa (kierujemy się tym, że współczynnik przy x 1 w zapisie f jest najbardziej ujemny - to reguła heurystyczna(=intuicyjna), a nie ściśle uzasadniona). Mirosław Sobolewski (UW) Warszawa, 2012 6 / 12
(cd) Wybieramy więc x 1 jako nowa zmienna bazowa (kierujemy się tym, że współczynnik przy x 1 w zapisie f jest najbardziej ujemny - to reguła heurystyczna(=intuicyjna), a nie ściśle uzasadniona). Musimy również określić, która ze zmiennych x 3, x 4, x 5 przestanie być zmienna bazowa. Wybór jest zdeterminowany przez to, by nowe rozwiazanie bazowe było dopuszczalne (tzn. nie pojawiły się ujemne wartości zmiennych). Mirosław Sobolewski (UW) Warszawa, 2012 6 / 12
(cd) Wybieramy więc x 1 jako nowa zmienna bazowa (kierujemy się tym, że współczynnik przy x 1 w zapisie f jest najbardziej ujemny - to reguła heurystyczna(=intuicyjna), a nie ściśle uzasadniona). Musimy również określić, która ze zmiennych x 3, x 4, x 5 przestanie być zmienna bazowa. Wybór jest zdeterminowany przez to, by nowe rozwiazanie bazowe było dopuszczalne (tzn. nie pojawiły się ujemne wartości zmiennych). Reguła jest następujaca: spośród dotychczasowych zmiennych bazowych (=zależnych) wybieramy tę, w której dotychczasowym przedstawieniu jako funkcji zmiennych wolnych współczynnik a przy nowej zmiennej bazowej jest ujemny i iloraz wyrazu stałego b przez ten współczynnik, czyli b/a jest największy(=jego moduł jest najmniejszy). Mirosław Sobolewski (UW) Warszawa, 2012 6 / 12
(cd) Wybieramy więc x 1 jako nowa zmienna bazowa (kierujemy się tym, że współczynnik przy x 1 w zapisie f jest najbardziej ujemny - to reguła heurystyczna(=intuicyjna), a nie ściśle uzasadniona). Musimy również określić, która ze zmiennych x 3, x 4, x 5 przestanie być zmienna bazowa. Wybór jest zdeterminowany przez to, by nowe rozwiazanie bazowe było dopuszczalne (tzn. nie pojawiły się ujemne wartości zmiennych). Reguła jest następujaca: spośród dotychczasowych zmiennych bazowych (=zależnych) wybieramy tę, w której dotychczasowym przedstawieniu jako funkcji zmiennych wolnych współczynnik a przy nowej zmiennej bazowej jest ujemny i iloraz wyrazu stałego b przez ten współczynnik, czyli b/a jest największy(=jego moduł jest najmniejszy). Czyli: dla x 3 iloraz b/a = 2/ 1, zaś dla x 5 iloraz b/a = 4/ 1, wybieramy więc x 3 przestanie ona być zmienna bazowa (proszę sprawdzić, że wybór x 5 da rozwiazanie bazowe niedopuszczalne). Mirosław Sobolewski (UW) Warszawa, 2012 6 / 12
Uwaga: jeśli wszystkie współczynniki przy nowej zmiennej bazowej sa nieujemne, to oznacza to, że funkcja celu f jest na zbiorze rozwiazań dopuszczalnych nieograniczona z dołu osiaga dowolnie niskie ujemne rozwiazania. Nowy zbiór bazowy to {1, 4, 5} i odpowiadajace mu rozwiazanie ogólne to: x 1 = 2 x 3 U 2 : x 4 = 3 x 2 x 5 = 2 x 2 +x 3 Mirosław Sobolewski (UW) Warszawa, 2012 7 / 12
Uwaga: jeśli wszystkie współczynniki przy nowej zmiennej bazowej sa nieujemne, to oznacza to, że funkcja celu f jest na zbiorze rozwiazań dopuszczalnych nieograniczona z dołu osiaga dowolnie niskie ujemne rozwiazania. Nowy zbiór bazowy to {1, 4, 5} i odpowiadajace mu rozwiazanie ogólne to: x 1 = 2 x 3 U 2 : x 4 = 3 x 2 x 5 = 2 x 2 +x 3 Możemy zapisać funkcję celu f (x) = 2 15x 1 10x 2 = 2 15(2 x 3 ) 10x 2 = 32 10x 2 + 15x 3 Mamy dopuszczalne rozwiazanie bazowe (2, 0, 0, 3, 2), w którym f osiaga 32. Możemy zmniejszyć wartość f zwiększajac x 2. Będzie ono, więc nowa zmienna bazowa. Ponieważ 3/ 1 < 2/ 1, zatem x 5 przestanie być zmienna bazowa. Mirosław Sobolewski (UW) Warszawa, 2012 7 / 12
Nowy zbiór bazowy to {1, 2, 4}, zaś odpowiadajace mu rozwiazanie ogólne to x 1 = 2 x 3 U 3 : x 2 = 2 +x 3 x 5 x 4 = 1 x 3 +x 5 Możemy przedstawić f (x) = 32 10(2 x 5 + x 3 ) + 15x 3 = 52 + 5x 3 + 10x 5. Ponieważ w zbiorze rozwiazań dopuszczalnych x 3 0, x 5 0 zatem f osiaga wartość najmniejsza = 52 dla x 3 = x 5 = 0 czyli dla rozwiazania bazowego dopuszczalnego (2, 2, 0, 1, 0). Zatem rozwiazanie pierwotnego problemu to max g = min f = 52 Mirosław Sobolewski (UW) Warszawa, 2012 8 / 12
Znajdowanie poczatkowego wektora bazowego dopuszczalnego Mamy zbiór X opisany standardowo przez Ax = b, x = [x 1,..., x n ] 0, gdzie A M m n, b M m 1, b 0. Jak stwierdzić, że X jest niepusty, i jeśli tak jest jak znaleźć wektor bazowy dopuszczalny? Mirosław Sobolewski (UW) Warszawa, 2012 9 / 12
Znajdowanie poczatkowego wektora bazowego dopuszczalnego Mamy zbiór X opisany standardowo przez Ax = b, x = [x 1,..., x n ] 0, gdzie A M m n, b M m 1, b 0. Jak stwierdzić, że X jest niepusty, i jeśli tak jest jak znaleźć wektor bazowy dopuszczalny? Stosuje się tzw. metodę sztucznej bazy, wprowadzajac dodatkowe zmienne, y 1,..., y m, macierz współczynników A przedłużajac o macierz jednostkowa I m. Tzn. macierz układu dla n + m zmiennych ma teraz postać [A I m b] M m (n+m+1) (R), z macierza współczynników A = [A I m ] M m (n+m) oraz x = [x 1,..., x n, y 1,..., y m ],i rozwiazujemy problem y 1 + + y n min przy warunkach A x = b, x 0. Ten problem ma zawsze rozwiazanie. Jeśli osiagamy min = 0 to X, w przeciwnym wypadku, tzn. min > 0 mamy X =. Mirosław Sobolewski (UW) Warszawa, 2012 9 / 12
Zbiór X R 4 opisany jest przez: 8x 1 + 3x 2 5x 3 + x 4 = 4 3x 1 + x 2 2x 3 x 4 = 1 x 1, x 2, x 3, x 4 0 Mirosław Sobolewski (UW) Warszawa, 2012 10 / 12
Zbiór X R 4 opisany jest przez: 8x 1 + 3x 2 5x 3 + x 4 = 4 3x 1 + x 2 2x 3 x 4 = 1 x 1, x 2, x 3, x 4 0 Wprowadzamy sztuczne zmienne y 1, y 2 i funkcję celu f (x 1,..., x 4, y 1, y 2 ) = y 1 + y 2 min przy warunkach 8x 1 + 3x 2 5x 3 + x 4 + y 1 = 4 3x 1 + x 2 2x 3 x 4 + y 2 = 1 x 1,..., x 4 0, y 1, y 2 0 Mirosław Sobolewski (UW) Warszawa, 2012 10 / 12
Zbiór X R 4 opisany jest przez: 8x 1 + 3x 2 5x 3 + x 4 = 4 3x 1 + x 2 2x 3 x 4 = 1 x 1, x 2, x 3, x 4 0 Wprowadzamy sztuczne zmienne y 1, y 2 i funkcję celu f (x 1,..., x 4, y 1, y 2 ) = y 1 + y 2 min przy warunkach 8x 1 + 3x 2 5x 3 + x 4 + y 1 = 4 3x 1 + x 2 2x 3 x 4 + y 2 = 1 x 1,..., x 4 0, y 1, y 2 0 y 1, y 2 sa poczatkowymi zmiennymi bazowymi (zależnymi) { y1 = 4 8x 1 3x 2 +5x 3 x 4 y 2 = 1 3x 1 x 2 +2x 3 +x 4 Mirosław Sobolewski (UW) Warszawa, 2012 10 / 12
Zbiór X R 4 opisany jest przez: 8x 1 + 3x 2 5x 3 + x 4 = 4 3x 1 + x 2 2x 3 x 4 = 1 x 1, x 2, x 3, x 4 0 Wprowadzamy sztuczne zmienne y 1, y 2 i funkcję celu f (x 1,..., x 4, y 1, y 2 ) = y 1 + y 2 min przy warunkach 8x 1 + 3x 2 5x 3 + x 4 + y 1 = 4 3x 1 + x 2 2x 3 x 4 + y 2 = 1 x 1,..., x 4 0, y 1, y 2 0 y 1, y 2 sa poczatkowymi zmiennymi bazowymi (zależnymi) { y1 = 4 8x 1 3x 2 +5x 3 x 4 y 2 = 1 3x 1 x 2 +2x 3 +x 4 Wyrażamy f przez zmienne niezależne: f = 5 11x 1 4x 2 + 7x 3. Mirosław Sobolewski (UW) Warszawa, 2012 10 / 12
możemy zmniejszyć f wybierajac x 2 jako nowa zmienna bazowa, natomiast y 2 przestanie być zmienna bazowa. Mirosław Sobolewski (UW) Warszawa, 2012 11 / 12
możemy zmniejszyć f wybierajac x 2 jako nowa zmienna bazowa, natomiast y 2 przestanie być zmienna bazowa. { x2 = 1 3x 1 +2x 3 +x 4 y 2 y 1 = 1 +x 1 x 3 4x 4 +3y 2 Mirosław Sobolewski (UW) Warszawa, 2012 11 / 12
możemy zmniejszyć f wybierajac x 2 jako nowa zmienna bazowa, natomiast y 2 przestanie być zmienna bazowa. { x2 = 1 3x 1 +2x 3 +x 4 y 2 y 1 = 1 +x 1 x 3 4x 4 +3y 2 Wyrażamy f przez nowe zmienne niezależne: f = 1 + x 1 x 3 4x 4 + 4y 2 Mirosław Sobolewski (UW) Warszawa, 2012 11 / 12
Jako nowa zmienna bazowa wprowadzamy x 3 natomiast y 1 staje się zmienna niebazowa (wolna): Mirosław Sobolewski (UW) Warszawa, 2012 12 / 12
Jako nowa zmienna bazowa wprowadzamy x 3 natomiast y 1 staje się zmienna niebazowa (wolna): { x2 = 3 x 1 +2x 3 7x 4 +2y 1 +5y 2 x 3 = 1 +x 1 4x 4 y 1 +3y 2 Mirosław Sobolewski (UW) Warszawa, 2012 12 / 12
Jako nowa zmienna bazowa wprowadzamy x 3 natomiast y 1 staje się zmienna niebazowa (wolna): { x2 = 3 x 1 +2x 3 7x 4 +2y 1 +5y 2 x 3 = 1 +x 1 4x 4 y 1 +3y 2 Wyrażamy f przez nowe zmienne niezależne: f = y 1 + y 2 Mirosław Sobolewski (UW) Warszawa, 2012 12 / 12
Jako nowa zmienna bazowa wprowadzamy x 3 natomiast y 1 staje się zmienna niebazowa (wolna): { x2 = 3 x 1 +2x 3 7x 4 +2y 1 +5y 2 x 3 = 1 +x 1 4x 4 y 1 +3y 2 Wyrażamy f przez nowe zmienne niezależne: f = y 1 + y 2 Otrzymaliśmy minf = 0, zatem mamy niepusty X i należy do niego dopuszczalny punkt bazowy (x 1, x 2, x 3, x 4 ) = (0, 3, 1, 0). Mirosław Sobolewski (UW) Warszawa, 2012 12 / 12