Jeżeli zadanie PL opisane jest macierzą, która nie ma postaci tablicy sympleks, to by móc stosować metodę sympleks stosujemy chwyt genialny w swej prostocie - dopisujemy macierz jednostkową. Dokładniej:
Dwufazowa metoda sympleks
Badamy zadanie:
![]()
![]()
![]()
macierzą układu jest ![]()
Mnożąc w razie potrzeby niektóre równania przez
możemy
przyjąć, że
. Aby uzyskać
dopisujemy macierz
jednostkową i otrzymujemy tablicę sympleks
.
Odpowiada temu układ równań
![]()
gdzie ![y=\left[\begin{array}[]{c}y_{{1}}\\
y_{{2}}\\
\vdots\\
y_{{t}}\end{array}\right]\quad A=\left[\begin{array}[]{cccc}a_{{1,1}}&a_{{1,2}}&\ldots&a_{{1,n}}\\
\vdots&\vdots&\ddots&\vdots\\
a_{{t,1}}&a_{{t,2}}&\ldots&a_{{1t,n}}\end{array}\right]](wyklady/op1/mi/mi1754.png)
Pierwsza faza
Rozwiązujemy zadanie ![]()
![]()
![]()
zadanie
jest ograniczone ponieważ
. Dodatkowo jeżeli
należy do
obszaru dopuszczalnego zadania pierwotnego, czyli
to
jest punktem optymalnym
gdyż
![[A|I]\overline{p}=A\left[\begin{array}[]{c}p_{1}\\
\vdots\\
p_{n}\end{array}\right]+I\left[\begin{array}[]{c}0\\
\vdots\\
\par
\end{array}\right]=b](wyklady/op1/mi/mi775.png)
zaś ![]()
I Przypadek:
Jeżeli w rozwiązaniu optymalnym zadania
to wielościan
jest zbiorem pustym (zadanie pierwotnie sprzeczne).
II Przypadek:
Jeżeli
to
opisująca wierzchołek optymalny
zadania
pozwala nam opisać wierzchołek
zadania pierwotnego.
![]()
a) Jeżeli wszystkie zmienne
są niebazowe
to macierz powstała po wykreśleniu kolumn z nimi związanych jest
opisująca wierzchołek obszaru dopuszczalnego zadania
pierwotnego.
Rzeczywiście. Jeżeli
jest
wierzchołkiem opisanym
to
, ![]()
(
zawiera macierz jednostkową)
powstała z
przez operacje
elementarne na wierszach, więc opisuje ten sam wielościan.
b) Niech
będzie zmienną bazowa. Przyjmijmy, że kolumna
odpowiadająca
ma jedynkę w j-tym wierszu i pozostałe
współrzędne
.
jeżeli wiersz j-ty ma tylko jeden element niezerowy
(
- ty wiersz
jest zerowy ) to znaczy, że
i
były układem zależnym. Taki wiersz i kolumny można wykreślić (
w praktyce zostaje).
Jeżeli oprócz jedynki odpowiadającej
istnieje
w j-tym wierszu
macierzy
to wybieramy go jako element centralny i
po przekształceniach elementarnych otrzymujemy
, w której
jest niebazowe, zaś
jest dołączone do bazy.
Po wykonaniu I fazy otrzymujemy
opisującą wierzchołek obszaru
dopuszczalnego
lub informację, że zadanie było sprzeczne.
Druga faza:
Najpierw budujemy wiersz kosztów zredukowanych
![]()
Koszty zredukowane to
gdzie
to
gdy
- bazowa. Wektor
wyliczamy
wstawiając do równania ![]()
równania
pochodzące z
= ![\left[\begin{array}[]{cccc|c}a_{{1,1}}&a_{{1,2}}&...&a_{{1_{{n}}}}&b_{{1}}^{*}\\
\vdots&\vdots&\ddots&\vdots&\vdots\\
a_{{t,1}}&a_{{t,2}}&...&a_{{t,n}}&b_{t}^{*}\end{array}\right]](wyklady/op1/mi/mi816.png)
Dalej zadanie rozwiązujemy prosta metodą sympleks.
Badamy zadanie:
![]()
![]()
![]()
![]()
![]()
I faza:
Wprowadzamy sztuczne zmienne
i
i funkcje celu i otrzymujemy:
![]()
![]()
![]()
![]()
Zamieniamy teraz funkcję celu podstawiając:
i
.
Otrzymujemy:
![]()
Zadanie opisujemy tablicą:
![\overset{\text{baza sztuczna}}{\begin{array}[]{rrrrrr|r}x_{{1}}&x_{{2}}&x_{{3}}&x_{{4}}&y_{{1}}&y_{{2}}&\\
-11&-4&7&0&0&0&-5\\
\hline 8&3&-5&1&1&0&4\\
3&(1)&-2&-1&0&1&1\end{array}}](wyklady/op1/mi/mi752.png)
Opuściliśmy tu kolumnę odpowiadającą zmiennej
bo, jak wcześniej zauważyliśmy, kolumna ta nie ulega zmianie podczas rozwiązywania.
Wybieramy kolumnę poprawiającą
.
i element
centralny zaznaczamy nawiasem
![\begin{array}[]{rrrrrr|r}1&0&-1&-4&0&4&-1\\
\hline-1&0&(1)&4&1&-3&1\\
3&1&-2&-1&0&1&1\end{array}](wyklady/op1/mi/mi828.png)
![\begin{array}[]{rrrrrr|r}0&0&0&0&1&1&0\\
\hline-1&0&1&4&1&-3&1\\
1&1&0&7&2&-5&3\end{array}](wyklady/op1/mi/mi744.png)
Zmienne sztuczne wypadły z bazy więc możemy je wykreślić.
Pozostała tablica opisuje wierzchołek startowy
.
Wracamy do pierwotnej funkcji celu i liczymy koszty zredukowane:
![]()
i otrzymujemy tablicę sympleks:
![\begin{array}[]{cccc|c}-2&0&0&3&3\\
\hline-1&0&1&4&1\\
(1)&1&0&7&3\end{array}](wyklady/op1/mi/mi746.png)
Pierwsza kolumna wyznacza krawędź poprawiającą. Idąc nią otrzymujemy.
![\begin{array}[]{rrrr|r}0&2&0&17&9\\
\hline 0&1&1&11&4\\
1&1&0&7&3\end{array}](wyklady/op1/mi/mi851.png)
Ta tablica opisuje jedyny wierzchołek optymalny
,
w
którym
![]()
Rozwiążmy zadanie:
![]()
![]()
![]()
![]()
![]()
I faza:
Wprowadzamy sztuczne zmienne
i
i funkcje celu
![]()
![]()
![]()
co daje tablicę sympleks
![\left[\begin{array}[]{rrrcrr|r}-3&-2&4&-5&0&0&-8\\
\hline 2&1&-1&(6)&1&0&3\\
1&1&-3&-1&0&1&5\end{array}\right]](wyklady/op1/mi/mi824.png)
stosując prosty algorytm metody sympleks otrzymujemy kolejno:
![\left[\begin{array}[]{rcrrrr|r}-\frac{4}{3}&-\frac{7}{6}&\frac{19}{6}&0&\frac{5}{6}&0&-\frac{11}{2}\\
\hline\frac{1}{3}&\left(\frac{1}{6}\right)&-\frac{1}{6}&1&\frac{1}{6}&0&\frac{1}{2}\\
\frac{4}{3}&\frac{7}{6}&-\frac{19}{6}&0&\frac{1}{6}&1&\frac{11}{2}\end{array}\right]](wyklady/op1/mi/mi738.png)
![\left[\begin{array}[]{rrrrrr|r}1&0&2&7&2&0&-2\\
\hline 2&1&-1&6&1&0&3\\
-1&0&-2&-7&-1&1&2\end{array}\right]](wyklady/op1/mi/mi842.png)
Nad kreską są same liczby nieujemne a funkcja celu jest równa -2 zatem zadanie jest sprzeczne (obszar dopuszczalny jest zbiorem pustym).
1. Metoda częściowej bazy sztucznej
W metodzie dwufazowej wystarczy dodać tylko tyle zmiennych sztucznych, by otrzymać macierz jednostkową.
np.
![]()
![]()
![]()
![]()
![]()
W tym przypadku mamy
zmiennych bazowych i gdy
dodajemy tylko
zmiennych sztucznych.
![]()
![]()
![]()
![]()
![]()
![]()
W przypadku rzeczywistych obliczeń ( na maszynach) zwykle nie
stosuje się częściowej bazy sztucznej. Nie trzeba wówczas
wyszukiwać w macierzy
kolumn zero - jedynkowych.
2. Można obie fazy rozwiązać na jednej
. W zadaniu:
![]()
![]()
![]()
Rozważamy obie funkcje celu jednocześnie.
![]()
![]()
![]()
![]()
Budujemy tablicę sympleks mającą dwa wiersze nad kreską.
,
gdzie
![\overline{B}=\left[\begin{array}[]{c|c|c}1&0&0...0\\
0&1&1...1\\
\hline 0&0&I\end{array}\right]](wyklady/op1/mi/mi803.png)
W fazie 1 maksymalizujemy
i w rezultacie otrzymujemy,
że zadanie jest sprzeczne lub
opisująca
wierzchołek startowy (łącznie z kosztami zredukowanymi funkcji
).
Ta metoda nigdy nie prowadzi do zmniejszenia liczby operacji (np. wyszło, że zadanie jest sprzeczne, więc naliczyliśmy się zupełnie niepotrzebnie).
Badamy zadanie:
![]()
![]()
![]()
![]()
![]()
I faza:
Wprowadzamy sztuczne zmienne
i
i funkcje celu
![]()
![]()
![]()
![]()
Wybieramy kolumnę poprawiającą
.
i element centralny
zaznaczamy nawiasem
![\left[\begin{array}[]{rrrrrr|rr|r}1&0&1&0&-1&-4&0&4&-1\\
0&1&-1&0&-1&-1&0&2&2\\
\hline 0&0&-1&0&\left(1\right)&4&1&-3&1\\
0&0&3&1&-2&-1&0&1&1\end{array}\right]](wyklady/op1/mi/mi834.png)
![\left[\begin{array}[]{rrrrrr|rr|r}1&0&0&0&0&0&1&1&0\\
0&1&-2&0&0&3&1&-1&3\\
\hline 0&0&-1&0&1&4&1&-3&1\\
0&0&1&1&0&7&2&-5&3\end{array}\right]](wyklady/op1/mi/mi757.png)
Koniec fazy pierwszej. Wszystkie sztuczne zmienne są niebazowe wykreślamy wiersze i kolumny związane ze sztucznymi zmiennymi.
![\left[\begin{array}[]{rrrrr|r}1&-2&0&0&3&3\\
\hline 0&-1&0&1&4&1\\
0&\left(1\right)&1&0&7&3\end{array}\right]](wyklady/op1/mi/mi797.png)
Kolumna
wyznacza krawędź poprawiającą. Idąc nią otrzymujemy.
![\left[\begin{array}[]{cccccc}1&0&2&0&17&9\\
\hline 0&0&1&1&11&4\\
0&1&1&0&7&3\end{array}\right]](wyklady/op1/mi/mi846.png)
Ta tablica opisuje jedyny wierzchołek optymalny
,
w którym ![]()
3 Metoda dużego
.
Czasami potrafimy oszacować wartość
i
.
Szczególnie w zagadnieniach całkowitoliczbowych np. transport
ciężarówkami i gdy wśród warunków są
.
Aby rozwiązać zadanie: ![]()
![]()
![]()
wybieramy liczbę M dostatecznie dużą i rozpatrujemy zadanie ![]()
![]()
.
Teraz poprawione zadanie opisane jest tablicą sympleks:
,
gdzie wektor
jest sumą wierszy macierzy
.
Rozwiązanie zawsze istnieje, ale czasami w opisie kosztów
zredukowanych wierzchołka optymalnego występuje
- oznacza to,
że zadanie wyjściowe jest sprzeczne. W stosunku do poprzednich
metod zyskujemy to, że mamy jedną fazę i jedną funkcję celu.
![]()
![]()
![]()
![]()
Sprowadzamy do zadania:
![]()
![]()
![]()
, ![]()
Otrzymujemy następujące tablice sympleks:
![\left[\begin{array}[]{r|rrrr|rr|r}x_{0}&x_{1}&x_{2}&x_{3}&x_{4}&y_{1}&y_{2}&ww\\
1&-1&2&0&3&M&M&0\\
\hline 0&1&-1&-1&0&1&0&1\\
0&-1&1&2&-1&0&1&1\end{array}\right]](wyklady/op1/mi/mi765.png)
![\left[\begin{array}[]{r|rrrr|rr|r}1&-1&2&-M&3+M&0&0&-2M\\
\hline 0&1&-1&-1&0&1&0&1\\
0&-1&1&(2)&-1&0&1&1\end{array}\right]](wyklady/op1/mi/mi837.png)
![\left[\begin{array}[]{r|rrrr|rr|r}1&-1-\frac{1}{2}M&2+\frac{1}{2}M&0&3+\frac{1}{2}M&0&\frac{1}{2}M&-\frac{3}{2}M\\
\hline 0&(\frac{1}{2})&-\frac{1}{2}&0&-\frac{1}{2}&1&\frac{1}{2}&\frac{3}{2}\\
0&-\frac{1}{2}&\frac{1}{2}&1&-\frac{1}{2}&0&\frac{1}{2}&\frac{1}{2}\end{array}\right]](wyklady/op1/mi/mi845.png)
![\left[\begin{array}[]{r|rrrr|rr|r}1&0&1&0&2&2+M&M+1&3\\
\hline 0&1&-1&0&-1&2&1&3\\
0&0&0&1&-1&1&1&2\end{array}\right]](wyklady/op1/mi/mi761.png)
Rozwiązaniem jest wierzchołek
, w którym funkcja celu
osiąga wartość 3.
Opisz dwufazowy algorytm metody sympleks na przykładzie zadania:
Min
, gdy:
![]()
![]()
![]()
,
,
,
Opisz dwufazowy algorytm metody sympleks na przykładzie zadania:
Min
, gdy:
![]()
![]()
![]()
,
,
,
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010.
Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.