Zagadnienia

6. Dwufazowa metoda sympleks

6.1. Szukanie wierzchołka startowego

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:

M⁢a⁢x⁢⁢x0=c⁢x

A⁢x=b

x≥0

macierzą układu jest [A|b]

Mnożąc w razie potrzeby niektóre równania przez -1 możemy przyjąć, że b≥0. Aby uzyskać T⁢S dopisujemy macierz jednostkową i otrzymujemy tablicę sympleks T⁢S=A⁢I⁢b.

Odpowiada temu układ równań

A⁢x+I⁢y=b

gdzie y=y1y2⋮yt⁢⁢A=a1,1a1,2…a1,n⋮⋮⋱⋮at,1at,2…a1⁢t,n

Pierwsza faza

Rozwiązujemy  zadanie PL(∗):Maxy0=-y=-y1-y2-…-yt

A⁢x+I⁢y=b

x≥0⁢⁢y≥0

zadanie (∗) jest ograniczone ponieważ y≥0⇒y0≤0. Dodatkowo jeżeli p należy do obszaru dopuszczalnego zadania pierwotnego, czyli A⁢p=b p≥0 to

p¯=p,0,…,0 jest punktem optymalnym (∗) gdyż

[A|I]p¯=A[p1⋮pn]+I[0⋮]=b

zaś y0⁢p¯=0

I Przypadek:

Jeżeli w rozwiązaniu optymalnym zadania (∗) y0⁢m⁢a⁢x<0 to wielościan W=x∈Rn⁢|⁢A⁢x=b⁢⁢x≥0 jest zbiorem pustym (zadanie pierwotnie sprzeczne).

II Przypadek:

Jeżeli y0⁢m⁢a⁢x=0 to T⁢S opisująca wierzchołek optymalny zadania (∗) pozwala nam opisać wierzchołek zadania pierwotnego.

T=A¯⁢D⁢b¯

a) Jeżeli wszystkie zmienne y1,y2,…,yt są niebazowe to macierz powstała po wykreśleniu kolumn z nimi związanych jest T⁢S opisująca wierzchołek obszaru dopuszczalnego zadania pierwotnego.

Rzeczywiście. Jeżeli (p1,..,pn,y1,…,yt) jest wierzchołkiem opisanym A¯⁢D⁢b¯ to y1=0,…,yt=0, A¯⁢p=b¯

(A¯ zawiera macierz jednostkową)

[A¯|b¯] powstała z [A|b] przez operacje elementarne na wierszach, więc opisuje ten sam wielościan.

b) Niech yi będzie zmienną bazowa. Przyjmijmy, że kolumna odpowiadająca yi ma jedynkę w j-tym wierszu i pozostałe współrzędne =0.

10  jeżeli wiersz j-ty ma tylko jeden element niezerowy ( j⁢- ty wiersz A¯ jest zerowy ) to znaczy, że [A|b] i A były układem zależnym. Taki wiersz i kolumny można wykreślić ( w praktyce zostaje).

20  Jeżeli oprócz jedynki odpowiadającej yi istnieje aj,r≠0 w j-tym wierszu macierzy A¯ to wybieramy go jako element centralny i po przekształceniach elementarnych otrzymujemy T⁢S, w której yj jest niebazowe, zaś xr jest dołączone do bazy.

Po wykonaniu I fazy otrzymujemy T⁢S opisującą wierzchołek obszaru dopuszczalnego T lub informację, że zadanie było sprzeczne.

Druga faza:

Najpierw budujemy wiersz kosztów zredukowanych

M⁢a⁢x⁢⁢x0=c⁢x

Koszty zredukowane to x0=d⁢x+b0 gdzie d=d1,…,dn to dj=0 gdy xj - bazowa. Wektor d wyliczamy wstawiając do równania x0=c⁢x

równania xj=bj¯-aj⁢i⁢xi pochodzące z T⁢S [A*|b*] = a1,1a1,2…a1nb1*⋮⋮⋱⋮⋮at,1at,2…at,nbt*

Dalej zadanie rozwiązujemy prosta metodą sympleks.

Przykład 6.1

Badamy zadanie:

M⁢a⁢xx0=7⁢x1+2⁢x2-3⁢x3-x4

8⁢x1+3⁢x2-5⁢x3+x4=4

3⁢x1+x2-2⁢x3-x4=1

x1,x2,x3,x4≥0

I faza:

Wprowadzamy sztuczne zmienne y1 i y2 i funkcje celu i otrzymujemy:

M⁢a⁢x⁢⁢y0=-y1-y2

8⁢x1+3⁢x2-5⁢x3+x4+y1=4

3⁢x1+x2-2⁢x3-x4+y2=1

x1,x2,x3,x4,y1,y2≥0

Zamieniamy teraz funkcję celu podstawiając: y1=-8⁢x1+3⁢x2-5⁢x3+x4-4 i y2=-3⁢x1+x2-2⁢x3-x4-1.

Otrzymujemy:

y0-8⁢x1+3⁢x2-5⁢x3+x4-4-3⁢x1+x2-2⁢x3-x4-1=0

y0-11⁢x1-4⁢x2+7⁢x3=-5 Zadanie opisujemy tablicą:

x1x2x3x4y1y2-11-47000-583-5110431-2-1011baza sztuczna

Opuściliśmy tu kolumnę odpowiadającą zmiennej y0 bo, jak wcześniej zauważyliśmy, kolumna ta nie ulega zmianie podczas rozwiązywania.

Wybieramy kolumnę poprawiającą x2.

M⁢i⁢n⁢43,11=1 i element centralny zaznaczamy nawiasem

10-1-404-1-10141-3131-2-1011

0000110-10141-3111072-53

Zmienne sztuczne wypadły z bazy więc możemy je wykreślić. Pozostała tablica opisuje wierzchołek startowy 0,3,1,0.

Wracamy do pierwotnej funkcji celu i liczymy koszty zredukowane:

x0=7⁢x1+2⁢x2-3⁢x3-x4=7⁢x1+2⁢-x1-7⁢x4+3-3⁢x1-4⁢x4+1-x4=2⁢x1-3⁢x4+3

i otrzymujemy tablicę sympleks:

-20033-1014111073

Pierwsza kolumna wyznacza krawędź poprawiającą. Idąc nią otrzymujemy.

02017901111411073

Ta tablica opisuje jedyny wierzchołek optymalny 3,0,4,0,

w którym M⁢a⁢x⁢⁢x0=9

Przykład 6.2

Rozwiążmy zadanie:

M⁢a⁢xx0=3⁢x1+8⁢x2-2⁢x3-x4

2⁢x1+x2-x3+6⁢x4=3

x1+x2-3⁢x3-x4=5

x1,x2,x3,x4≥0

I faza:

Wprowadzamy sztuczne zmienne y1 i y2 i funkcje celu

M⁢a⁢x⁢⁢y0=-y1-y2

0=y0+y1+y2=y0-2⁢x1+x2-x3+6⁢x4-3-x1+x2-3⁢x3-x4-5

y0-3⁢x1-2⁢x2+4⁢x3-5⁢x4=-8

co daje tablicę sympleks

-3-24-500-821-1610311-3-1015

stosując prosty algorytm metody sympleks otrzymujemy kolejno:

-43-761960560-1121316-161160124376-1960161112

102720-221-16103-10-2-7-112

Nad kreską są same liczby nieujemne a funkcja celu jest równa -2 zatem zadanie jest sprzeczne (obszar dopuszczalny jest zbiorem pustym).

6.2. Modyfikacje dwufazowej metody sympleks

1. Metoda częściowej bazy sztucznej

W metodzie dwufazowej wystarczy dodać tylko tyle zmiennych sztucznych, by otrzymać macierz jednostkową.

np.

M⁢a⁢xx0=c⁢x

A1⁢x≤b1

A2⁢x=b2

x≥0

W tym przypadku mamy t1 zmiennych bazowych i gdy b1≥0 dodajemy tylko t2 zmiennych sztucznych.

M⁢a⁢x⁢⁢x0=c⁢x

A1⁢x+It1⁢x¯=b1

A2⁢x+It2⁢y=b2

x≥0

x¯≥0

y≥0

W przypadku rzeczywistych obliczeń ( na maszynach) zwykle nie stosuje się częściowej bazy sztucznej. Nie trzeba wówczas wyszukiwać w macierzy A kolumn zero - jedynkowych.

2. Można obie fazy rozwiązać na jednej T⁢S. W zadaniu:

M⁢a⁢x⁢⁢x0=c⁢x

A⁢x=b

x≥0

Rozważamy obie funkcje celu jednocześnie.

M⁢a⁢x⁢⁢x0=c⁢x

M⁢a⁢x⁢⁢y0=-y

A⁢x+I⁢y=b

x≥0⁢⁢y≥0

Budujemy tablicę sympleks mającą dwa wiersze nad kreską.

T⁢S=B-1¯⋅x0y0x1x2…xny1…ytw⁢w10-c0…000100…01…1000AIb,

gdzie

B¯=100...0011...100I

W fazie 1 maksymalizujemy y0 i w rezultacie otrzymujemy, że zadanie jest sprzeczne lub T⁢S opisująca wierzchołek startowy (łącznie z kosztami zredukowanymi funkcji x0).

Ta metoda nigdy nie prowadzi do zmniejszenia liczby operacji (np. wyszło, że zadanie jest sprzeczne, więc naliczyliśmy się zupełnie niepotrzebnie).

Przykład 6.3

Badamy zadanie:

M⁢a⁢xx0=7⁢x1+2⁢x2-3⁢x3-x4

8⁢x1+3⁢x2-5⁢x3+x4=4

3⁢x1+x2-2⁢x3-x4=1

x1,x2,x3,x4≥0

I faza:

Wprowadzamy sztuczne zmienne y1 i y2 i funkcje celu

M⁢a⁢x⁢⁢y0=-y1-y2

y0+y1+y2=0

y0-8⁢x1+3⁢x2-5⁢x3+x4-4-3⁢x1+x2-2⁢x3-x4-1=0

y0-11⁢x1-4⁢x2+7⁢x3=-5

y0x0x1x2x3x4y1y2W⁢W10-11-47000-501-7-2310000083-511040031-2-1011baza sztucznaWybieramy kolumnę poprawiającą x2.

M⁢i⁢n⁢43,11=1 i element centralny zaznaczamy nawiasem

1010-1-404-101-10-1-102200-10141-310031-2-1011

10000011001-20031-1300-10141-310011072-53

Koniec fazy pierwszej. Wszystkie sztuczne zmienne są niebazowe wykreślamy wiersze i kolumny związane ze sztucznymi zmiennymi.

1-200330-10141011073

Kolumna x1 wyznacza krawędź poprawiającą. Idąc nią otrzymujemy.

10201790011114011073

Ta tablica opisuje jedyny wierzchołek optymalny 3,0,4,0,

w którym xm⁢a⁢x=9

3 Metoda dużego M.

Czasami potrafimy oszacować wartość x0 i m⁢a⁢x⁢⁢xi. Szczególnie w zagadnieniach całkowitoliczbowych np. transport ciężarówkami i gdy wśród warunków są 0≤xi≤bi.

Aby rozwiązać zadanie: M⁢a⁢x⁢⁢x0=c⁢x

A⁢x=b

x≥0

wybieramy liczbę M dostatecznie dużą i rozpatrujemy zadanie M⁢a⁢x⁢⁢x0¯=c⁢x-M⁢y

A⁢x+I⁢y=b

x≥0⁢⁢y≥0.

Teraz poprawione zadanie opisane jest tablicą sympleks:

T⁢S=-c-d⁢M0...0-M⋅∑biAIb,

gdzie wektor d jest sumą wierszy macierzy A.

Rozwiązanie zawsze istnieje, ale czasami w opisie kosztów zredukowanych wierzchołka optymalnego występuje M - oznacza to, że zadanie wyjściowe jest sprzeczne. W stosunku do poprzednich metod zyskujemy to, że mamy jedną fazę i jedną funkcję celu.

Przykład 6.4

M⁢a⁢x⁢⁢x0=x1-2⁢x2-3⁢x4

x1-x2-x3=1

-x1+x2+2⁢x3-x4=1

xi≥0

Sprowadzamy do zadania:

M⁢a⁢x⁢⁢x0¯=x1-2⁢x2-3⁢x4-M⁢y1-M⁢y2

x1-x2-x3+y1=1

-x1+x2+2⁢x3-x4+y2=1

xi≥0, y≥0

Otrzymujemy następujące tablice sympleks:

x0x1x2x3x4y1y2w⁢w1-1203MM001-1-101010-112-1011

1-12-M3+M00-2⁢M01-1-101010-112-1011

1-1-12⁢M2+12⁢M03+12⁢M012⁢M-32⁢M012-120-12112320-12121-1201212

101022+MM+1301-10-12130001-1112

Rozwiązaniem jest wierzchołek 3,0,2,0, w którym funkcja celu osiąga wartość 3.

Zadania

Ćwiczenie 6.1

Opisz dwufazowy algorytm metody sympleks na przykładzie zadania:

Min x0=3⁢x1+4⁢x2+2⁢x3 , gdy:

x1-5⁢x2+2⁢x3≥5

x1+3⁢x2+2⁢x3≤2

x1-5⁢x2+3⁢x3≥3

x1≥0, x2≥0, x3≥0,

Ćwiczenie 6.2

Opisz dwufazowy algorytm metody sympleks na przykładzie zadania:

Min x0=3⁢x1-x2+2⁢x3 , gdy:

x1-5⁢x2+2⁢x3≥4

x1-5⁢x2+x3≥3

x1+3⁢x2-2⁢x3≤5

x1≥0, x2≥0, x3≥0,

Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.

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.