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 15⋅x 2x 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 15⋅x 2 )
gdzie:
x 1 – x 2≤3
x 1≤5
2⋅x 15⋅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 15⋅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)

Podobne dokumenty