Przegląd metod optymalizacji wielowymiarowej Tomasz M. Gwizdałła 2012.12.06 Funkcja testowa Funkcją testową dla zagadnień rozpatrywanych w ramach tego wykładu będzie funkcja postaci f (x) = (x 1 1) 4 + 2(x 2 2) 4 O ile nie będzie powiedziane inaczej punktem startu będzie losowo wybrany punkt x 0 = (7.52949, 5.60592) Funkcja testowa Parametrami algorytmu są: punkt startu x 0 ortogonalna baza wektorów rozpinających przestrzeń poszukiwań S 1,..., S n początkowa długość kroku e współczynnik redukcji kroku α
Dla wszystkich wektorów bazy powtarzaj operację: A. Niech x 1,0 = x 0 i x = x k,i 1 + e S i i x = x k,i 1 e S i B. Jeśli f (x ) < f (x k,i 1 ) to x k,i = x, jeśli f (x ) < f (x k,i 1 ) to x k,i = x, inaczej x k,i = x k,i 1 Ekstrapolacja (pattern move) x = x k,n + (x k,n x k,0 ) = 2x k,n x k,0 test ekstrapolacji: jeśli f (x ) < f (x k,i 1 ) to x k+1,0 = x Jeśli żaden z ruchów w punkcie 1B nie przyniósł sukcesu dokonaj redukcji kroku e = e α Powyższe kroki wykonuj aż do spełnienia kryterium stopu, którym jest test szybkości zbieżności Rozważmy teraz przebieg algorytmu Hooke a-jeevesa w bazie S 1 = [1, 0], S 2 = [0, 1] i dla e = 1, α = 0.5 x = x k,i 1 + e S i i x = x k,i 1 e S i f (x ) < f (x k,i 1 ) x k,i = x, f (x ) < f (x k,i 1 ) x k,i = x Pattern move: x = x k,n + (x k,n x k,0 ) = 2x k,n x k,0
Redukcja kroku e = e α Po czterech iteracjach W bazie S 1 = [ 2 2, 2 2 ], S 2 = [ 2 2, 2 2 ] i dla e = 1, α = 0.5 Algorytm HJ wymaga w każdej iteracji wyznaczenia 2n wartości funkcji Jest algorytmem deterministycznym, niegradientowym
Parametrami algorytmu są: punkt startu x 0 ortogonalna baza wektorów rozpinających przestrzeń poszukiwań S 1,..., S n początkowa długość kroku e współczynnik korekcji zwiększający krok a współczynnik korekcji zmniejszający krok b Dla wszystkich wektorów bazy powtarzaj operację: A. Niech x 1,0 = x 0 i x = x k,i 1 + τ i S i B. Jeśli f (x ) < f (x k,i 1 ) to λ i = λ i + τ i, τ i = τ i a, w przeciwnym razie τ i = τ i b Pętla ma być powtarzana tak długo, aż dla wszystkich wektorów bazy krok będzie niepomyślny i nie stanie się to w pierwszej iteracji z uwzględnieniem danej bazy Jeśli pętla ulegnie zakończeniu, należy sprawdzić kryterium stopu, jeśli nie jest ono spełnione dokonać obrotu bazy Rozważmy teraz przebieg algorytmu Rosenbrocka w bazie S 1 = [1, 0], S 2 = [0, 1] i dla e = 1, a = 3, b = 0.5 τ1 λ1 τ2 λ2 1.0 0.0 1.0 0.0-0.5 0.0 1.0 0.0-0.5 0.0-0.5 0.0-1.5-0.5-0.5 0.0 + -1.5-0.5-1.5-0.5 + -4.5-2.0-1.5-0.5 + -4.5-2.0-4.5-2.0 + -13.5-6.5-4.5-2.0 +
Niech zbiór wektorów {q 1,..., q n } będzie bazą rozpinającą przestrzeń poszukiwań. Aby przetransformować ten układ do bazy ortonormalnej {S 1,..., S n }, należy postępować wg. schematu. S 1 = q1 q 1 S i = νi ν i, gdzie ν i = q i n 1 k=1 (q i S k )S k Przykład q 1 = 6.5[1, 0] 2[0, 1] = [ 6.5, 2] q 2 = 2[0, 1] = [0, 2] S 1 = q1 q 1 = [ 0.956, 0.294] ν 2 = q 2 (q 2 S 1 )S 1 = [0, 2] ([0, 2] [ 0.956, 0.294])[ 0.956, 0.294] ν 2 = [0.562, 1.827] S 2 = [0.294, 0.956] Po zmianie bazy Podsumowanie Metoda Rosenbrocka wymaga wyznaczenia w każdej iteracji n wartości funkcji Jest algorytmem deterministycznym, niegradientowym Elementem krytycznym jest konieczność ortogonalizacji bazy przestrzeni liniowej zawierającej wektor rozwiązania
Metoda Neldera-Meada polega na zbudowaniu w przestrzeni R n wypukłego obiektu opartego na n + 1 punktach i analizie zachowania funkcji w tych punktach Parametrami algorytmu są: parametr odbicia α parametr ekspansji β parametr kontrakcji γ parametr redukcji η Porządkujemy punkty ze względu na funkcję oceny i wyznaczamy środek masy układu x = n i=0 x i n + 1 Niech x 0 będzie takim wektorem, dla którego f (x 0 ) jest najmniejsze Dokonujemy operacji odbicia x r = x + α( x x n ) Odbity punkt akceptujemy, jeśli f (x 0 ) < f (x r ) < f (x n 1 ) W przypadkach granicznych dokonujemy jednej z dwóch operacji f (x r ) < f (x 0 ) - ekspansja - x e = x r + β(x r x) f (x n 1 ) < f (x r ) - kontrakcja - x c = x + γ( x x n ) Przeprowadzamy redukcję układu x i = x 0 + η(x i x 0 ) Zwyczajowo wartości stałych przyjmuje się α = 1, β = 1, γ = 0.5, η = 0.5 Pełzanie n + 1 wymiarowego wypukłego obiektu w przestrzeni n-wymiarowej
Pełzanie n + 1 wymiarowego wypukłego obiektu w przestrzeni n-wymiarowej Algorytm Neldera-Meada (Ameba) wymaga w każdej iteracji wyznaczenia n+1 wartości funkcji Jest algorytmem deterministycznym, niegradientowym Krytycznym punktem jest brak jakichkolwiek teoretycznych podstaw, które opisałyby zbieżność metody Pomimo deterministycznego charakteru przebieg algorytmu silnie zależy od losowego wyboru punktów początkowych Parametrami algorytmu są: punkt startu x 0 ortogonalna baza wektorów rozpinających przestrzeń poszukiwań S 1,..., S n wymagana dokładność obliczeń w kierunku wektora bazy ɛ 1,..., ɛ n wymagana dokładność obliczeń optimum globalnego ɛ Dla wszystkich wektorów bazy powtarzaj operację: A. Niech x 1,0 = x 0 znajdź minimum x funkcji jednej zmiennej λ: f (λ) = x k,i 1 + λs i z dokładnością ɛ i B. Podstaw x k,i = x Pętla ma być powtarzana tak długo, aż nie zostanie osiągnięta dokładność ɛ
Przebieg algorytmu Powella dla funkcji testowej f (x) = (x 1 1) 4 + 2(x 2 2) 4 z punktem startu x 0 = (7.52949, 5.60592) Weźmy bazę ortonormalną S 1 = [1, 0], s 2 = [0, 1] Pierwsza iteracja minimalizacja względem wektora S 1 = [1, 0] jest minimalizacją funkcji f (λ) = (x1 0 + λ 1)4 + 2(x2 0 2)4 f λ = 4(λ + x 1 0 1)3 λ = (x1 0 1) = 6.52949 x 1,1 1 = x1 0 + λ = 1 minimalizacja względem wektora S 1 = [0, 1] jest minimalizacją funkcji f λ f (λ) = (x 1,1 1 1) 4 + 2(x 1,1 2 + λ 2) 4 = 8(λ + x 1,1 2 2) 3 λ = (x 1,1 x 1,2 2 = x 1,1 2 + λ = 2 2 2) = 3.60592 Punkt startu x 0 = (7.52949, 5.60592), baza S 1 = [1, 0], s 2 = [0, 1] Dla porównania rozważmy minimalizację w bazach: S 1 = [ 2 2, 2 2 ], S 2 = [ 2 2, 2 2 ] i S 1 = [ 2 2, 2 2 ], S 2 = [1, 0]
Algorytm Powella wymaga wykonania w każdej iteracji n minimalizacji funkcji jednej zmiennej Efektywność algorytmu silnie zależy od kształtu minimalizowanej funkcji Efektywność algorytmu silnie zależy od wyboru bazy oraz wektora dokładności