Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki Rok akademicki 2008/2009 Praca Dyplomowa Inżynierska Michał Przyłuski Optymalizacja wypukła: wybrane zagadnienia Opiekun pracy: prof. nzw. dr hab. Włodzimierz Ogryczak Ocena.................................................................... Podpis Przewodniczącego Komisji Egzaminu Dyplomowego
Specjalność: Informatyka Inżynieria Systemów Informacyjnych Data urodzenia: 4 maja 1985 r. Data rozpoczęcia studiów: 1 października 2004 r. Życiorys Nazywam się Michał Przyłuski, urodziłem się w Warszawie, 4 maja 1985 r. Szkołę Podstawową nr 15 w Warszawie ukończyłem w 2000 roku. W latach 2000 2004 uczęszczałem do XXV Liceum Ogólnokształcącego im. Józefa Wybickiego w Warszawie. Po uzyskaniu matury rozpocząłem w październiku 2004 r. studia na Wydziale Elektroniki i Technik Informacyjnych PW oraz w Kolegium Międzywydziałowych Indywidualnych Studiów Matematyczno-Przyrodniczych UW, gdzie jestem aktualnie studentem piątego roku (kierunek podstawowy: matematyka)...................................... podpis studenta Egzamin dyplomowy Złożył egzamin dyplomowy w dn........................................... z wynikiem.............................................................. Ogólny wynik studiów:................................................... Dodatkowe wnioski i uwagi Komisji:................................................................................................................
Streszczenie Rozpatrywane są wybrane zagadnienia optymalizacji wypukłej. Omówiono szczegółowo dwa szczególnie ważne przypadki zadań wypukłych, sprowadzalnych do,,stożkowego zadania programowania liniowego. Są to tzw. zadania programowania stożkowego drugiego stopnia (zwane SOCP) oraz zadania programowania półokreślonego (zwane SDP). Wiele interesujących zagadnień programowania wypukłego można przedstawić w postaci takich zadań. Należą do nich omówione w pracy problemy minimalizacji normy, kwadratowo ograniczone programowanie kwadratowe, krzepkie zadania programowania liniowego, krzepkie zadania najmniejszych kwadratów i zadania z ograniczeniami hiperbolicznymi. Przedstawiono niektóre z zastosowań metod optymalizacji wypukłej do rozwiązywania problemów dotyczących projektowania optymalnych filtrów cyfrowych, doboru siły chwytającej robota, projektowania układu anten dookólnych, do zagadnień rozpoznawania obrazów oraz do analizy pewnych zagadnień teorii portfela. Słowa kluczowe: optymalizacja, programowanie wypukłe, programowanie półokreślone Convex optimization: selected problems Selected problems of convex optimization are considered. In particular semidefinite programming (SDP) and second-order cone programming are discussed and their use for various specifi optimization problems is presented. Applications in various fields has been described as well. Key words: optimization, convex optimization, semidefinite programming
Spis treści 1 Wstęp 1 2 Programowanie wypukłe 5 3 Zadania sprowadzalne do postaci SOCP lub SDP 13 3.1 Zadania programowania liniowego................... 13 3.2 Minimalizacja sumy norm........................ 14 3.3 Kwadratowo ograniczone programowanie kwadratowe....... 16 3.4 Krzepkie zadania programowania liniowego oraz najmniejszych kwadratów................................. 19 3.4.1 Programowanie liniowe..................... 20 3.4.2 Zadanie najmniejszych kwadratów.............. 22 3.5 Zadania z ograniczeniami hiperbolicznymi.............. 23 3.5.1 Maksymalizacja średniej harmonicznej........... 24 3.5.2 Liniowo-kwadratowy problem ułamkowy.......... 24 3.5.3 Logarytmiczna aproksymacja Czebyszewa.......... 25 3.5.4 Średnia geometryczna...................... 26 3.6 Maksymalizacja wartości własnej i normy macierzy......... 27 4 Zastosowania 28 4.1 Rozpoznawanie obrazów......................... 28 4.2 Układy anten................................ 29 4.3 Siła chwytająca............................... 31 4.4 Filtr o skończonej odpowiedzi impulsowej.............. 33 i
SPIS TREŚCI ii 4.4.1 Przypadek zespolony...................... 34 4.4.2 Symetryczne współczynniki.................. 34 4.4.3 Logarytmiczne odchylenie filtru o liniowej fazie...... 36 4.5 Wybrane zagadnienia teorii portfela.................. 37 4.5.1 Model Markowitza........................ 38 4.5.2 Ograniczenie ryzyka straty................... 40 4.5.3 Analiza postoptymalizacyjna.................. 42 Bibliografia 44
Rozdział 1 Wstęp Wiele problemów inżynierskich, ekonomicznych, itp. może być przedstawionych jako zadanie optymalizacji postaci: f 0 (x) p. o. f i (x) 0, i = 1,..., m, h i (x) = 0, i = 1,..., p; x jest tu wektorem zmiennych decyzyjnych, f 0 jest funkcją celu, a funkcje f i oraz h i są określają odpowiednio ograniczenia nierównościowe i równościowe. Wyznaczenie rozwiązań tak ogólnych zadań może okazać się bardzo trudne w praktyce. Pierwszym problemem jest znalezienie dowolnego rozwiązania dopuszczalnego lub stwierdzenie, że takie rozwiązanie może nie istnieć. Ponadto, algorytm rozwiązania takiego zadania może zatrzymać się w lokalnym minimum. Nie do pominięcia jest także wpływ błędów zaokrągleń i ich kumulowanie się. W wielu sytuacjach trudno jest też sformułować dobry warunek stopu dla takiego algorytmu. Wreszcie, zbieżność algorytmu do rozwiązania optymalnego może być bardzo powolna. Opisane powyżej trudności nie pojawiają się jednak, gdy zawęzimy odpowiednio klasę rozpatrywanych zadań optymalizacji. Dobrze znanym przykładem są tu zadania programowania liniowego, dla których już pół wieku temu istniały dobrze sprawdzające się w praktyce algorytmy wyznaczania ich rozwiązań. Ogólniejszą klasą zadań, dla których przynajmniej niektóre z opisanych powyżej trudności 1
1. Wstęp 2 nie występują to zadania programowania wypukłego. Są to takie zadania, dla których funkcja celu i funkcje definiujące ograniczenia nierównościowe są wypukłe, a funkcje definiujące ograniczenia równościowe są afiniczne. Lokalne minimum będzie wtedy globalnym minimum, a także możliwe jest ustalenie dobrego warunku stopu w oparciu o teorię dualności. Poważny wpływ na rozwój metod obliczeniowych rozwiązywania zadań wypukłych miało pojawienie się w połowie lat osiemdziesiątych pracy Karmarkara, w której udowodnił on, że tzw. metoda punktu wewnętrznego rozwiązywania zadań programowania liniowego ma złożoność wielomianową. Co ważne, algorytm punktu wewnętrznego okazał się również sprawny w praktyce.1 Okazało się też, że metodę punktu wewnętrznego można stosować również do rozwiązywania zadań programowania wypukłego. Istotnym elementem metody punktu wewnętrznego są funkcje barier2, które umożliwiają,,zamienienie zadania z ograniczeniami na zadanie bez ograniczeń w ten sposób, że wyznaczane w kolejnych iteracjach przybliżenia rozwiązania optymalnego leżą we wnętrzu zbioru dopuszczalnego. Nesterov oraz Nemirovskii zaproponowali taką klasę funkcji barier, dla których można udowodnić, że złożoność obliczeniowa metody punktu wewnętrznego rozwiązania zadań wypukłych jest wielomianowa względem wymiaru problemu oraz pożądanej dokładności rozwiązania. W ich rozważaniach ważną rolę odgrywa pojęcie self-concordance; jest to warunek, który dla funkcji f jednej zmiennej mówi o możliwości oszacowania jej trzeciej pochodnej przez jej drugą pochodną, a dokładniej jest wymaganiem, aby f (x) 2 f (x) 3 2. Dla funkcji wielu zmiennych warunek ten powinien być spełniony na każdej prostej. Obszerne omówienie tych zagadnień przedstawione jest w ich znanej monografii [20]. W latach dziewięćdziesiątych ukazało się szereg prac, w których analizowane 1Znana wcześniej metoda elipsoid rozwiązywania zadań programowania liniowego też ma złożoność wielomianową (co udowodnił Khachiyan w 1979 roku), ale okazała się mało przydatna w praktyce obliczeniowej. 2Funkcje barier znane już były w latach sześćdziesiątych m. in. dzięki pracom Fiacco i McCormicka. Pokrewne im funkcje kary były też już wówczas znane. Ważne prace na temat funkcji kary zawdzięczamy m. in. Wierzbickiemu oraz Wierzbickiemu i Kurcyuszowi.
1. Wstęp 3 są szczególne klasy zadań programowania wypukłego, ważnych dla zastosowań. Opracowano wiele dobrych algorytmów rozwiązujących takie zadania. Udostępnione zostały liczne pakiety oprogramowania (np. SeDuMi opisane w [26]). Programowanie wypukłe jest ogólną gałęzią optymalizacji obejmującą w sobie wiele technik takich jak programowanie półokreślone, programowanie wypukłe na stożkach. Znalazło ono ostatnio powszechne zastosowanie do efektywnego sformułowania i rozwiązania wielu problemów inżynierskich. Jak już wspomnieliśmy zaletami programowania wypukłego jest wielomianowa złożoność czasowa odpowiednich algorytmów, a także dostępność wysokowydajnych i godnych zaufania narzędzi do rozwiązywania nawet dużych zadań. Kontrastuje to z ogólnymi metodami optymalizacji takimi jak algorytmy ewolucyjne bądź symulowane wyżarzanie, które wymagają precyzyjnego strojenia dla konkretnego problemu, i często pozostają w lokalnym optimum. W pracy rozpatrywane są wybrane zagadnienia optymalizacji wypukłej. W rozdziale 2 omówiono szczegółowo dwa szczególnie ważne przypadki zadań wypukłych sprowadzalnych do,,stożkowego zadania programowania liniowego. Są to tzw. zadania programowania stożkowego drugiego stopnia (zwane SOCP) oraz zadania programowania półokreślonego (zwane SDP). Wiele interesujących zagadnień programowania wypukłego można przedstawić w postaci takich zadań. Należą do nich omówione w rozdziale 3 problemy minimalizacji normy, kwadratowo ograniczone programowanie kwadratowe (zwane QCQP), krzepkie zadania programowania liniowego, krzepkie zadania najmniejszych kwadratów i zadania z ograniczeniami hiperbolicznymi. W rozdziale 4 przedstawiono niektóre z zastosowań metod optymalizacji wypukłej do rozwiązywania konkretnych problemów. Omówiono projektowanie optymalnych filtrów cyfrowych, dobór siły chwytającej robota, projektowania układu anten dookólnych, pewien problem z teorii rozpoznawania obrazów oraz pewne zagadnienia teorii portfela. Metody optymalizacji wypukłej znalazły liczne zastosowania w różnych dziedzinach, nie tylko tych wymienionych powyżej. Zastosowania w obszarze teorii sterowania i systemów zostały zaprezentowane m in. w monografii [8], gdzie przedstawiono,,wypukłe podejście do zagadnień syntezy krzepkiego regulatora, a tak-
1. Wstęp 4 że w monografii [5] poświęconej wykorzystaniu liniowych nierówności macierzowych i metod programowania półokreślonego do analizy i syntezy niewrażliwych układów sterowania. W pracy zwykle zakładamy, że wszystkie rozpatrywane zadania optymalizacji mają rozwiązanie.
Rozdział 2 Programowanie wypukłe Rozpoczniemy od przedstawienia poniżej podstawowych pojęć matematycznych i oznaczeń, którymi posługujemy się w tej pracy. Symbolem R n oznaczamy arytmetyczną n-wymiarową przestrzeń liniową nad R, której elementy zwykle zapisujemy jako (n-wymiarowe) wektory kolumnowe. Zbiór macierzy o elementach rzeczywistych o wymiarach m n oznaczamy symbolem R m n. Transpozycję macierzy A oznaczamy przez A T. Przez S n będziemy rozumieć zbiór macierzy symetrycznych o wymiarach n n. Funkcję f R n R m nazywamy funkcją afiniczną jeśli jest postaci f (x) = Ax+ b, gdzie A i b są odpowiednio macierzą i wektorem kolumnowym odpowiednich wymiarów. Jeśli F R n R p q jest funkcją o wartościach macierzowych, to jest ona afiniczna gdy daje się zapisać w postaci F(x) = A 0 + x 1 A 1 + + x n A n, gdzie A i R p q. Niepusty zbiór S R n nazywamy podprzestrzenią liniową R n, gdy zawiera on 0 oraz wraz z każdymi swoimi dwoma (różnymi) punktami zawiera prostą przez nie przechodzącą, tzn. dla dowolnych x, y S oraz λ, µ R, zachodzi λx + µy S. Obrazy i jądra macierzy są oczywiście podprzestrzeniami liniowymi. Odwrotnie, każda podprzestrzeń liniowa R n jest obrazem pewnej macierzy; można ją też przedstawić jako jądro pewnej (innej) macierzy. Zbiór nazywamy S R n podprzestrzenią afiniczną, jeśli zawiera prostą prze- 5
2. Programowanie wypukłe 6 chodzącą przez każde dwa jego punkty, czyli gdy x, y S, λ, µ R, λ + µ = 1 λx + µy S. Podprzestrzeń afiniczna jest translacją (o pewien wektor) pewnej, jednoznacznie określonej, podprzestrzeni liniowej. Każda podprzestrzeń afiniczna jest obrazem pewnej funkcji afinicznej S = {Az + b z R q }. Jest to także zbiór rozwiązań pewnego układu równań liniowych S = {x Bx = d}. Zbiór S nazywamy zbiorem wypukłym, gdy zawiera odcinek łączący dowolne dwa punkty należące do S, tj. x, y S, λ, µ R, λ, µ 0, λ + µ = 1 λx + µy S. Oczywiście, podprzestrzenie liniowe i podprzestrzenie afiniczne są zbiorami wypukłymi. Niech S R n będzie ustalonym, niepustym zbiorem wypukłym. Funkcję f S R nazywamy wypukłą, wtedy i tylko wtedy, gdy x, y S λ, µ [0, 1], λ + µ = 1 f (λx + µy) λ f (x) + µ f (y). Dla funkcji o ciągłej drugiej pochodnej powyższy warunek można wyrazić poprzez dodatnią półokreśloność hesjanu. Zbiór K nazywamy stożkiem wypukłym, jeśli jest on wypukły oraz dla każdego x K, zawiera półprostą wychodzącą z 0 i przechodzącą przez x. Innymi słowy, K jest stożkiem wypukłym, gdy x, y K, λ, µ 0 λx + µy K. Dla n = 2 stożek wypukły to po prostu kąt wypukły rozumiany jako nieograniczony i wypukły podzbiór płaszczyzny ograniczony dwoma półprostymi o wspólnym początku. Przykładem stożka wypukłego może być nieujemna ćwiartka (oktant, itd.) R+. n Niektóre zastosowanie wymagają rozpatrywania macierzy dodatnio półokreślonych lub dodatnio określonych. Macierz A jest dodatnio półokreślona, co zapisujemy jako A 0, jeśli jest ona symetryczna oraz, dla każdego x R n, x T Ax 0.
2. Programowanie wypukłe 7 Podobnie macierz A jest dodatnio określona, co zapisujemy jako A 0, jeśli jest ona symetryczna oraz, dla każdego 0 x R n, x T Ax > 0. Zbiór macierzy dodatnio półokreślonych (o wymiarach n n) oznaczamy S n + = {X S n X 0}. Łatwo sprawdzić, że zbiór ten jest stożkiem nazywanym stożkiem dodatnio półokreślonym. Zbiór macierzy dodatnio określonych z dołączonym wektorem zerowym także jest stożkiem. Przy rozpatrywaniu zagadnień programowania wypukłego ważną rolę odgrywają stożki, które są domknięte, mają niepuste wnętrze oraz mają tę właściwość, że jedynym elementem stożka takim, że jednocześnie element przeciwny należy do stożka jest 0. Stożki R n + oraz S n + mają ww. właściwości, natomiast zbiór macierzy dodatnio określonych nie, bo nie jest domknięty (ma pozostałe właściwości). Dowolny stożek K (zawarty w R n, R m n, S n, czy też dowolnej przestrzeni liniowej) generuje pewien częściowy porządek1 K, jeśli przyjmiemy, że x K y x y K. Łatwo zauważyć, że x K 0 wtedy i tylko wtedy, gdy x K i dlatego K jest nazywane stożkiem dodatnim. Nierówności, w których występuje ww. częściowy porządek możemy dodawać do siebie stronami, mnożyć stronami przez liczby nieujemne, a gdy stożek jest domknięty, możemy w nich przechodzić do granicy. Jeśli stożek ma tę właściwość, że jedynym jego elementem, dla którego element przeciwny też należy do stożka jest 0, to częściowy porządek K staje się antysymetryczny2, czyli jest porządkiem. Relację przeciwną do K oznaczamy K ; wówczas x K y y K x. Niech K będzie ustalonym stożkiem dodatnim w R m, a F odwzorowaniem z pewnego zbioru wypukłego Ω R n o wartościach w R m, nazywamy je wypukłym, gdy x, y K λ, µ [0, 1], λ + µ = 1 F(λx + µy) K λf(x) + µf(y). Analogicznie możemy określić wypukłość dla odwzorowań o wartościach w S n. 1Pod częściowym porządkiem rozumiemy dowolną relację zwrotną i przechodnią. 2Tzn. x K y oraz y K x implikuje x = y.
2. Programowanie wypukłe 8 Rozpatrzmy zadanie optymalizacji f 0 (x) p. o. f i (x) 0, i = 1,..., m, h i (x) = 0, i = 1,..., p, x Ω, gdzie Ω R n. Mówimy, że jest to zadanie wypukłe (in. zadanie programowania wypukłego), gdy Ω jest zbiorem wypukłym oraz wszystkie funkcje f są wypukłe, a funkcje h są afiniczne. Szczególnym przypadkiem tego zadania jest zadanie programowania liniowego (wszystkie funkcje f i h są wtedy afiniczne). Innym przykładem zadania wypukłego jest zadanie f (x) p. o. F(x) K 0, x Ω, gdzie Ω R n jest zbiorem wypukłym, F jest odwzorowaniem wypukłym o wartościach w R m, a K ustalonym stożkiem dodatnim w R m. O funkcji f zakładamy też, że jest wypukła. Teoria takich zadań jest przedstawiona m. in. w znanej książce Luenbergera [16]. Szczególnym przypadkiem tego zadania jest,,stożkowe zadanie programowania liniowego, tzn. zadanie f T x p. o. Ax + b K 0, gdzie f R n, A R m n oraz b R m są ustalonymi parametrami zadania. Stożkowe zadanie programowania liniowego było już rozpatrywane (nawet w przestrzeniach nieskończenie wymiarowych) w latach pięćdziesiątych ubiegłego wieku. Podstawowe wyniki na ten temat można znaleźć w znanej monografii Arrowa, Hurwicza i Uzawy [1]. W latach dziewięćdziesiątych stożkowe zagadnienia programowania liniowego, po latach zapomnienia, stały się znowuż przedmiotem rozważań, albowiem okazało się, że poprzez stosowny dobór stożka można w wygodny sposób zapisać jako zadania wypukłe różnorakie, ważne dla zastosowań, problemy nieliniowe.
2. Programowanie wypukłe 9 Rozpatrzmy dla przykładu następujące zagadnienie optymalizacji: x 1 + x 2 + x 3 + x 4 p. o. 1x 1 + 1x 3 + 1x 4 1, 2(1x 1 + 1x 3 + 1x 4 1)(1x 2 + 1x 3 3) (1x 2 + 1x 4 2) 2, 1x 2 + 1x 3 3. Jest to niewątpliwie zagadnienie z nieliniowymi ograniczeniami. Jeżeli jednak wybierzemy za stożek dodatni w przestrzeni R 3 stożek K opisany warunkami K = {(z 1, z 2, z 3 ) T z 1 0, z 3 0, 2z 1 z 3 z2 2 }3, to ww. nieliniowe zagadnienie możemy przedstawić jako następujący (stożkowy) program liniowy: p. o. (1, 1, 1, 1)(x 1, x 2, x 3, x 4 ) T x 1 + x 3 + x 4 1 x 2 + x 4 2 K 0. x 2 + x 3 3 Omówimy poniżej dwa szczególnie ważne przypadki zadań wypukłych, które są sprowadzalne do,,stożkowych zadań programowania liniowego. Są to tzw. zadania programowania stożkowego drugiego stopnia oraz zadania programowania półokreślonego. Oryginalny (angielski) termin określający programowanie stożkowe drugiego stopnia to second-order cone programming, a używany skrót to SOCP. Programowanie półokreślone znane jest też pod skrótem SDP (skrót od ang. semidefinite programming). Zadania SOCP i SDP są dobrze zbadane, znane są ich właściwości, istnieją wyspecjalizowane i sprawdzone algorytmy numeryczne ich rozwiązywania. Wiele interesujących zagadnień programowania wypukłego można przedstawić w postaci zadań SOCP lub SDP. Należą do nich m in. pewne problemy minimalizacji normy, kwadratowo ograniczone programowanie kwadratowe, krzepkie zadania programowania liniowego, krzepkie zadania najmniejszych kwadratów i zadania z ograniczeniami hiperbolicznymi. Zadanie programowania stożkowego drugiego stopnia (SOCP) sformułowane 3Elementami tego stożka są wektory z R 3 tworzące kąt niewiększy niż π/4 z wektorem (1, 0, 1) T.
2. Programowanie wypukłe 10 jest następująco: (2.1) f T x p. o. A i x + b i c T i x + d i, i = 1, 2,..., N; wektor x R n reprezentuje zmienne decyzyjne, a parametrami zadania są f R n, A i R (n 1 1) n, b i R n i 1, c i R n oraz d i R. Symbol oznacza zawsze (o ile nie powiedziano inaczej) normę euklidesową, tzn. x = (x T x) 1 2.4 Aby wyjaśnić czym naprawdę jest SOCP, wprowadzimy pojęcie stożka drugiego stopnia. Stożek drugiego stopnia wymiaru k będziemy oznaczali C k. Dla k = 1 przyjmujemy, że C 1 = {t t R, 0 t}, czyli po prostu ujemna półoś. Dla k > 1, stożek drugiego stopnia k definiujemy jako C k = u u R k 1, t R, u t. t Łatwo sprawdzić, że stożek ten jest domknięty, ma niepuste wnętrze i jedynym elementem stożka takim, że jednocześnie element przeciwny należy do stożka jest 0. W literaturze bywa on nazywany stożkiem Lorentza. Można go sobie wyobrazić jako zbiór wszystkich półprostych w R k o początku w 0 przechodzących przez umieszczony w płaszczyźnie t = 1 zbiór wszystkich u R k 1 o normie równej 1. Zauważmy teraz, że występujące w ograniczeniach (2.1) nierówności (2.2) A i x + b i ci T x + d i mają taką samą postać jak nierówność określająca stożek C k. Dokładniej, nierówność (2.2) jest spełniona wtedy i tylko wtedy, gdy A i c T i x + b i d i C ni. Niech m = N i=1 n i. Zauważmy, że iloczyn kartezjański C stożków C n1 C n2 C nn jest stożkiem w R n 1 R n 2 R n N. Tak więc C jest stożkiem w Rm ; porządek 4Jeżeli n i = 1 to A i x + b i interpretujemy jako liczbę 0; wówczas SOCP jest zwykłym zadanie programowania liniowego.
2. Programowanie wypukłe 11 generowany przez ten stożek oznaczymy oczywiście symbolem C. Możemy teraz zapisać SOCP jako następujące,,stożkowe zadanie programowania liniowego: A 1 b 1 c T 1 d 1 A 2 b 2 c2 T x d 2 C 0. A n b n cn T d n Przejdziemy teraz do omówienia drugiego naszego przykładu zadania wypukłego sprowadzalnego do,,stożkowego zadania programowania liniowego. Będzie to zadanie programowania półokreślonego (SDP). Ażeby opisać to zadanie przyjmiemy, że F(x) = F 0 + m i=1 x i F i, gdzie F 0, F 1,..., F m S n są ustalonymi macierzami symetrycznymi. Rozpatrzmy następujące zadanie: (2.3) c T x p. o. F(x) 0. W zadaniu tym zmienną decyzyjną jest wektor x = (x 1, x 2,..., x n ) T ; parametrami tego zadania są macierze F i oraz wektor c. Ograniczeniem tego zadania jest warunek nieujemnej określoności macierzy F(x), zwany też liniową nierównością macierzową (w skrócie LMI, od angielskiego określenia linear matrix inequality). Zauważmy jeszcze, że zadanie, w którym występuje szereg LMI można zastąpić zadaniem z jedną LMI, ponieważ macierz (symetryczna) blokowo-diagonalna jest nieujemnie określona wtedy i tylko wtedy, gdy poszczególne bloki są nieujemnie określone. Analogiczny fakt ma miejsce, gdy zamiast nieujemnej określoności będziemy rozważać dodatnią określoność. Zadania, w których pojawia się dodatkowo ograniczenie równościowe postaci G 0 + m i=1 x i G i, gdzie G i są symetryczne, można
2. Programowanie wypukłe 12 oczywiście zapisać w postaci dwóch nierówności, ponieważ jedyną macierzą (symetryczną), która jest jednocześnie dodatnio półokreślona i macierz do niej przeciwna ma tę samą właściwość, jest macierz zerowa. Opisane powyżej zadanie optymalizacji to właśnie zadanie programowania półokreślonego. Łatwo sprawdzić, że jest to zadanie wypukłe, albowiem x, y R m λ, µ [0, 1], λ + µ = 1 F(λx + µy) = λf(x) + µf(y) 0. Ponieważ funkcja x F(x) jest afiniczna, a funkcja celu jest liniowa, jest to,,stożkowe zadanie programowania liniowego, a stożek który tutaj określa porządek to stożek S+. n
Rozdział 3 Zadania sprowadzalne do postaci SOCP lub SDP W tym rozdziale przedstawimy ważne przykłady zadań optymalizacji sprowadzalnych do SOCP lub SDP. Będą to m. in. pewne problemy minimalizacji normy, kwadratowo ograniczone programowanie kwadratowe, krzepkie zadania programowania liniowego, krzepkie zadania najmniejszych kwadratów i zadania z ograniczeniami hiperbolicznymi. Przykłady te są zaczerpnięte głównie z prac [15] i [24]. 3.1 Zadania programowania liniowego Zadanie programowania liniowego c T x p. o. Ax + b 0, łatwo można sprowadzić zarówno do SOCP jak i SDP. Aby było to zadanie w postaci SOCP, wystarczy przyjąć n i = 1 (por. określenie SOCP z poprzedniego rozdziału). Aby powyższe zadanie programowania liniowego przedstawić w postaci SDP zauważmy przedtem, że warunek, aby wszystkie współrzędne jakiegoś wektora z były nieujemne zachodzi wtedy i tylko wtedy, gdy macierz diagonalna o diagonali 13
3.2. Minimalizacja sumy norm 14 złożonej z kolejnych współrzędnych wektora z jest dodatnio półokreślona. Niech F 0 będzie macierzą, która na diagonali ma kolejne współrzędne wektora b, a F i macierzą, która na diagonali ma kolejne wyrazy i-tej kolumny macierzy A. Niech F(x) = F 0 n i=1 x i F i (jest to macierz diagonalna). Jest oczywistym, że warunek Ax + b 0 jest równoważny z wymaganiem, aby F(X) 0. 3.2 Minimalizacja sumy norm Problem minimalizacji sumy norm łatwo jest sprowadzić do postaci SOCP. Niech (dla i = 1, 2,..., k) F i R n i n oraz д i R n i będą ustalone. Rozpatrujemy zadanie k i=1 F i x + д i. Poprzez wprowadzenie pomocniczych zmiennych t 1, t 2,..., t k można je przekształcić do postaci k t i i=1 p. o. F i x + д i t i, i = 1, 2,..., k. Jest to problem SOCP, w którym zmiennymi decyzyjnymi są x R n oraz t i R. Możliwe jest także uwzględnienie w tym zadaniu pewnych dodatkowych ograniczeń (na przykład nierówności liniowych). Analogicznie można przekształcić problem minimalizacji maksimum norm: Jest on równoważny następującemu SOCP: t max F ix + д i. i=1,...,k p. o. F i x + д i t, i = 1, 2,..., k. Zmiennymi decyzyjnymi dla powyższego zadania są x R n oraz t R. Rozpatrzymy jeszcze jedno zagadnienie minimalizacji normy.1 Chcemy aproksymować (względem normy l 1 ) zadany wektor b C k wektorami z podprzestrzeni 1Jest ono sformułowane nad ciałem liczb zespolonych C, ze względu na pewne zastosowania w inżynierii elektrycznej.
3.2. Minimalizacja sumy norm 15 liniowej C k będącej obrazem zadanej macierzy A C k q. Innymi słowy szukamy zmiennej decyzyjnej x C q, która jest rozwiązaniem zadania (3.1) Ax b 1, gdzie2 x 1 = k i=1 x i. Przekształcimy to zadanie do postaci zadania SOCP. W tym celu dla dowolnego wektora lub liczby z przez z real oraz z im oznaczymy odpowiednio jej część rzeczywistą i urojoną tak, że z = z real + jz im, gdzie j = 1. Niech a i oznacza i-ty wiersz macierzy A. Minimalizacja (3.1) to minimalizacja sumy k składników postaci a i x b i. Rozważaną liczbę a i x b i można zapisać jako ((a real i x real a im i x im b real i ) 2 + (a real i x im + a im i x real b im i ) 2 ) 1 2. Łatwo zauważyć, że powyższa liczba jest normą (euklidesową) następującego wektora: a real i a im i x real a im i a real i x im b real b im. Widać teraz, że rozpatrywane zadanie minimalizacji normy można zapisać w postaci następującego zadania SOCP: k t i i=1 p. o. a real i a im i x real a im i a real i x im b real b im t i, i = 1, 2,..., k. Zmienne decyzyjne dla tego zadania to liczby t i oraz wektory x real i x im. W analogiczny sposób można przekształcić problem aproksymacji (nad C) w normie l. Jest to nieznaczna modyfikacja rozpatrywanego w tym podrozdziale zagadnienia minimalizacji maksimum norm. Pewnym rozszerzeniem problemu minimalizacji normy jest zagadnienie minimalizacji sumy ustalonej liczby l największych spośród norm F i x + д i, które można zapisać w postaci l y [i] i=1 p. o. F i x + д i = y i, i = 1, 2,..., k, 2W dalszym ciągu z, dla liczby zespolonej z, oznacza jej wartość bezwzględną.
3.3. Kwadratowo ograniczone programowanie kwadratowe 16 gdzie y [1], y [2],..., y [k] są liczbami y 1, y 2,..., y k w kolejności malejącej. Zmiennymi decyzyjnymi dla tego zadania jest wektor x oraz liczby y i. Można pokazać, że powyższa funkcja celu jest wypukła, a problem jest równoważny zagadnieniu lt + l y i i=1 p. o. F i x + д i t + y i, i = 1, 2,..., k, y i 0, i = 1, 2,..., k, ze zmiennymi decyzyjnymi x, y R k oraz t R. 3.3 Kwadratowo ograniczone programowanie kwadratowe Rozważmy ogólne zadanie programowania kwadratowego z ograniczeniami stopnia drugiego3, zwane QCQP (skrót od ang. quadratically constrained quadratic programming): x T P 0 x + 2q T 0 x + r 0 p. o. x T P i x + 2q T i x + r i 0, i = 1, 2,..., k. Zmienną decyzyjną jest oczywiście wektor x R n. Wielkości P 0, P 1,..., P k S n + są ustalonymi (symetrycznymi) macierzami dodatnio określonymi; wektory q oraz liczby r są również ustalonymi parametrami zadania. Opisane powyżej zadanie jest wówczas zadaniem programowania wypukłego.4 Ażeby sprowadzić to zadanie do postaci SOCP zauważmy, że dla dowolnych v, w R n, (3.2) v + w 2 = v 2 + w 2 + 2w T v. Zauważmy też, że dla dowolnej macierzy P dodatnio półokreślonej istnieje dokładnie jedna dodatnio półokreślona macierz Q taka, że P = Q 2 (por. [3, str. 92]). Macierz Q nazywamy pierwiastkiem macierzy P i oznaczamy symbolem P 1 2. Jeśli P 3Inaczej: kwadratowo ograniczone. 4Żeby to zadanie było wypukłe, wystarczy założyć, że wszystkie macierze P są dodatnio półokreślone.
3.3. Kwadratowo ograniczone programowanie kwadratowe 17 jest dodatnio określona, to P 1 2 jest też dodatnio określona. Odwrotność tej ostatniej będziemy oznaczać symbolem P 1 2. Gdy v = P 1 2 x, a w = P 1 2 q (P jest dodatnio określona, a x oraz q są dowolnymi wektorami), otrzymujemy z zależności (3.2) równość P 1 2 x + P 1 2 q 2 = P 1 2 x 2 + P 1 2 q 2 + 2q T P 1 2 P 1 2 x. Zauważmy też, że P 1 2 x 2 = x T Px, P 1 2 q = q T P 1 q oraz q T P 1 2 P 1 2 x = q T x. Dlatego x T Px + 2q T x + r = P 1 2 x 2 + 2qP 1 2 P 1 2 x + r. Po dodaniu do obu stron q T P 1 q otrzymujemy następującą równość: x T Px + 2q T x + r + q T P 1 q = P 1 2 x 2 + 2qP 1 2 P 1 2 x + r + q T P 1 q = P 1 2 x + P 1 2 q + r. Tak więc x T Px + 2q T x + r = P 1 2 x + P 1 2 q + r q T P 1 q. Powyższe rozważania pozwalają nam na przepisanie rozpatrywanego QCQP w formie zadania (3.3) P 1 2 0 x + P 1 2 0 q 0 2 + r 0 q T 0 P 1 0 q 0 p. o. Pi 1 2 x + Pi 1 2 q i 2 + r i q T i Pi 1 q i 0, i = 1, 2,..., k. Stały składnik r 0 q T 0 P 1 0 q 0 można pominąć przy wyznaczaniu optymalnej decyzji ˆx. Ażeby przekształcić to zadanie do SOCP zauważmy jeszcze, że pierwiastek kwadratowy jest funkcją ściśle rosnącą. Dlatego problem wyznaczenia optymalnej decyzji ˆx można sprowadzić do następującego SOCP: (3.4) t p. o. P 1 2 0 x + P 1 2 0 q 0 t P 1 2 i x + Pi 1 2 q i (q T i Pi 1 q i r i ) 1 2, i = 1, 2,..., k. Zmiennymi decyzyjnymi w powyższym zadaniu są liczba t R oraz wektor x R n.
3.3. Kwadratowo ograniczone programowanie kwadratowe 18 Szczególnym przypadkiem kwadratowo ograniczonego zadania programowania kwadratowego jest zadanie z ograniczeniami liniowymi, tzn. zadanie postaci: (3.5) x T P 0 x + 2q T 0 x + r 0 p. o. a T i x b i, i = 1, 2,..., k, przy założeniu, że P 0 jest dodatnio określona. Powyższy problem można przedstawić jako nowy problem względem zmiennych x oraz t (3.6) t p. o. P 1 2 0 x + P 1 2 0 q 0 t a T i x b i, i = 1, 2,..., k, z jednym ograniczeniem wymiaru n + 1 oraz k ograniczeniami wymiaru 1. Rozpatrywane do tej pory przez nas funkcje kwadratowe miały postać x T Px + 2q T x + r. Trochę ogólniejszą funkcją kwadratową jest funkcja (Ax + b) T (Ax + b) c T x d, gdzie A jest (dowolną) macierzą, x jest zmienną, b i c są wektorami stosownych wymiarów, a d jest liczbą. Dlatego ogólniejszą, bo,,kwadratem tutaj jest x T A T Ax, a macierz A T A, choć zawsze dodatnio półokreślona, nie musi być dodatnio określona. Będziemy rozważać następującą nierówność: (3.7) (Ax + b) T (Ax + b) c T x d 0. Powyższa nierówność zachodzi wtedy i tylko wtedy, gdy spełniony jest następujący warunek: (3.8) I Ax + b (Ax + b) T c T 0. x + d Ażeby uzasadnić powyższą równoważność przypomnijmy, że macierz symetryczna jest dodatnio półokreślona wtedy i tylko wtedy, gdy wszystkie jej minory główne są nieujemne.5 Minorami głównymi macierzy, której dodatnia półokreśloność nas interesuje, mogą być liczby 1, c T x + d, c T x + d z T z, gdzie z jest dowolnym podwektorem wektora Ax + b. Zauważmy, że zawsze z T z (Ax + b) T (Ax + b) oraz, 5Mówi o tym odpowiedni wariant twierdzenia Sylvestera (patrz np. [10, r. X]). Warto wspomnieć, że dodatnia określoność ma miejsce wtedy i tylko wtedy, gdy minory wiodące są dodatnie