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:

Maxx0=cx

Ax=b

x0

macierzą układu jest [A|b]

Mnożąc w razie potrzeby niektóre równania przez -1 możemy przyjąć, że b0. Aby uzyskać TS dopisujemy macierz jednostkową i otrzymujemy tablicę sympleks TS=AIb.

Odpowiada temu układ równań

Ax+Iy=b

gdzie y=y1y2ytA=a1,1a1,2a1,nat,1at,2a1t,n

Pierwsza faza

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

Ax+Iy=b

x0y0

zadanie () jest ograniczone ponieważ y0y00. Dodatkowo jeżeli p należy do obszaru dopuszczalnego zadania pierwotnego, czyli Ap=b p0 to

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

[A|I]p¯=A[p1pn]+I[0]=b

zaś y0p¯=0

I Przypadek:

Jeżeli w rozwiązaniu optymalnym zadania () y0max<0 to wielościan W=xRn|Ax=bx0 jest zbiorem pustym (zadanie pierwotnie sprzeczne).

II Przypadek:

Jeżeli y0max=0 to TS opisująca wierzchołek optymalny zadania () pozwala nam opisać wierzchołek zadania pierwotnego.

T=A¯Db¯

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

Rzeczywiście. Jeżeli (p1,..,pn,y1,,yt) jest wierzchołkiem opisanym A¯Db¯ 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,r0 w j-tym wierszu macierzy A¯ to wybieramy go jako element centralny i po przekształceniach elementarnych otrzymujemy TS, w której yj jest niebazowe, zaś xr jest dołączone do bazy.

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

Druga faza:

Najpierw budujemy wiersz kosztów zredukowanych

Maxx0=cx

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

równania xj=bj¯-ajixi pochodzące z TS [A*|b*] = a1,1a1,2a1nb1*at,1at,2at,nbt*

Dalej zadanie rozwiązujemy prosta metodą sympleks.

Przykład 6.1

Badamy zadanie:

Maxx0=7x1+2x2-3x3-x4

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

3x1+x2-2x3-x4=1

x1,x2,x3,x40

I faza:

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

Maxy0=-y1-y2

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

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

x1,x2,x3,x4,y1,y20

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

Otrzymujemy:

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

y0-11x1-4x2+7x3=-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.

Min43,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=7x1+2x2-3x3-x4=7x1+2-x1-7x4+3-3x1-4x4+1-x4=2x1-3x4+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 Maxx0=9

Przykład 6.2

Rozwiążmy zadanie:

Maxx0=3x1+8x2-2x3-x4

2x1+x2-x3+6x4=3

x1+x2-3x3-x4=5

x1,x2,x3,x40

I faza:

Wprowadzamy sztuczne zmienne y1 i y2 i funkcje celu

Maxy0=-y1-y2

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

y0-3x1-2x2+4x3-5x4=-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.

Maxx0=cx

A1xb1

A2x=b2

x0

W tym przypadku mamy t1 zmiennych bazowych i gdy b10 dodajemy tylko t2 zmiennych sztucznych.

Maxx0=cx

A1x+It1x¯=b1

A2x+It2y=b2

x0

x¯0

y0

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 TS. W zadaniu:

Maxx0=cx

Ax=b

x0

Rozważamy obie funkcje celu jednocześnie.

Maxx0=cx

Maxy0=-y

Ax+Iy=b

x0y0

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

TS=B-1¯x0y0x1x2xny1ytww10-c0000100011000AIb,

gdzie

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

W fazie 1 maksymalizujemy y0 i w rezultacie otrzymujemy, że zadanie jest sprzeczne lub TS 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:

Maxx0=7x1+2x2-3x3-x4

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

3x1+x2-2x3-x4=1

x1,x2,x3,x40

I faza:

Wprowadzamy sztuczne zmienne y1 i y2 i funkcje celu

Maxy0=-y1-y2

y0+y1+y2=0

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

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

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

Min43,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 xmax=9

3 Metoda dużego M.

Czasami potrafimy oszacować wartość x0 i maxxi. Szczególnie w zagadnieniach całkowitoliczbowych np. transport ciężarówkami i gdy wśród warunków są 0xibi.

Aby rozwiązać zadanie: Maxx0=cx

Ax=b

x0

wybieramy liczbę M dostatecznie dużą i rozpatrujemy zadanie Maxx0¯=cx-My

Ax+Iy=b

x0y0.

Teraz poprawione zadanie opisane jest tablicą sympleks:

TS=-c-dM0...0-MbiAIb,

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

Maxx0=x1-2x2-3x4

x1-x2-x3=1

-x1+x2+2x3-x4=1

xi0

Sprowadzamy do zadania:

Maxx0¯=x1-2x2-3x4-My1-My2

x1-x2-x3+y1=1

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

xi0, y0

Otrzymujemy następujące tablice sympleks:

x0x1x2x3x4y1y2ww1-1203MM001-1-101010-112-1011

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

1-1-12M2+12M03+12M012M-32M012-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=3x1+4x2+2x3 , gdy:

x1-5x2+2x35

x1+3x2+2x32

x1-5x2+3x33

x10, x20, x30,

Ćwiczenie 6.2

Opisz dwufazowy algorytm metody sympleks na przykładzie zadania:

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

x1-5x2+2x34

x1-5x2+x33

x1+3x2-2x35

x10, x20, x30,

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.