Zagadnienia

7. Własności metody sympleks

7.1. Zrewidowana metoda sympleks.

Kolejne kroki otrzymywania T⁢S prowadzą do narastania błędów - duża liczba mnożeń i dzieleń powoduje, że wyniki są coraz mniej dokładne (algorytm metody sympleks nie jest stabilny).

Przypuśćmy, że T⁢S startową jest

-cN0...0b0ANIb

i w m-tym kroku uzyskaliśmy tablicę zawiązana z wyborem zmiennych bazowych xi1,xi2,…,xit. Oznacza to, że macierz B=ki1,ki2,…,kit gdzie kij jest ij-tą kolumną macierzy A=[An|I], spełnia warunek

B-1¯⋅1-cN0...0b00ANIb

jest m-tą T⁢S,

to znaczy jej kolumny kij,…,kit tworzą macierz jednostkową

B¯=1-cB0B  B-1¯=1cB⁢B-10B-1

Co pewien czas (np. co 100 kroków) zamiast wyliczać T⁢S metodą eliminacji G⁢J, wyliczamy ją bezpośrednio ze startowej T⁢S mnożąc ją z lewej strony przez odpowiednią podmacierz B-1¯ wyznaczoną przez wybór bazy.

Kolejna T⁢S powstaje z poprzedniej przez mnożenie z lewej strony przez macierz różniącą się od jednostkowej tylko jedną kolumna a więc postaci

E=1⋯-α0,ra⁢γ⁢r00…-α1,raγ⁢r0⋮⋮…⋮-1aγ,r⋮⋮…⋮0⋮-αt⁢raγ,r1=I-1αγ⁢r⁢0α0,r0⋮α1,r⋮⋮⋮⋮0αt,r0+j⁢0…0⋮1αγ,r⋮0…0

gdzie kolumna główna macierzy poprzedniej ma postać α0,rα1,r…αj,r…αt,ri elementem centralnym jest αγ,r.

E⋅α0,rα1,r⋮αt,r=α0⁢r-α0⁢rαj,r⋅αj,r⋮αt⁢r-α⁢t⁢rαj,r⋅αj,r=0⋮1⋮←j

Macierze Bt-1=Et⋅Et-1⁢…⁢E1. Ponieważ macierze typu E są podobne do macierzy elementarnych I+α⋅ei⁢j można tak modyfikować uzyskiwanie macierzy B (dobierając kolejność mnożenia przez macierze elementarne by zminimalizować błędy) i dodatkowo jeśli macierz początkowa był a rozrzedzona, tzn. miała mało współczynników ≠0, by macierz wynikowa była też rozrzedzona.

Algorytm zrewidowanej metody sympleks:

Dana jest początkowa T⁢S (lub macierz opisująca wielościan i koszty).

W kolejnym kroku mamy dodatkowo macierz B-1¯ powstałą przez odwrócenie podmacierzy wyznaczonej przez zmienne bazowe i listę zmiennych bazowych.

x01c⁢B-1xi1xi2⋮xit00⋮B-1

1) wyliczamy wyrazy wolne b0′b1′…bt′=B¯-1⁢b0b1…bt

2) wyliczamy koszty zredukowane

zi=-ci+c⁢B-1⁢ki

gdzie ki jest i-ta kolumną macierzy A (początkowej)

3) test optymalności

Jeżeli ∀i zi≥0 to stop:

wierzchołkiem optymalnym jest xj=⁡0,⁢j∉i1,i2,…,itbi′,⁢w⁢p⁢p⁢

Jeżeli nie, to wybieramy kolumnę główną taką, że ci<0

4) obliczamy kolumnę główną ki′=B-1⋅ki

5) test skończoności

Jeżeli ki≤0 to stop: otrzymujemy nieskończoną krawędź poprawiajacą

6) wyznaczamy element centralny M⁢i⁢nxj⁢i′>0⁢⁢bj′αj′

7) wyliczamy nową B¯′A-1 stosując do B-1¯ przekształcenia G⁢J i ustalamy nową listę zmiennych bazowych.

-cN0b0=0ANIb

następna

T⁢S⁢=⁢-cN+cN⁢B-1⁢ANc⁢B-1b0′=c⁢B-1AN⁢B-1nie interesująca - nie wyliczamyB-1B-1⁢b

Policzmy ile działań wykonujemy w przypadku tablicy o n kolumnach i t wierszach.

Przekształcenia
Metoda Gausa Koszty Razem
Jordana zredukowane
Sympleks ∗ i /+⁢i⁢- t+1⁢n-t+1t⁢n-t+1 t⁢n-t+n+1t⁢n-t+1
Zrewidowana ∗ i /+⁢i⁢- t+12t⁢t+1 t⁢n-tt⁢n-t t⁢n-t+t+12t⁢n+1

Wniosek:

Zazwyczaj metoda zrewidowana jest droższa, ale zyskujemy dokładność.

Niestety macierzowy algorytm metody sympleks, w przeciwieństwie do geometrycznego, może się zapętlić. Sytuacja zachodzi wtedy gdy jeden wierzchołek może być przedstawiony za pomocą wielu tablic sympleks. Możemy w nieskończoność wędrować krawędziami zdegenerowanymi po jednym i tym samym wierzchołku. Aby uniknąć tej sytuacji niektóre algorytmy wykorzystują numerowanie leksykograficzne wierzchołków. Patrz [4]

Aby wierzchołek mógł być przedstawiony wieloma tablicami sympleks z prawej strony kreski muszą znajdować się zera. Algorytmy wykonujące przekształcenia Gaussa - Jordana nie są stabilne co w konsekwencji daje błąd ale i przerwanie pętli - co wykorzystują inne algorytmy.

Podamy teraz przykład zapętlenia się algorytmu sympleks pochodzący z [3].

Przykład 7.1

M⁢a⁢x⁢⁢x0=34⁢x4-20⁢x5+12⁢x6-6⁢x7, gdzie

x1+14⁢x4-8⁢x5-x6+9⁢x7=0x2+12⁢x4-12⁢x5-12⁢x6+3⁢x7=0x3+x6=1

x1≥0,x2≥0,x3≥0,x4≥0,x5≥0,x6≥0,x7≥0

Ten układ równań daje następującą TS

1000-3420-1260010014-8-190001012-12-1230000100101

Otrzymujemy następujące TS:

13000-4-7233004001-32-43600-2100432-150000100101

111000-21800-1280108-8400-121400138-1540000100101

1-2301400-300-32101801-21200116-180-364103160032-11-18002121

1-110-121600002-60-5256100013-230-141630100-26152-56001

10-20-7444120001-30-542812000013016-4-1610000100101

1000-3420-1260010014-8-190001012-12-1230000100101

I tak ostatnia siódma TS jest identyczna z pierwszą.

Wszystkie tablice opisują wierzchołek nieoptymalny p=0,0,1,0,0,0,0

Idąc inną drogą otrzymujemy:

1000-3420-1260010014-8-190001012-12-1230000100101

1032002-54212001-1200-2-34152000201-24-160000100101

1032540202125401-12340-201523400211-24061000100101

Ostatnia tablica opisuje wierzchołek optymalny q=34,0,0,1,0,1,0.

Rada praktyczna:

Krawędzie zdegenerowane pochodzą od tych zmiennych, które na przecięciu swojej kolumny i równania (wiersza) o wyrazie wolnym 0 mają liczbę >0.

Badamy wiersze o zerowym wyrazie wolnym i szukamy krawędzi poprawiających, które mają w tym wierszu liczbę ≤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.