Metoda simpleks
Przykładowe zadanie
Rozwiążmy następujące zadanie metodą simpleks.
Piekarnia produkuje 3 rodzaje bułek (B1, B2, B3), które odpowiednio kosztują 1, 3 i 2 złote. Na wypiek bułki pierwszej (B1) potrzeba 1 dag mąki, 1 dag cukru. Na wypiek bułki drugiej (B2) potrzeba 2 dag mąki, 1 dag cukru i 1 dag rodzynek. Bułka trzecia (B3) wymaga 1 dag mąki, 1 dag cukru i 2 dag rodzynek. Przy czym w magazynie piekarni dostępne jest tylko 5 dag mąki, 4 dag cukru i 1 dag rodzynek. Nasze zadanie polega na ustaleniu ile i jakich bułek powinniśmy upiec aby otrzymać największy zysk, biorąc pod uwagę ograniczone zapasy składników.
Na początek trzeba prawidłowo wypełnić tabelkę z danymi (Tabelka.1.)
Tabelka.1. Dane do zadania
Następnie należy doprowadzić zadanie do postaci standardowej:
Mając prawidłowo zestawioną tabelkę nie ma najmniejszego problemu z ułożeniem układu w postaci standardowej.
-> Najpierw układamy funkcję celu.
Naszym celem jest odpowiedź na pytanie: ile upiec pierwszych bulek B1 (x1), ile drugich B2 (x2) a ile trzecich B3 (x3) aby otrzymać maksymalny zysk ?. Cel dotyczył będzie kosztów - interesuje więc nas ostatni wiersz tabelki.
Przemnażamy nasze niewiadome x1, x2, x3 (ilości bułek) przez ich ceny (ostatni wiersz: 1, 3, 2), które po zsumowaniu mają nam dać jak największą wartość.
1x1 + 3x2 + 2x3 --> MAX
-> Następnie sporządzamy układ nierówności.
W tym miejscu nałożymy ograniczenia na zużycie podczas wypieku składników do ilości jaka jest dostęna w magazynie piekarni. Wykorzystamy dane z wnętrza tabelki (pomarańczowa część), które przemnożymy przez szukane niewiadome (x1, x2, x3). Poczym nałożymy ograniczenie, że suma ich nie może być większa niż zapas w magazynie (ostatnia kolumna oznaczona na niebiesko).
1x1 + 2x2 + 1x3 <= 5
1x1 + 1x2 + 1x3 <= 4
0x1 + 1x2 + 2x3 <= 1
-> Na koniec nakładamy ograniczenia na rozwiązanie.
Logicznym jest, że nie możemy upiec minus 5 bułek - dlatego zakładamy, że rozwiązanie będzie większe lub równe zero.
x1 >= 0, x2 >= 0, x3 >= 0
Ostatecznie - postać standardowa układu
1x1 + 3x2 + 2x3 --> MAX
1x1 + 2x2 + 1x3 <= 5
1x1 + 1x2 + 1x3 <= 4
0x1 + 1x2 + 2x3 <= 1
x1 >= 0, x2 >= 0, x3 >= 0
Kolejny krok to doprowadzenie do postaci kanonicznej układu:
W tym kroku pozbywamy sie wszystkich nierówności. Zrobimy to poprzez dodanie do naszych nierówności zmiennych swobodnych x4, x5, x6. Zmienne te dodajemy również do funkcji celu - jednak nie wpłyną a one na wartość zysku gdyż dodawane są ze współczynnikiem = 0.
Postać kanoniczna układu
1x1 + 3x2 + 2x3 + 0x4 + 0x5 + 0x6 --> MAX
1x1 + 2x2 + 1x3 + x4 = 5
1x1 + 1x2 + 1x3 + x5 = 4
0x1 + 1x2 + 2x3 + x6 = 1
x1 >= 0, x2 >= 0, x3 >= 0, x4 >= 0, x5 >= 0, x6 >= 0
Na koniec doprowadzamy do bazowej postaci kanonicznej układu:
W tym miejscu należy upewnić się, czy każde z równań posiada dodatkową zmienną (oprócz x1, x2, x3) z dodatnim współczynnikiem = 1.
Po czym wstawiamy do każdego równania zmienne występujące w pozostałych równaniach. Dodajemy je ze współczynnikiem = 0, w kolejności od najmniejszego do największego indeksu.
Bazowa postać kanoniczna układu
1x1 + 3x2 + 2x3 + 0x4 + 0x5 + 0x6 --> MAX
1x1 + 2x2 + 1x3 + 1x4 + 0x5 + 0x6 = 5
1x1 + 1x2 + 1x3 + 0x4 + 1x5 + 0x6 = 4
0x1 + 1x2 + 2x3 + 0x4 + 0x5 + 1x6 = 1
x1 >= 0, x2 >= 0, x3 >= 0, x4 >= 0, x5 >= 0, x6 >= 0
Teraz możemy przystąpić do tworzenia tabelki metody simpleks
Tabelka.2. Tabelka metody simpleks
Tabelkę wypełniamy na podstawie bazowej postaci kanonicznej układu. Pierwszy wiersz (kolor zielony) to przepisane współczynniki funkcji celu. W drugi wiersz tabelki (pierwszy pomarańczowy wiersz) wpisujemy nazwy wszystkich zmiennych. Kolejne pomarańczowe wiersze wypełniamy liczbami stojącymi przy tych zmiennych w równaniach - odpowiednio pierwszy pusty wiersz (trzeci od góry tabelki) to pierwsze równanie, drugi wiersz - drugie równanie, itd.
Przedostatnią kolumnę (kolor niebieski, po prawej) wypełniamy liczbami stojącymi po prawej stronie równań.
Zostały nam jeszcze do wypełnienia dwie pierwsze kolumny (kolor granatowy, po lewej). Pierwszą wypełniamy liczbami stojącymi przy zmiennych swobodnych w funkcji celu, natomiast drugie ich nazwami.
Dwa ostatnie wiersze (brązowy, szary i czerwona komórka) oraz ostatnią kolumnę (fioletową) pozostawiamy na razie puste.
Mając przygotowaną tabelkę bierzemy się za obliczenia
Krok.1.
Tabelka.3. Tabelka metody simpleks
W pierwszym kroku należy wyliczyć dwa ostatnie wiersze.
Pierwszy z nich wyliczamy jako iloczyn skalarny pierwszej kolumny po lewej (granatowy kolor) oraz kolejnej kolumny współczynników (kolor pomarańczowy). Na początek wszystkie wyszły = 0.
Ostatni wiersz - wskaźniki optymalności - liczymy odejmując od cen (kolor zielony) wiersz drugi od dołu (kolor brązowy) z wyliczonymi przed chwilą wartościami. Wskaźniki te pozwalają nam określić czy dane rozwiązanie jest rozwiązaniem optymalnym.
Jeżeli wszystkie wskaźniki będą niedodatnie w przypadku maksymalizacji f-kcji celu lub nieujemne dla minimalizacji f-kcji celu wówczas nasze rozwiązanie będzie optymalne.
Pozostała ostatnia komórka do wyliczenia (czerwony kolor) - jest to wartość funkcji celu dla bieżącego rozwiązania. Obliczamy ją jako wektor skalarny pierwszej kolumny (granatowy kolor) i kolumny przedostatniej (niebieski kolor).
Ponieważ współczynniki optymalności mają wartości dodatnie - rozwiązanie nie jest optymalne.
Krok.2.
Kolejny krok to znalezienie największej wartości w ostatnim wierszu (szarym - wskaźniki optymalności) w przypadku maksymalizacji funkcji celu, lub najmniejszej w przypadku jej minimalizacji. Maksymalizujemy f-kcję celu więc szukamy maksymalnego wskaźnika optymalności (kryterium wejścia). Jest to wartość = 3. Po czym zaznaczamy całą kolumnę, w której znaleźliśmy max. wskaźnik.
Następnie wyliczamy kryteria wyjścia (ostatnia, fioletowa kolumna) jako iloraz elementu z niebieskiej kolumny i z kolumny, którą wcześniej zaznaczyliśmy.
Tabelka.4. Tabelka metody simpleks
Krok.3.
W kroku trzecim szukamy najmniejszej wartości w ostatniej kolumnie (fioletowej - kryterium wyjścia). Bierzemy pod uwagę tylko wartości nieujemne. Następnie zaznaczamy cały wiersz, w którym znaleźliśmy kryterium wyjścia.
Wiemy teraz, jaką zmienną niebazową opłaca się wprowadzić do bazy. Inaczej mówiąc - jaką zmienną koloru pomarańczowego wprowadzić do kolumny granatowej (po lewej stronie).
Wymieniamy zmienną bazową (kolumna granatowa) znajdującą się w zaznaczonym wierszu (jest nią x6 ) na zmienną niebazową (wiersz pomarańczowy) znajdującą się w zaznaczonej kolumnie (jest nią x2 ). Wraz z zmienną przenosimy odpowiadający jej współczynnik z funkcji celu (wartość z zielonego wiersza).
Tabelka.5. Tabelka metody simpleks
Krok.4.
Mamy już nową bazę. Należy teraz dla niej odświeżyć tabelkę. Na początek wykasujmy nieaktualne już dane z dwóch ostatnich wierszy i z ostatniej kolumny.
Najpierw zaktualizujemy współczynniki (pomarańczowy kolor) oraz niebieską kolumnę po prawej stronie.
etap.1.
Zacznijmy od wiersza, w którym znaleźliśmy kryterium wyjścia. Obliczamy w nim nowe wartości jako iloraz wartości z kolejnej komórki tego wiersza przez wartość z komórki znajdującej się na przecięciu wiersza ze znalezionym kryterium wyjścia i kolumny ze znalezionym kryterium wejścia
(Tabelka.6. etap.1.).
etap.2.
Przejdźmy teraz wiersz wyżej. Tutaj współczynniki wyliczamy nieco inaczej mianowicie: odejmujemy od kolejnej komórki tego wiersza iloczyn wartości znajdującej się na przecięciu tego wiersza i kolumny, w której znaleźliśmy kryterium wejścia oraz wartości obliczonych w etapie 1 (wartości z nowej tabelki) - znajdujących się w kolejnych komórkach wiersza, w którym znaleźliśmy kryterium wyjścia (Tabelka.6. etap.2.).
etap.3.
Na tym etapie postępujemy identycznie jak w etapie.2. z tym, że przenosimy się wiersz wyżej (Tabelka.6. etap.3.)
Krok.5.
Kolejny krok do wyliczenie wskaźników pomocniczych, wskaźników optymalności oraz wartość funkcji celu dla bieżącego rozwiązania tak jak zostało to pokazane w kroku.1. (Tabelka.7.)
Ponieważ współczynniki optymalności mają wartości dodatnie - rozwiązanie nie jest optymalne.
Tabelka.7. Tabelka metody simpleks
Krok.6.
Szukamy kolejnego rozwiązania. Wymazujemy nieaktualne już zaznaczenie kolumny z kryterium wejścia i wiersza z kryterium wyjścia. Po czym szukamy nowego kryterium wejścia oraz wyliczamy wartości fioletowej kolumny po prawej stronie, wg opisu w kroku.2. (Tabelka.7.)
Tabelka.8. Tabelka metody simpleks
Krok.7.
Teraz należy odszukać kryterium wyjścia i zastąpić zmienną bazową x4 zmienną niebazową x1, wg opisu w kroku.3. (Tabelka.7.)
Tabelka.9. Tabelka metody simpleks
Krok.8.
Dalej postępując wg opisu w krokach 4 i 5 otrzymamy w wyniku tabelkę jak poniżej (Tabelka.10.).
Zauważmy, że żaden współczynnik nie jest dodatni - wynika stąd, że otrzymaliśmy rozwiązanie optymalne
Tabelka.10. Rozwiązanie optymalne
Jak odczytać rozwiązanie?
Tabelka.11. Odczytywanie rozwiązania
Aby odczytać rozwiązanie interesować nas będą tylko nazwy zmiennych umieszczone po lewej stronie w granatowej ramce oraz odpowiadające im wartości zawarte w ramce niebieskiej po prawej stronie. Przyda też się ostatnia czerwona komórka zawierająca zysk.
Rozwiązanie:
x...