Słowo o metodzie simplex
Transkrypt
Słowo o metodzie simplex
Klasyczna metoda simplex'ów ● Problem mający rozwiązanie bez uciekania się do sztucznej bazy max ( 3⋅x 1+ 5⋅x 2 ) gdzie zbiór rozwiązań dopuszczalnych wyznaczony jest przez następujące ograniczenia: x1 – x 2 ≤3 x1 ≤5 2⋅x1 + 5⋅x 2 ≤25 xi ≥0 Rozwiązanie każdego zadania programowania liniowego (PL) – jeżeli istnieje – zawsze znajduje się w wierzchołku sympleksu, wypukłego zbioru wyznaczonego przez zbiór ograniczeń. Oryginalna metoda opracowana przez George Dantziga polega na przeszukiwaniu kolejnych wierzchołków w taki sposób, aby jednocześnie następował wzrost wartości funkcji celu (gdy wyznaczamy maksimum). Z powyższego wynika, że kluczowe dla algorytmu staje się wyznaczenie początkowego wierzchołka sympleksu. To może być zupełnie dowolny wierzchołek, ale w algorytmie rozwiązania spotyka się dwa przypadki: • punkt zerowy spełnia ograniczenia (jest wierzchołkiem sympleksu) – mamy pierwsze rozwiązanie dopuszczalne; • punkt zerowy nie spełnia wszystkich ograniczeń; wtedy wprowadzamy etap pośredni poprzez wprowadzenie sztucznych zmiennych do ograniczeń i wprowadzenie ich do funkcji celu; jeżeli w wyniku przekształceń uda się wyrugować te zmienne z rozwiązania bazowego to oznacza to, że trafiliśmy na wierzchołek sympleksu wyjściowego problemu i kolejne operacje wykonywane są jak dla poprzedniego przypadku. Poniżej obraz sympleksu – to zakreślony wypukły obszar – wyznaczony przez zbiór ograniczeń: x2 x1 – x2 ≤ 5 3 x1 ≤ 5 6 3x 1+ 5x 2= 0 2x1 1 0 1 3 5 x1 +5 x2 ≤ 25 Na wykresie pokazano (wykropkowane) proste równoległe do prostej funkcji celu przechodzące przez wierzchołki sympleksu. Swoje optimum zadanie przyjmuje w punkcie o współrzędnych (5, 3). Do tego punktu, wychodząc z początkowego rozwiązania bazowego – punktu o współrzędnych (0, 0), można dojść dwiema różnymi trasami: 1. (0, 0) (3, 0) (5, 2) (5,3) 2. (0, 0) (0, 5) (5, 3) Dla pierwszego zadania PL przerobimy osobno oba sposoby osiągania wierzchołka optymalnego. Pierwszy krok rozwiązania to sprowadzenie problemu do tzw. postaci kanonicznej. Postać kanoniczna problemu PL Rozwiązanie zadania PL wymaga, aby: • każde z ograniczeń było równościowe; w przypadku ograniczeń nierównościowych wprowadza się pomocnicze zmienne osłabiające – ang. slack (patrz dalej przykład); • każdy wyraz wolny bi był nieujemny; w przypadku wartości ujemnej wystarczy pomnożyć cały wiersz przez −1 ; • każda zmienna xi była nieujemna; jeżeli zmienna może być dowolnego znaku, to zamiast +. −. niej wprowadza się dwie zmienne pomocnicze xi =x i − xi , Problem w postaci kanonicznej po dodaniu zmiennych osłabiających x3 , x4 , x 5 : max ( 3⋅x 1+ 5⋅x 2 ) gdzie: x 1 – x 2 x 3=3 x 1 x 4=5 2⋅x 15⋅x 2x 5=25 x i≥0 Zmienne osłabiające tworzą jednocześnie początkową bazę – to macierz jednostkowa, utworzona z kolumn odpowiadających zmiennym x3, x 4, x 4 . Dowolna transformacje nie może zmienić kanoniczności postaci – wyrazy wolne nie mogą stać się ujemne. Całe zadanie umieścimy w następującej tabelce, gdzie kolejno wyróżnione grupy kolumn oznaczają: zmienne, zmienne osłabiające, zmienne sztucznej bazy, kolumnę wyrazów wolnych; proszę zwrócić uwagę, że zmienne osłabiające stworzyły pierwszą bazę naszego zadania. x1 x2 x3 x4 x5 x6 x7 1 −1 1 0 0 3 1 0 0 1 0 5 2 5 0 0 1 25 −3 −5 0 0 0 0 bj Początkowe rozwiązanie bazowe: (0, 0, 3, 5, 25) – elementy tworzące aktualną bazę wytłuszczono. Sposób pierwszy osiągnięcia wierzchołka Ujemne wartości w ostatnim wierszu tabeli rokują, że można znaleźć korzystniejszy wierzchołek, taki, że funkcja celu będzie miała większą wartość. Spełniony jest także inny niezbędny warunek: dodatnie wartości obecne w kolumnach, gdzie w ostatnim wierszu są wartości ujemne. Do bazy wprowadzimy zmienną x1 ; pytamy jaka zmienna opuści bazę? Pytanie jest uzasadnione, bo wszystkie wartości w tej kolumnie są dodatnie. Która jest ta właściwa? Ano należy kierować się koniecznością zachowania postaci kanonicznej zadania. W tym przypadku elementem centralnym (ang. pivot) będzie a 11 . Wybór innego elementu spowodowałby pojawienie się liczb ujemnych w kolumnie wyrazów wolnych (np. wybór elementu a 21 spowodowałby konieczność odjęcia od całego pierwszego wiersza wiersza drugiego – bo tylko wtedy a 11 stanie się zerem, ale niejako przy okazji na pozycji pierwszej kolumny wyrazów wolnych pojawiłaby się zakazana wartość ujemna: −2 . W przypadku wyboru a 31 jako elementu centralnego jest podobnie. Przy wyznaczaniu elementu centralnego, jeżeli elementów dodatnich w kolumnie k jest więcej niż jeden wybieramy ten, który spełnia warunek: bj min a jk W tabeli czerwonym kolorem oznaczono element, który opuści bazę, na zielono element centralny, który wchodzi do bazy: x1 x2 x3 x4 x5 x6 x7 bj 1 −1 1 0 0 3 1 0 0 1 0 5 2 5 0 0 1 25 −3 −5 0 0 0 0 rozwiązanie bazowe: (0, 0, 3, 5, 19) – rozwiązania należące do bazy wytłuszczono. Kolejne etapy transformacji czyli wybór kolejnych elementów centralnych, przedstawiono już bez komentarza: x1 x2 x3 x4 x5 x6 x7 1 −1 1 0 0 3 0 1 −1 1 0 2 0 7 −2 0 1 19 0 −8 3 0 0 9 b rozwiązanie bazowe: (3, 0, 0, 2, 19) x1 x2 x3 x4 x5 1 0 0 1 0 5 0 1 −1 1 0 2 0 0 5 −7 1 5 0 0 −5 8 1 25 rozwiązanie bazowe: (5, 2, 0, 0, 5) x6 x7 b x1 x2 x3 x4 x5 x6 x7 b 1 0 0 1 0 5 0 1 0 −0.4 0.2 3 0 0 1 −1.4 0.2 1 0 0 0 1 2 30 Końcowe rozwiązanie bazowe: (5, 3, 1, 0, 0) – i jednocześnie jest to rozwiązanie zadania. Wartość funkcji celu to liczba w dolnym prawym narożniku tabelki. Sposób drugi osiągnięcia wierzchołka Tym razem kandydat w drugiej kolumnie jest tylko jeden: x1 x2 x3 x4 x5 x6 x7 bj 1 −1 1 0 0 3 1 0 0 1 0 5 2 5 0 0 1 25 −3 −5 0 0 0 0 Początkowe rozwiązanie bazowe: (0, 0, 3, 5, 25) x1 x2 x3 x4 x5 x6 x7 b 1.4 0 1 0 0.2 8 1 0 0 1 0 5 0.4 1 0 0 0.2 5 −1 0 0 0 1 25 rozwiązanie bazowe: (0, 5, 8, 5, 0) x1 x2 x3 x4 x5 x6 x7 0 0 1 −1.4 0.2 1 1 0 0 1 0 5 0 1 0 −0.4 0.2 3 0 0 0 1 1 30 b Końcowe rozwiązanie bazowe: (5, 3, 1, 0, 0) – i jednocześnie rozwiązanie zadania. ● Problem mający rozwiązanie z zastosowaniem sztucznej bazy Jeżeli poprzednie zadanie uzupełnimy o jedno ograniczenie następującej postaci: x1 x 2≥1 to nasz sympleks będzie wyglądać jak poniżej – proszę zwrócić uwagę, że tym razem punkt zerowy (0, 0) już nie spełnia wszystkich ograniczeń czyli nie jest rozwiązaniem dopuszczalnym zadania: x2 x1 x1 – x2 ≤ 5 3 x1 ≤ 5 6 + x2 ≥ 1 3x 1+ 5x 2= 0 2x1 1 0 1 3 5 +5 x1 x2 ≤ 25 Po doprowadzeniu zadania do postaci kanonicznej dodatkowe ograniczenie zyskało ujemną zmienną osłabiającą x6 . Ponieważ takie zmienne osłabiające nie tworzą macierzy jednostkowej rozwiązanie uzupełniono o jedną sztuczną zmienną bazową x7 . Nasza tabelka przybrała postać: x1 x2 x3 x4 x5 x6 x7 bj 1 −1 1 0 0 0 0 3 1 0 0 1 0 0 0 5 2 5 0 0 1 0 0 25 1 1 0 0 0 −1 1 1 −3 −5 0 0 0 0 −3 −5 0 0 0 0 0 1 Początkowe rozwiązanie dla funkcji celu ze sztuczną bazą: ( 0, 0, 3, 5, 25, 0, 1) Oprócz wyjściowej funkcji celu, do tabelki dodano wiersz z pomocniczą funkcję celu o postaci: max ( 3⋅x 1+ 5⋅x 2−M⋅x7 ) W założeniu stała M jest dużą liczbą, chociaż akurat w zadaniu wybrano wartość 1 . Cel użycia dużej wartości współczynnika przy sztucznej zmiennej to „skłonienie algorytmu” do wyrugowania sztucznych zmiennych z rozwiązania bazowego, bo ich obecność w rozwiązaniu nie sprzyja osiągnięciu maksimum przez funkcję celu: składowa −M⋅x 7 staje się dokuczliwa. Podkreślmy to dobitnie: jeżeli baza rozwiązania zawiera jakiekolwiek sztuczne zmienne, absolutnym priorytetem jest wyrugowanie ich z bazy; to co dzieje się z bieżącą wartością funkcji celu na tym etapie ma znaczenie drugorzędne. Jeżeli uda się wyrugować wszystkie zmienne sztuczne z bazy rozwiązania, można odrzucić dodany ostatni wiersz tabelki a także kolumny sztucznych zmiennych; uzyskana w ten sposób tabelka zawiera dane odpowiadające (jakiemuś) punktowi dopuszczalnemu zadania wyjściowego. Jeżeli nie uda się wyrugować wszystkich sztucznych zmiennych z bazy rozwiązania dla funkcji celu ze sztuczną bazą, to zadanie wyjściowe nie ma rozwiązania – sympleks jest zbiorem pustym. x1 x2 x3 x4 x5 x6 x7 b 2 0 1 0 0 −1 1 4 1 0 0 1 0 0 0 5 −3 0 0 0 1 5 −5 20 1 1 0 0 0 −1 1 1 2 0 0 0 0 −5 2 0 0 0 0 −5 5 6 Kolejne rozwiązanie dla funkcji celu ze sztuczną bazą: ( 0, 1, 4, 5, 20, 0, 0) Proszę zwrócić uwagę, że po ustaleniu elementu centralnego (elementy oznaczone na zielono) i wymianie bazy, w rozwiązaniu dla funkcji celu ze sztuczną bazą znika składnik związany ze sztuczną zmienną x7 – przyjmuje on wartość zerową, x7 =0 bo zmienna przestała należeć do rozwiązania bazowego. Sztuczna zmienna x7 została wyrugowana z bazy – mamy pierwsze rozwiązanie dopuszczalne wyjściowego problemu, na rysunku jest to punkt o współrzędnych (0, 1). Odrzucamy dodatkowy wiersz tabelki, kolumny sztucznych zmiennych i wracamy do poprzedniego trybu obliczeń. Rozwiązanie bazowe wyjściowego problemu: ( 0, 1, 4, 5, 20, 0) Po wprowadzeniu do bazy x6 i dokonaniu stosownych przekształceń tabelka przyjmie postać x1 x2 x3 x4 x5 x6 x7 1.4 0 1 0 0.2 0 8 1 0 0 1 0 0 5 −0.6 0 0 0 0.2 1 4 0.4 1 0 0 0.2 0 5 −1 0 0 0 1 0 25 Rozwiązanie bazowe: ( 0, 5, 8, 5, 0, 4) Kolejne kroki przećwicz sam, zwłaszcza, że coś bardzo podobnego już było. b ● Problem nie mający rozwiązania (sympleks pusty) max ( 3⋅x 15⋅x 2 ) gdzie: x 1 – x 2≤3 x 1≤5 2⋅x 15⋅x 2≤25 x1 – 5⋅x 2≥30 x i≥0 Poniżej graficzna postać sympleksu: 2 ≥ 30 x1 – x2 ≤ 5 3 6 x x1 – 5 x1 ≤ 5 x2 3x 1+ 5x 2= 0 2x1 1 0 1 3 5 +5 x1 x2 ≤ 25 Zadanie ewidentnie nie może mieć rozwiązania – dwa zaznaczone na rysunku obszary nie mają części wspólnej; zobaczymy jak to objawia się w trakcie obliczeń. Dodane czwarte ograniczenie wymaga podobnego potraktowania jak poprzednio rozpatrywany przypadek: oprócz zmiennej osłabiającej trzeba również wprowadzić jedną zmienną sztuczną. Oto postać tabelki: x1 x2 x3 x4 x5 x6 x7 bj 1 −1 1 0 0 0 0 3 1 0 0 1 0 0 0 5 2 5 0 0 1 0 0 25 1 -5 0 0 0 −1 1 30 −3 −5 0 0 0 0 −3 −5 0 0 0 0 0 1 Początkowe rozwiązanie dla funkcji celu ze sztuczną bazą: ( 0, 0, 3, 5, 25, 0, 30) x1 x2 x3 x4 x5 x6 x7 b 1.4 0 1 0 0.2 0 0 8 1 0 0 1 0 0 0 5 0.4 1 0 0 0.2 0 0 5 3 0 0 0 1 −1 1 55 −1 0 0 0 1 0 −1 0 0 0 1 0 1 −5 25 Rozwiązanie dla sztucznej bazy: ( 0, 5, 8, 5, 0, 0, 55) x1 x2 x3 x4 x5 x6 x7 b 0 0 1 −1.4 0.2 0 0 1 1 0 0 1 0 0 0 5 0 1 0 −0.4 0.2 0 0 7 0 0 0 −3 1 −1 1 50 −1 0 0 0 1 0 −1 0 0 0 1 0 30 1 Rozwiązanie dla sztucznej bazy: ( 5, 7, 1, 0, 0, 0, 50) Nic więcej nie jesteśmy w stanie wykonać – nadal w bazie rozwiązania znajduje się sztuczna zmienna, która nie może w żaden sposób być usunięta. Wniosek: zadanie nie ma rozwiązania. ● Problem nie mający rozwiązania (sympleks nieograniczony) max ( 3⋅x 15⋅x 2 ) gdzie: x 1 – x 2≤3 x 1≤5 x i≥0 Tym razem usunęliśmy jedno z ograniczeń, to zamykające zbiór rozwiązań dopuszczalnych od góry; oto graficzny obraz sympleksu: x2 x1 – x2 ≤ 5 3 x1 ≤ 5 6 3x 1+ 5x 2= 0 1 0 1 3 5 x1 Poniżej tabelka dla zadania z pierwszym rozwiązaniem bazowym: x1 x2 x3 x4 x5 x6 x7 1 −1 1 0 3 1 0 0 1 5 −3 −5 0 0 0 x5 bj 0 Początkowe rozwiązanie bazowe ( 0, 0, 3, 5) x1 x2 x3 x4 1 −1 1 0 3 0 1 −1 1 2 0 -8 3 0 9 Kolejne rozwiązanie bazowe ( 3, 0, 0, 2) x6 x7 b x1 x2 x3 x4 x5 x6 x7 b 1 0 0 1 5 0 1 −1 1 2 0 0 −5 8 19 Kolejne rozwiązanie bazowe ( 5, 2, 0, 0) Jest obiecujący kierunek zmian, ale nie da się ustalić elementu centralnego dla kolejnego przekształcenia i wyznaczenia nowej bazy rozwiązania. Znamiona tego widoczne był już na pierwszym diagramie: kolumna druga wyglądała obiecująco ale nie można było tam ustalić elementu centralnego. Wniosek: obszar sympleksu jest nieograniczony – zadanie z tego powodu nie ma rozwiązania. ● zadanie na minimum funkcji celu – problem PL ze sztuczną bazą Od czasu do czasu spotykamy zadanie PL gdzie poszukujemy rozwiązania, dla którego funkcja celu przyjmuje wartość minimalną. Jak sobie wtedy radzić? Zacznijmy od rzeczy najprostszej – od funkcji celu: min (c 1⋅x1 + c2⋅x 2+ c3⋅x 3 + ⋯) = −−min(c 1⋅x 1+ c2⋅x 2+ c3⋅x3 + ⋯) = −max( c1⋅x 1+ c 2⋅x 2+ c 3⋅x 3+ ⋯) = max−(c1⋅x 1 + c 2⋅x 2 + c3⋅x 3 + ⋯) = max (−c 1⋅x 1−c 2⋅x 2−c 3⋅x 3+ ⋯) Widać, że zadanie polegające na minimalizacji funkcji celu jest równoważne zadaniu na maksimum z zanegowanymi współczynnikami. Ograniczenia pozostają nietknięte. Dla ilustracji wykorzystamy przykład, który pojawił się wcześniej, oto pełne jego sformułowanie: min (3⋅x1 + 5⋅x 2 ) gdzie zbiór rozwiązań dopuszczalnych wyznaczony jest przez następujące ograniczenia: x1 – x 2≤3 x1 ≤5 2⋅x1 5⋅x 2 ≤25 x1 x 2≥1 xi ≥0 Przekształcenie funkcji celu jest trywialne – będziemy poszukiwać maksimum funkcji celu o następującej postaci: max (−3⋅x 1−5⋅x 2 ) Obszar rozwiązań dopuszczalnych wygląda jak poniżej: x2 x1 x1 – x2 ≤ 5 3 x1 ≤ 5 6 + x2 1 5x 2 ≥ 3x 1+ =0 2x1 1 0 1 3 5 x1 +5 x2 ≤ 25 Postać funkcji celu została zachowana, jedynie zmieniono kwalifikację, zamiast maksimum tym razem poszukamy minimum funkcji celu – dla skończonego sympleksu oba zadania mają sens. Gołym okiem widać, że rozwiązaniem zadania będzie punkt o współrzędnych (1, 0). Po doprowadzeniu zadania do postaci kanonicznej jedno z ograniczeń zyskało ujemną zmienną osłabiającą x6 . Ponieważ taki zestaw zmiennych osłabiających nie tworzy macierzy jednostkowej całość uzupełniono o jedną sztuczną zmienną bazową x7 . Nasza tabelka przybrała postać: x1 x2 x3 x4 x5 x6 x7 bj 1 −1 1 0 0 0 0 3 1 0 0 1 0 0 0 5 2 5 0 0 1 0 0 25 1 1 0 0 0 −1 1 1 3 5 0 0 0 0 3 5 0 0 0 0 0 1 Oprócz wyjściowej funkcji celu, do tabelki dodano wiersz z pomocniczą funkcję celu o postaci: max ( −3⋅x 1−5⋅x 2 −M⋅x 7 ) Początkowe rozwiązanie dla funkcji celu ze sztuczną bazą: ( 0, 0, 3, 5, 25, 0, 1) Po dokonaniu wymiany bazy – element centralny oznaczony jest na zielono – następna tabelka ma poniższą postać: x1 x2 x3 x4 x5 x6 x7 b 2 0 1 0 0 −1 0 4 1 0 0 1 0 0 0 5 −3 0 0 0 1 5 0 20 1 1 0 0 0 −1 1 1 −2 0 0 0 0 5 −2 0 0 0 0 5 −5 −4 Rozwiązanie dla funkcji celu ze sztuczną bazą: ( 0, 1, 4, 5, 20, 0, 0) Proszę zwrócić uwagę, że – formalnie rzecz biorąc – nastąpił spadek wartości funkcji celu. Ale to nie jest pełna (i poprawna) interpretacja. Dopiero gdy wyrugujemy wszystkie elementy sztucznej bazy można mówić o jakiejkolwiek wartości funkcji celu, bo dopiero wtedy mamy rozwiązanie dopuszczalne – takie, które spełnia wszystkie ograniczenia. Ponieważ sztuczna zmienna x7 została wyrugowana z bazy – oznacza to, że uzyskano pierwsze rozwiązanie dopuszczalne wyjściowego problemu, na rysunku jest to punkt o współrzędnych (0, 1). Odrzucamy dodatkowy wiersz tabelki, kolumny sztucznych zmiennych i wracamy do trybu obliczeń właściwego dla zadania bez sztucznych zmiennych. Rozwiązanie bazowe wyjściowego problemu: ( 0, 1, 4, 5, 20, 0) Po wprowadzeniu do bazy zmiennej x1 i dokonaniu stosownych przekształceń tabelka przyjmie finalną postać: x1 x2 x3 x4 x5 x6 x7 b 0 −2 1 0 0 1 2 0 −1 0 1 0 1 5 0 3 0 0 1 2 23 1 1 0 0 0 −1 1 0 2 0 0 1 3 −3 Końcowe rozwiązanie bazowe: ( 1, 0, 2, 5, 23, 0) Zgodnie z oczekiwaniami, maksimum funkcja celu osiąga w punkcie o współrzędnych (1, 0). Wartość minimalna funkcji celu wynosi 3. (18:00 12.11.2014)