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