310 likes | 1.21k Views
PROGRAMOWANIE KWADRATOWE Damian Głodkowski. Czym będę się zajmował w mojej pracy : Metoda Wolfe’a: Postawienie Problemu ; Metoda Wolfe’a: Wersja parametryczna; Metoda Franka i Wolfe’a. (Plan mojej pracy może ulec w każdej chwili zmianie , wszystko co pokazuje jest w fazie rozbudowy).
E N D
PROGRAMOWANIE KWADRATOWE Damian Głodkowski
Czym będę się zajmował w mojej pracy : • Metoda Wolfe’a: Postawienie Problemu ; • Metoda Wolfe’a: Wersja parametryczna; • Metoda Franka i Wolfe’a. • (Plan mojej pracy może ulec w każdej chwili zmianie , wszystko co pokazuje jest w fazie rozbudowy).
Oznaczenia: • przez x’ - oznaczam wektor w postaci wierszowej , x’=[x1,…,xn]; • przez x – oznaczam wektor w postaci kolumnowej , x= ; • O= o= ; • C= -macierz (nxn); • C’= -macierz symetryczna wymiaru (nxn);
x<==b oznacza, że każde xi<=bi , dla kazdego i ; • Miedzy wektorem x a wektorem „o” mogą zachodzić różnego rodzaju relacje, • wektor x jest nieujemny, jeśli x>==0; • półdodatni , jeśli x>=0; • dodatni , jeśli x>0. • Macierz C jest symetryczna , jeśli C=C’, oraz antysymetryczna jeśli C=-C’ • Dla symetrycznej macierzy A stopnia n rozważamy funkcję n-wymiarowego wektora kolumnowego x o postaci: • fA(x) = x¢Ax • zwaną formą kwadratową. • Przykład: • Kryterium określoności macierzy jest znak formy kwadratowej dla DOWOLNEGO niezerowego x: • Jeżeli to macierz A jest dodatnio określona ; • Jeżeli to macierz A jest dodatnio półokreślona ;
Jeżeli A jest dodatnio określona lub dodatnio półokreślona, mówimy, że jest nieujemnie określona. • Każda macierz dodatnio półokreślona lub ujemnie półokreślona jest osobliwa – jej wyznacznik jest zerowy, ponieważ skoro x¢Ax = 0 dla niezerowego x, to Ax = 0 => kolumny A nie są liniowo niezależne, więc det(A) = 0; • E+n= {x należących do En ; x>==0 }; • Kombinacja liniowa i liniowa zależność : rozważmy skończony przestrzeni En, to jest skończony zbiór wektora n – wymiarowego a1,a2,…,an. • Wektor b= B1*a1+B2*a2+…Bn*an, gdzie B1,B2,…,Bn są liczbami rzeczywistymi, nazywamy kombinacją liniową wektorów a1,a2,…an; • Jeżeli B1,B2,…,Bn>==0 i B1 + B2 + … + Bn = 1, to b nazywamy kombinacja wypukłą; • A*x – kombinacja liniowa kolumn macierzy A; • y’*A – kombinacja liniowa wierszy macierzy A;
W mojej pracy zajmować się będę problemem programowania kwadratowego (PK) • Min{F(x)=(1/2)*x’*A*x + p’*x; x należy do L’} • L’={x; A*x<==b , x >== o}; • gdzie C jest (nxn)- macierzą, o której zakładamy bez straty ogólności, że jest symetryczna , a p jest wektorem n – wymiarowym;
Metoda Wolfe’a: postawienie problemu. • W odniesieniu do problemu PK (1) przyjmiemy następujące dwa założenia: • (2) C jest dodanio półokreślona; • (3) Istnieje q należące do En takie, że p = C*q; • Warunki (2) i (3) są warunkami jednocześnie koniecznym i dostatecznym kryterium optymalności dla problemu PK, wynika to z Twierdzenia o optymalności punktu stacjonarnego KTL (Kuhna ,Tuckera i Lagrange’a) (Treść wraz z dowodem tego twierdzenia będzie przedstawiona w Nowym roku ) • Zgodnie z założeniem (2) funkcja F(x) jest wypukła. Wprowadzamy teraz wektory y , v należące do E+n nieujemnych zmiennych dopełniających określone następująco: • y = b – A*x>==o, • v = C*x + A’*u + p >==o, • Gdzie u należy do E+n jest wektorem mnożników Lagrange’a .
Przy takich oznaczeniach warunki KTL odnoszące się do problemu (1) przyjmują postać: • x,y,u,v >==o; • A*x + y = b; (5) • -C*x + v – A*u = p; • x’*v + y’*u = 0. • Następnie warunek (5) sprowadza się do problem znalezienia takiej bazy dopuszczalnej B związaną z macierzą D’ taką ,że • B=[e1,e2] , zatem B= • Macierz D’ jest postaci D’= [A E] • Trzeba znaleźć macierz D postaci D=
Jak działa algorytm rozwiązania problemu ?? • Faza I • Krok I . Posługując się algorytmem LMS , stwierdzamy, że L’ jest pusty, albo uzyskujemy początkową bazę dopuszczalną B” związaną z D’=[A.E] i odpowiadający jej wierzchołek x1’ zbiory L’ • jeżeli b>== o , to przyjmujemy B’ = E, x1’ = o; • jeżeli b ma pewne ujemne współrzędne, to przekształcamy wektor b do postaci b= [b1, b2]’ • tak, aby b1>==o, b2<0 i stosownie do tego przekształcamy A . Wprowadzamy wektor zmiennych sztucznych z’ (z taką samą liczbą współrzędnych jak wektor b2) i budujemy problem pomocniczy: • Min{e’*z: A1*z<==b1, A2*x – z <==b2, x>==o, z>==o}, • gdzie • D’=
Przyjmujemy, że macierz B’^(-1)= jest bazą dopuszczalną, zbudowaną z kolumn D’, generującą wierzchołek [x1”,z1”] = [o, - b2]. Krok II . Konstruujemy (nxn)- macierz F z dodatnich i ujemnych wektorów jednostkowych zgodnie ze znakiem współrzędnych wektora C*x1’ + p to jest Fj = ej jeśli ej’*(C*x1’ + p ) >==0 i -ej jeśli ej’*(C*x1’ + p ) <0 Budujemy problem programowania liniowego : Min e’*z, przy warunkach : x,y,v,u>==o, (*) A*x + y =b -C*x + v – A’*u + F*z = p .
Macierz tego układu warunków ma postać D= Przez –C1 oznaczmy macierz utworzoną z tych kolumn macierzy [-C, O], które odpowiadają kolumnom macierzy [A, E] wybranym do bazy B1’. Bdujemy macierz B1= I odpowiadające jej rozwiązanie (**) x1’, y1’=b – A*x1’ v1’= o, u1’ = o z1’= F*(C*x1’ + p)
Faza II Rozwiązujemy problem PL (*) przy użyciu LMS, rozpoczynając obliczenia od bazy B1 i rozwiązania (**) oraz stosujemy następujące ograniczenia wejscia do bazy : Jeżeli xj,vj,yi,ui jest bazowa, to vj,xj,ui,yi nie może wejść do bazy (***). Takie postępowanie kończy się po osiągnięciu rozwiązania , dla którego nie można wykonać żadnego dalszego korku przy spełnieniu warunku powyższego . Jak wygląda tablica simpleksowa Niech x*, y*, v*, u*, z* będzie rozwiązaniem końcowym problemu (*) wyznaczonym przy uwzględnieniu ograniczenia (***) Niech xx, yy, vv, uu – oznaczają zmienne bazowe w rozwiązaniu końcowym, xv, yu, vx, uy – oznaczają zmienne komplementarne do zmiennych bazowych , które nie mogą wejść do bazy , przy warunku (***) xq, yq, vq, uq – oznaczają pozostałe zmienne, które nie są ani bazowe, ani komplementarne do zmiennych bazowych .
Macierze A i C , jak również macierze jednostkowe, można odpowiednio podzielić tak , że tablica simpleksowa przedstawiająca problem (*) przyjmuje postać :
W tablicy tej zmienne komplementarne do zmiennych bazowych w rozwiązaniu końcowym posiadają *. Niech także s, r należy do E+n , gdzie : s’=[s’y, s’u, s’q] r’= [r’x, r’v, r’q ] Jak znajdujemy rozwiązanie : trzeba wprowadzać zmienne do bazy , a następnie przeprowadzać iteracje, aby otrzymać w określonej kolumnie wektor bazowy . Może troszkę ten algorytm rozjaśni się na przykładzie:
Przykład: Zminimalizować F(x1,x2)=(x1)^2-4*x1*x2 +5*(x2)^2 + 6*x1 – 20*x2 Przy następujących warunkach : x1,x2 >= 0; x1 + x2 <= 3; - x1 +4*x2 <= 4.
Równanie F(x1,x2) zapisuje w postaci F(x1,x2) = (1/2)*(2*(x1)^2-8*x1*x2 +10*(x2)^2) + 6*x1 – 20*x2 Równanie F(x1,x2) = 2*(x1)^2-8*x1*x2 +10*(x2)^2 jest naszą formą kwadratową .Zatem możemy utworzyć macierz C, która jest dodatnio półokreślona C = p= Wektor p powstaje z warunku F(x1,x2)=(x1)^2-4*x1*x2 +5*(x2)^2 + 6*x1 – 20*x2 i wynosi
Macierz A i wektor b powstaje z warunków wystepujących w zadaniu x1,x2 >= 0 x1 + x2 <= 3; - x1 +4*x2 <= 4. A= b=
Macierz C jest dodatnio półokreślona i nieosobliwa, a więc założenia (2) i (3) są spełnione. Ponieważ b>=0, więc mamy bazę początkową B” związaną z z D’. To znaczy B”=[e1,e2] , zatem B”= Macierz D’ jest postaci D’= [A E] = I odpowiadający tej bazie wierzchołek x1’ = zbioru L’.
Następnie mamy C*x1’ + p = p = [6, -20]’. Potem trzeba zbudować macierz F, która ma postać F = [e1 , -e2] = Obliczenia rozpoczynamy z następującą bazą dopuszczalną B’ = =
Ta baza jest związana z macierzą D, która jest postaci : D= = = odpowiadającą jej tablicą simpleksową :
Metoda simpleks Tak możemy obliczyć wszystkie puste pola w wierszu qj: A na tym przykladzie to jest (y1,y1)*(y1,u1)+(y2,y1)*(y2,u2)+(z1,y1)*(z1,z1)+(z2,y1)*(z2,z2)
Metoda simpleks Zatem otrzymujemy: (b,u2)- qu2= -5 Te pola otrzymujemy odejmując od wartości w odpowiednim polu w wierszu pierwszym od wartości w wierszu qj .
Metoda simpleks Mamy:
Metoda simpleks Mamy: Szukamy tak zwane kryterium wyjścia , czyli min[tj -qj]= -14
Metoda simpleks. Wprowadzimy zmienną x2 do bazy . Zmienna y2 Opuszcza bazę i w rezultacie otrzymujemy następującą tablicę simpleksową Otrzymanie odpowiednich pól polega na takim przekształceniu, aby w kolumnie x2 znajdował się odpowiedni wektor bazowy y1:=y1 – (1/4)*x2 x2:=x2/4 z1:=z1 – y2 z2:=z2 – (5/2)*y2
Metoda simpleks. Szukamy tak zwane kryterium wyjścia , czyli min[tj -qj]= -5
Metoda simpleks. Teraz do bazy wprowadzamy u2 . Zmienna z1 Opuszcza bazę i w rezultacie otrzymujemy następującą tablicę simpleksową Otrzymanie odpowiednich pól polega na takim przekształceniu, aby w kolumnie u2 znajdował się odpowiedni wektor bazowy z2:= z2- (1/4)*u2
Metoda simpleks. Teraz do bazy wprowadzamy x2 . Zmienna z2 Opuszcza bazę i w rezultacie otrzymujemy następującą tablicę simpleksową Otrzymanie odpowiednich pól polega na takim przekształceniu, aby w kolumnie x1 znajdował się odpowiedni wektor bazowy y1:= y1- (1/2)*z2 x2:= x2 +(1/10)*z2 u2:=u2 +(2/5)*z2 x1:=z2*(2/5)
Otrzymujemy rozwiązanie końcowe: x1:= 4/5 x2:= 6/5 y1:= 1 u2:= 14/5 A zatem rozwiązaniem optymalnym problemu F(x1,x2)=(x1)^2-4*x1*x2 +5*(x2)^2 + 6*x1 – 20*x2 Jest Para x1:= 4/5, x2:= 6/5 Teraz podstawiając do powyższego wzoru otrzymujemy: F((4/5),(6/5))=-(76/5)