Problem optymalizacyjny na następującą postać:
| fx→min,gix≤0,i=1,…,m,x∈Rn, | | (14.1) |
gdzie f,g1,…,gm:Rn→R. A zatem zbiór punktów dopuszczalnych jest zadany przez
| W=x∈Rn:g1x≤0,…,gmx≤0. | | (14.2) |
W rozważaniach tego rozdziału będziemy odwoływać się często do pojęcia zbioru kierunków dopuszczalnych zdefiniowanego następująco
| Ax=d∈Rn:d≠0 oraz istnieje λ*>0 taka że x+λd∈W ∀λ∈0,λ*. | |
14.1. Algorytm Zoutendijk'a dla ograniczeń liniowych
Rozważmy bardzo prostą modyfikację algorytmu największego spadku. Otóż jeśli punkt znajduje się wewnątrz zbioru W, to istnieje możliwość poruszania się wzdłuż kierunku największego spadku aż do uderzenia w brzeg. Jeśli punkt już jest na brzegu, to naturalne jest wybrać taki kierunek ruchu, by pozwalał on na jak największy spadek wartości funkcji celu a jednocześnie na ruch w jego kierunku. Kierunek taki nazywamy dopuszczalnym kierunkiem spadku w punkcie x i definiujemy jako kierunek dopuszczalny d, taki że Dfxd<0.
Okazuje się, że pomysł ten działa całkiem dobrze, jeśli ograniczenia są liniowe i nosi nazwę algorytm Zoutendijk'a. Przypomnijmy, że liniowość ograniczeń znacznie upraszcza problem, co pozwoli nam na rozszerzenie analizy w tym podrozdziale do zagadnień z ograniczeniami nierównościowymi i równościowymi, tzn.
| fx→min,Ax≤b,Qx=a,x∈Rn. | | (14.3) |
Tutaj A jest macierzą m×n, Q jest macierzą l×n, zaś b∈Rm i a∈Rl. Poniższy lemat charakteryzuje zbiór dopuszczalnych kierunków spadku. Jego dowód pozostawiamy jako ćwiczenie.
Lemat 14.1
Niech x będzie punktem dopuszczalnym dla zagadnienia (14.3) i załóżmy, że macierz A i wektor b mogą być podzielone w zależności od aktywności ograniczeń na A1, A2 i b1,b2 (z dokładnością do przenumerowania ograniczeń), tzn. A1x=b1 oraz A2x<b2. Wektor d∈Rn jest kierunkiem dopuszczalnym w x, jeśli A1d≤b1 oraz Qd=0. Jeśli, ponadto, Dfxd<0, to d jest dopuszczalnym kierunkiem spadku.
Jak wybrać najlepszy dopuszczalny kierunek spadku w punkcie x? Najprościej byłoby rozwiązać zagadnienie
| Dfxd→min,d∈Ax,d≤1. | | (14.4) |
Ograniczenie na normę wektora d jest konieczne. Jeśli byśmy je opuścili, to dla dowolnego dopuszczalnego kierunku spadku d jego wielokrotność λd, λ>0, jest również kierunkiem spadku. Co więcej, Dfxd<0, czyli limλ→∞Dfxλd=-∞ i problem powyższy nie ma jednoznacznego rozwiązania.
Korzystając z lematu 14.1 powyższe zagadnienie (14.4) można wyrazić jako
| Dfxd→min,A1d≤0,Qd=0,dTd≤1. | |
Zauważmy, że jedyna nieliniowość związana jest z ograniczeniem na normę wektora d. W praktyce, bez większych strat dla jakości algorytmu, zamienia się ją na ograniczenia liniowe, które pozwalają skorzystać z szybkich metod optymalizacji liniowej (np. algorytmu sympleks – patrz monografie Bazaraa, Jarvis'a, Shetty [2], Gass'a [8] lub Luenberger'a [9]). Najpopularniejsze są następujące dwa zamienniki normy euklidesowej d:
-
norma l∞, tzn. supidi≤1, co zapisuje się jako
-
norma l1, tzn. ∑idi≤1, co zapisuje się jako
| ∑i=1nηi≤1,-ηi≤di≤ηi,i=1,…,n, | |
gdzie η1,…,ηn są nowymi zmiennymi (pomocniczymi).
Oto pełny algorytm:
-
Inicjalizacja: Wybierz punkt początkowy x0.
-
Krok k-ty:
-
Wybierz kierunek ruchu dk jako rozwiązanie problemu optymalizacyjnego:
| Dfxd→min,A1d≤0,Qd=0,-1≤di≤1,i=1,…,n. | | (14.5) |
-
Jeśli dk=0, to zakończ działanie algorytmu. Punkt xk spełnia warunek konieczny pierwszego rzędu. W przeciwnym przypadku kontynuuj.
-
Połóż αk=argminα∈0,Akfxk+αdk, gdzie Ak jest największą liczbą o tej własności, że odcinek łączący xk i xk+Akdk zawarty jest w W.
-
Przyjrzyjmy się jeszcze raz wyborowi kierunku dk. Wektor d=0 spełnia wszystkie ograniczenia, a zatem optymalna wartość funkcji celu Dfxdk jest co najwyżej równa zeru. Wówczas punkt xk spełnia warunek konieczny pierwszego rzędu, czego dowodzimy w poniższym lemacie.
Lemat 14.2
W xk spełniony jest warunek konieczny pierwszego rzędu wtw, gdy dk=0.
Dowód
Przypomnijmy najpierw notację. Przez Dxk oznaczamy stożek kierunków spadku, tzn.
zaś przez Tlinxk – stożek kierunków stycznych dla ograniczeń zlinearyzowanych w punkcie xk, który dla ograniczeń liniowych danych jest wzorem
| Tlinxk=d∈Rn:A1d≤0,Qd=0. | |
Zauważmy, że dk=0 jest rozwiązaniem zagadnienia (14.5) wtw, gdy Dxk∩Tlinxk=∅. Postępując dalej jak w dowodzie twierdzenia 8.1 dostajemy implikację w lewo. Implikacja w drugą stronę wynika faktu, że na mocy lematu Farkasa, lemat 5.3, istnienie rozwiązania (8.5) pociąga brak rozwiązania (8.4), co jest równoważne temu, że Dxk∩Tlinxk=∅.
∎
14.2. Algorytm Zoutendijk'a dla ograniczeń nieliniowych
Zastanówmy się, czy algorytm Zoutendijk'a działa równie dobrze dla ograniczeń nieliniowych:
-
Inicjalizacja: Wybierz punkt początkowy x0.
-
Krok k-ty:
-
Wybierz kierunek ruchu dk jako rozwiązanie problemu optymalizacyjnego:
-
Jeśli dk=0, to zakończ działanie algorytmu. Punkt xk spełnia warunek konieczny pierwszego rzędu. W przeciwnym przypadku kontynuuj.
-
Połóż αk=argminα∈0,Akfxk+αdk, gdzie Ak jest największą liczbą o tej własności, że odcinek łączący xk i xk+Akdk zawarty jest w W.
-
W poniższych przykładach rozważamy minimalizowanie funkcji fx1,x2=-2x1-x2 na różnych zbiorach. Punkt minimum oznaczamy zawsze przez x¯. Na rysunku 14.1 widać, że już w kroku drugim osiągamy minimum. Jeśli zbiór W nie jest wypukły algorytm prowadzi nas w kozi róg, z którego już nie możemy się uwolnić, patrz 14.2. Jest to niestety cecha wszystkich algorytmów tego typu, więc musimy zawsze wymagać, by zbiór punktów dopuszczalnych był wypukły. Czy to już wystarczy? Niestety nie. Na rysunku 14.3 możemy zobaczyć, że nawet w przypadku zbioru wypukłego algorytm nie działa. Problem wyboru kierunku d1 nie ma rozwiązania, gdyż zbiór Dx1 nie jest domknięty. Intuicyjnie łatwo jest podać rozwiązanie tego problemu. Należy wybrać taki kierunek dk, aby nie tylko spadek był jak największy, ale również, żeby dość duży fragment półprostej poprowadzonej w tym kierunku zawierał się w zbiorze W. Co więcej, zależy nam na prostocie, czytaj liniowości, zagadnienia optymalizacyjnego wyznaczającego kierunek dk. Rozwiązanie podpowiada następujący lemat, którego dowód pozostawiamy jako ćwiczenie.
Lemat 14.3
Niech x będzie punktem dopuszczalnym. Jeśli f,gi, i∈Ix są różniczkowalne w x i gi, i∉Ix są ciągłe w x, to kierunek d∈Rn spełniający Dfxd<0 i Dgixd<0, i∈Ix, jest dopuszczalnym kierunkiem spadku.
Lemat powyższy podaje tylko warunek dostateczny. Łatwo znaleźć przykład zagadnienia optymalizacyjnego z ograniczeniami nierównościowymi, dla którego jeden z dopuszczalnym kierunków spadku nie spełnia założeń lematu (ćwiczenie 14.5).
Znalezienie wektora d∈Rn spełniającego Dfxd<0 i Dgixd<0, i∈Ix sprowadza się do rozwiązania zagadnienia
| max{Df(x)d,Dgi(x)d,i∈I(x)}→min,-1≤dk≤1,k=1,…,n. | |
Trudną w implementacji funkcję celu można sprowadzić do znacznie prostszej formy problemu optymalizacji liniowej:
| η→min,Dfxd≤η,Dgixd≤η,i∈Ix,-1≤dk≤1,k=1,…,n. | | (14.6) |
Optymalizacji dokonuje się tutaj względem dwóch zmiennych: d∈Rn oraz η∈R. Zauważmy, że η≤0, gdyż para d=0, η=0 rozwiązuje powyższy układ. Jeśli wartość funkcji celu jest mniejsza od zera, to, na mocy lematu 14.1, rozwiązanie jest dopuszczalnym kierunkiem spadku. Jeśli η=0 jest rozwiązaniem i w punkcie x spełniony jest warunek liniowej niezależności ograniczeń, to wówczas w x zachodzi warunek konieczny pierwszego rzędu. Prawdziwa jest również odwrotna implikacja.
Lemat 14.4
Jeśli w punkcie dopuszczalnym x spełniony jest warunek liniowej niezależności ograniczeń i rozwiązaniem problemu (14.6) jest η=0, to w x zachodzi warunek konieczny pierwszego rzędu. I odwrotnie, jeśli w x spełniony jest warunek konieczny pierwszego rzędu, to rozwiązaniem (14.6) jest η=0 (nie jest tu konieczne założenie o regularności punktu x).
Dowód
Jeśli η=0 jest rozwiązaniem, to układ Ad<0, gdzie A składa się wierszowo z gradientów Dfx i Dgix, i∈Ix, nie ma rozwiązania. Na mocy lematu 6.2 istnieje y≥0, y≠0, dla którego ATy=0. Połóżmy (μ⌃0,μ⌃i,i∈I(x))=y i μ⌃i=0, i∉Ix. Równość ATy=0 zapisać można w następujący sposób:
| μ⌃0Dfx+∑i∈Ixμ⌃iDgix=0T. | |
Z założenia o liniowej niezależności gradientów ograniczeń aktywnych wnioskujemy, że μ⌃0≠0. Kładąc μi=μ⌃i/μ⌃0, i=1,…,m, dostajemy wektor mnożników Lagrange'a z warunku koniecznego pierwszego rzędu.
Aby dowieść implikacji odwrotnej, zauważmy, że jeśli w x spełniony jest warunek konieczny pierwszego rzędu, to y=(1,μi,i∈I(x)) spełnia następujące warunki: y≥0, y≠0 i ATy=0. Na mocy lematu 6.2 nie istnieje d∈Rn, dla którego Ad<0. A zatem rozwiązaniem 14.6 jest η=0.
∎
Zapiszmy w pełni algorytm zaproponowany przez Zoutendijka dla problemów z nieliniowymi ograniczeniami nierównościowymi:
-
Inicjalizacja: Wybierz punkt początkowy x0.
-
Krok k-ty:
-
Wybierz kierunek ruchu dk jako rozwiązanie problemu optymalizacyjnego (14.6)
-
Jeśli η=0, to zakończ działanie algorytmu. Punkt xk spełnia warunek konieczny pierwszego rzędu. W przeciwnym przypadku kontynuuj.
-
Połóż αk=argminα∈0,Akfxk+αdk, gdzie Ak jest największą liczbą o tej własności, że odcinek łączący xk i xk+Akdk zawarty jest w W.
-
Przykład 14.1
Rozważmy problem optymalizacji z ograniczeniami nieliniowymi:
| 2x12+2x22-2x1x2-4x1-6x2→min,x1+5x2≤5,2x12-x2≤0,x1≥0,x2≥0. | |
Pokażemy, w jaki sposób postępując iteracje metody Zoutendijka. Weźmy punkt startowy x0=0,0.75T. Dostajemy następujący ciąg punktów:
| | x1=0,2083,0.5477T,x2=0.5555,0.8889T, | |
| | x3=0.6479,0.8397T,x4=0.6302,0.8740T. | |
Widzimy, że ciąg ten dość znacznie oscyluje w zbiorze punktów dopuszczalnych, patrz rys. 14.4. Jest to charakterystyczne zachowanie metody kierunków spadku dla problemów z ograniczeniami.
Algorytm Zoutendijka może polec nawet na dość prostych prostych problemach optymalizacyjnych. Rozważmy minimalizowanie funkcji liniowej fx=-2x1-x2 na zbiorze zaznaczonym na rysunku 14.5. Minimum znajduje się w punkcie x¯=1,1T. Rozpoczynając od punktu x0=-1,0T, kolejne iteracje algorytmu Zoutendijka wygenerują ciąg punktów zbiegający do 1,0T. Algorytm ten nie pozwoli nam na przybliżenie właściwego rozwiązania x¯. Co więcej, wartość funkcji celu w punkcie 1,0T wynosi -2, w porównaniu do fx¯=-3. W następnym podrozdziale pokażemy jak mała modyfikacja pozwoli naprawić algorytm Zoutendijka.
14.3. Modyfikacja Topkis'a-Veinott'a
Topkis i Veinott zaproponowali w roku 1967 niewielką modyfikację wyznaczania kierunku dk w algorytmie Zoutendijka:
| η→min,Dfxd≤η,Dgixd≤η-gix,i=1,…,m,-1≤dk≤1,k=1,…,n. | | (14.7) |
Linia dotycząca warunku na gradienty ograniczeń obejmuje teraz wszystkie ograniczenia. Dla ograniczeń aktywnych, i∈Ix, mamy gix=0, a więc warunki te są identyczne jak w (14.6). W przypadku ograniczeń nieaktywnych gix<0, czyli prawa strona jest większa niż η. O ile dla dużych wartości gix ograniczenie takie jest prawie niezauważalne, to dla ograniczeń, które są ”prawie aktywne”, odgrywa znaczną rolę. Poza tym, z punktu widzenia implementacji, rozwiązuje to kwestię znajdowania zbioru ograniczeń aktywnych (ze względu na niedokładności zapisu liczb, prawie nigdy nie będzie spełniony warunek gix=0).
O skuteczności modyfikacji (14.7) świadczy następujące twierdzenie, które podamy bez dowodu:
Twierdzenie 14.1
Załóżmy, że f,gi, i=1,…,m, są klasy C1. Jeśli ciąg xk wygenerowany przez algorytm Zoutendijka z modyfikacją Topkis'a-Veinott'a posiada punkt skupienia, w którym spełniony jest warunek liniowej niezależności, to zachodzi w nim warunek konieczny pierwszego rzędu.