Laboratorium z Podstaw Optymalizacji Zrewidowany algorytm

Transkrypt

Laboratorium z Podstaw Optymalizacji Zrewidowany algorytm
Laboratorium z Podstaw Optymalizacji
Zrewidowany algorytm sympleks
(opracowane na podstawie [1])
Zadanie:
Szukamy minimum funkcji
przy ograniczeniach
z = cT x,
(1)
xB
[B, N ]
= b,
xN
(2)
xB ­ 0, xN ­ 0,
(3)
gdzie B ∈ Rm×m , N ∈ Rm×(n−m) oraz m ¬ n.
Przekształcenia i wyliczenia pomocnicze:
Funkcję celu możemy zapisać
z = cTB xTB + cTN xTN
Po podstawieniu
xB = B −1 b − B −1 N xN ,
otrzymamy
z = cTB B −1 b + (cTN − cTB B −1 N )xN = z0 + pT xN ,
gdzie
z0 = cTB B −1 b,
pT = cTN − cTB B −1 N.
Wartość funkcji celu z można polepszyć w następnej iteracji, jeśli znajdziemy
ujemną składową w wektorze p i wprowadzimy odpowiadającą jej niebazową
zmienną do bazy.
Wektor p liczymy w dwóch krokach
B T λ = cB
oraz pT = cTN − λT N,
1
gdzie wektor λ jest wektorem mnożników sympleksowych a p jest wektorem
względnych kosztów.
· (kolumna wchodząca do bazy w następnej iteracji)
Jeśli
pk = cN k − λT ak < 0
dla pewnego m+1 ¬ k ¬ n, to ak jest niebazową kolumną macierzy A, która może
wejść do bazy B w następnej iteracji, a wartość funkcji celu zostanie zmniejszona.
· (kolumna opuszczająca bazę w następnej iteracji)
Kolumnę opuszczającą bazę można znaleźć, rozpatrując warunek spełniany przez
bieżące bazowe rozwiązanie dopuszczalne x0 , który ma postać
xB = x0 − B −1 ak xN k ­ 0
(4)
czyli
xB = x0 − yxN k ­ 0
gdzie y otrzymujemy przez rozwiązanie układu
By = ak .
Nierówność (4) musi być spełniona aby następne rozwiązanie było rozwiązaniem
dopuszczalnym. Wówczas kolumnę opuszczającą bazę wyznaczamy rozpatrując
ilorazy x0i /yi dla yi ­ 0, i = 1, 2, . . . , m. Jeśli
(
)
x0i
x0l
= min
: yi > 0, 1 ¬ i ¬ m ,
θ=
yl
yi
to zmienna xBl staje się zerme i jest przesuwana do zbioru niebazowego. Odpowiednio kolumna ai przechodzi do macierzy niebazowej N .
Zrewidowany algorytm sympleks:
1. Dana jest taka baza B, że xB = B −1 b ­ 0.
2. Rozwiązać B T λ = cB , względem mnożników sympleksowych.
3. Wybrać z N taką kolumnę ak , że pk = cN k − λT ak < 0. Można np. wybrać
takie ak , które daje „najbardziej ujemną” wartość pk . Jeżeli pT = cTN −
λT N ­ 0 to zatrzymać się. Bieżące rozwiązanie jest optymalne.
4. Rozwiązać układ równań By = ak względem y.
2
5. Znaleźć
(
)
x0l
x0i
θ=
= min
: yi > 0, 1 ¬ i ¬ m .
yl
yi
Jeśli żadne yi nie jest dodatnie, to zbiór rozwiązań układu Ax = b jest
nieograniczony i z może przyjąc dowolnie dużą wartość ujemną. Koniec
obliczeń.
6. Uaktualnić rozwiązania bazowe korzystając z (4) generując następne bazowe
rozwiązanie dopuszczalne wg wzoru
xi = xi − θyi
xk = θ,
i 6= k
gdzie xk jest nową zmienną bazową.
7. Uaktualnić bazę B, tzn. zamienić kolumny „wchodzącą do bazy” z „opuszczającą bazę” i wrócić do kroku 2.
Znajdowanie początkowego bazowego rozwiązania dopuszczalnego
W kroku 1. zakłada się, że znane jest bazowe rozwiązanie dopuszczalne. Aby
je znaleźć dla układu Ax = b, x ­ 0, rozpatrzymy pomocnicze zagadnienie
minimalizacji
min
n
X
yi∗
(5)
i=1
przy ograniczeniach
Ax + Iy∗ = b,
x ­ 0,
y∗ ­ 0,
(6)
gdzie y∗ jest wektorem sztucznych zmiennych. Funkcja (5) przy ograniczeniach
(6) jest miarą niespełnienia ograniczeń równościowych zadania wyjściowego.
Jeśli tylko potrafimy znaleźć takie optymalne rozwiązanie bazowe zadania (5)P
(6), że ni=1 yi∗ = 0 to otrzymamy także bazę dającą rozwiązanie xB . Jeżeli (5) ma
dodatnie minimum to nie ma rozwiązania dopuszczalnego. Zadanie (5)-(6) rozwiązujemy tą samą metodą sympleks. Mamy oczywiste początkowe rozwiązanie
dopuszczalne zadania (5)-(6) x = 0, y∗ = b dla B = I.
UWAGA: O tym jaka jest różnica między zrewidowaną a zwykłą metodą sympleks można przeczytać w [2] str. 41-42. Natomiast szczegółowy opis wyznaczania
pierwszej bazy można znaleźć w [2] na str. 45-46.
3
Literatura
[1] M. M. Sysło, N. Deo, J. S. Kowalik, Algorytmy optymalizacji dyskretnej,
PWN, 1993.
[2] A. Stachurski, Wprowadzenie do optymalizacji, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa 2009.
4