Metody Numeryczne Optymalizacja
Optymalizacja Definicja 1 Przez optymalizację będziemy rozumieć szukanie minimów lub maksimów funkcji.
Optymalizacja Definicja 2 Optymalizacja lub programowanie matematyczne może być określone jako poszukiwanie takiego x, który minimalizuje albo maksymalizuje f (x) pod warunkami d i a i i = 1, 2,..., n e i = b i i = 1, 2,..., p x n-wymiarowy wektor f (x) funkcją celu d i nierówności ograniczające e i równości ograniczające a i, b i stałe warunek znalezienia rozwiązania p + m n brak ograniczeń programowanie nieograniczone ograniczenia występują programowanie ograniczone f(x) i ograniczenia liniowe programowanie liniowe f(x) i ograniczenia kwadratowe programowanie kwadratowe f(x) i ograniczenia nieliniowe programowanie nieliniowe
Przypadek funkcji jednej zmiennej UWAGA! Odróżnienie maksimum (minimum) globalnego od lokalnego może stanowić problem. Trzy główne podejścia: wykres losowanie (z szerokiego zakresu) punktów startowych i wybranie tego o największej wartości absolutnej zaburzanie punktu startowego związanego z ekstremum i sprawdzanie czy procedura zawsze do niego powróci
Złoty podział l 0 = l 1 + l 2 (1) Teraz wstawiamy (1) do (2) l 1 l 0 = l 2 l 1 (2) l 1 l 1 + l 2 = l 2 l 1 (3)
Złoty podział Wprowadźmy R = l 2 /l 1, wtedy równanie (3) możemy zapisać 1 + R = 1 R (odwrotnosc rownania (3)) (4) Wybieramy dodatni pierwiastek R = złotą proporcją (złotą liczbą). R 2 + R 1 = 0 (5) 5 1 2 = 0.61803... Liczba ta nazywana jest
Złoty podział Partenon jeden z centralnie położonych budynków ateńskiego Akropolis. Jego budowę rozpoczęto w 447 p.n.e., a zakończono w roku 432 p.n.e.
Złoty podział Wybieramy punkty x l i x u pomiędzy, którymi znajduje się maksimum. Wybieramy dwa punkty wewnętrzne: gdzie d = x 1 = x l + d, x 2 = x u d, 5 1 2 (x u x l ) Jeśli f (x 1 ) > f (x 2 ) to odrzucamy < x l, x 2 > x 2 będzie nowym x l w następnej iteracji. Jeśli f (x 2 ) > f (x 1 ) to odrzucamy < x 1, x u > x 1 będzie nowym x u w następnej iteracji. Rysunek: Numerical Methods for Engineers
Złoty podział Dzięki wyborowi punktów x 1 i x 2 za pomocą złotej proporcji nie musimy liczyć wszystkich wartości f W przypadku pokazanym na rysunku stare x 1 będzie nowym x 2, nie musimy liczyć nowego f (x 2 ) bo f (x 2 ) new = f (x 1 ) old. Jedyne co należy zrobić to wyznaczyć nowe x 1 i wartość funkcji w tym punkcie: 5 1 x 1 = x l + (x u x l ). 2 Rysunek: Numerical Methods for Engineers
Złoty podział Podobne rozumowanie można przeprowadzić w przypadku gdyby maksimum było po lewej stronie x 2. W każdej iteracji odcinek zmniejsza się o czynnik równy złotej proporcji (ok. 62%). Rysunek: Numerical Methods for Engineers
Złoty podział Przykład 1 Szukamy maksimum funkcji f (x) = 2 sin x x2 10
Złoty podział Przykład 1 (c.d.) Weźmy x l = 0, x u = 4. Wtedy 5 1 d = (4 0) = 2.472 2 x 1 = 0 + 2.472 = 2.472 x 2 = 4 2.472 = 1.528 f (x 2 ) = f (1.528) = 2 sin 1.528 1.5282 10 = 1.765 f (x 1 ) = f (2.472) = 0.63 f (x 2 ) > f (x 1 ) maksimum jest w przedziale < x l, x 2 > < x 2, x 1 >
Złoty podział Przykład 1 (c.d.) x new u x new l = x old l = 0 = x1 old = 2.472 f (xu new ) = f (x old 1 ) x new 1 = x old 2 = 1.528 f (x new 1 ) = f (x old 2 ) Musimy wyznaczyć tylko: 5 1 d = (2.472 0) = 1.528 2 x new 2 = 2.4721 1.528 = 0.944 f (x new 2 ) = 1.531 Po ośmiu iteracjach: x l = 1.3901 f (x l ) = 1.7742 x u = 1.5279 f (x u) = 1.7647 d = 0.0851
Złoty podział Oszacowanie błędu: Załóżmy, że ekstremum jest w przedziale (x 2, x 1 ) (x 1, x u) (wybór przedziału nie ma znaczenia bo punkty wewnętrzne są symetryczne) Jeżeli ekstremum jest po lewej stronie, to maksymalny dystans do oszacowania wynosi: x a = x 1 x 2 = x l + R(x u x l ) x u + R(x u x l ) =... = (2R 1)(x u x l ) = 0.236(x u x l ). Jeżeli ekstremum jest po prawej stronie, to maksymalny dystans od oszacowania wynosi: x b = x u x 1 =... = (1 R)(x u x l ) = 0.382(x u x l ). A więc błąd względny możemy zapisać następująco: ɛ = (1 R) x u x l x max 100% (6)
Złoty podział algorytm input xlow, xhigh, maxit, es R (5 1/2 1)/2 xl xlow; xu xhigh d R(xu xl) x1 xl + d; x2 xu d f 1 f (x1); f 2 f (x2) if f 1 > f 2 then (maksymalizacja) xopt x1; fx f 1 else xopt x2; fx f 2 end if for iter = 1 to maxit do d R d if f 1 > f 2 then (maksymalizacja) xl x2; x2 x1 x1 xl + d f 2 f 1 f 1 f (x1) xopt x1 fx f 1 else xu x1; x1 x2 x2 xu d f 1 f 2 f 2 f (x2) xopt x2 fx f 2 end if if xopt 0 then ea (1 R)abs((xu xl)/xopt) 100 end if if ea es then EXIT end if output iter, xopt, fx end do if f 1 < f 2 then (minimalizacja) if f 1 < f 2 then (minimalizacja)
Interpolacja kwadratowa Parabola często jest dobrym przybliżeniem funkcji w pobliżu jej ekstremum. Rysunek: Numerical Methods for Engineers
Interpolacja kwadratowa Do trzech punktów obejmujących wspólnie ekstremum dopasowujemy funkcję kwadratową. Różniczkujemy dopasowaną funkcję. Pochodną przyrównujemy do zera i rozwiązujemy ze względu na x. x jest przybliżeniem ekstremum Rysunek: Numerical Methods for Engineers
Interpolacja kwadratowa x 3 = f (x 0)(x 2 1 x2 2 ) + f (x 1)(x 2 2 x2 0 ) + f (x 2)(x 2 0 x2 1 ) 2f (x 0 )(x 1 x 2 ) + 2f (x 1 )(x 2 x 0 ) + 2f (x 2 )(x 0 x 1 ) (7) x 0, x 1, x 2 punkty startowe ( zgadnięte ) x 3 wartość x odpowiadająca maksimum paraboli dopasowanej do punktów x 0, x 1, x 2 Punkty startowe do nowej iteracji możemy wybrać na dwa sposoby: x 0 = x 1, x 1 = x 2, x 2 = x 3 podejście podobne do bisekci lub złotego podziału odrzucamy x 0 jeśli nowe maksimum jest pomiędzy x 1 a x 2 odrzucamy x 2 jeśli nowe maksimum jest pomiędzy x 0 a x 1
Interpolacja kwadratowa Przykład 2 Szukamy maksimum funkcji f (x) = 2 sin x x2 10
Interpolacja kwadratowa Przykład c.d. x 0 = 0, x 1 = 1, x 2 = 4 f (x 0 ) = 0, f (x 1 ) = 1.5829, f (x 2 ) = 3.1136 Podstawiamy do równania (7) x 3 = 1.5055 f (x 3 ) = 1.7691 Za pomocą strategii podobnej do złotego podziału odrzucamy x 0 x new 0 = x old 1 = 1 x new 1 = x 3 = 1.5055 x new 2 = x old 2 = 4
Interpolacja kwadratowa Przykład c.d. Po pięciu iteracjach: x 0 = 1.4256, x 1 = 1.4266, x 2 = 1.4303 f (x 0 ) = 1.7757, f (x 1 ) = 1.7757, f (x 2 ) = 1.17714 x 3 = 1.4275 f (x 3 ) = 1.7757
Metoda Newtona Przypomnijmy, że poszukiwanie miejsc zerowych w metodzie Newtona polega na iteracyjnym zastosowaniu wzoru: x i+1 = x i f (x i ) f (x i ) Podobne podejście można zastosować przy poszukiwaniu ekstremów. Zdefiniujmy nową funkcję g(x) = f (x). W punkcie ekstremalnym x musi spełniać warunek: f (x) = g(x) = 0. Możemy skonstruować następujący schemat poszukiwania minimów (maksimów) funkcji x i+1 = x i f (x i ) f (x i ) (8)
Metoda Newtona Wady i zalety metody Newtona: Jest szybkozbieżna. Nie zapewnia zbieżności. Wymaga dobrego wyboru punktów startowych. Wymaga liczenia pochodnych. Pochodne można zastąpić wyrażeniami różnicowymi tworząc schemat podobny do metody siecznych.
Metoda Newtona Przykład 3 Szukamy maksimum funkcji f (x) = 2 sin x x2 10
Metoda Newtona Przykład c.d. x 0 = 2.5 f (x) = 2 cos x x 5 f (x) = 2 sin x 1 5 x i+1 = x i 2 cos x i x i /5 2 sin x i 1/5 x 1 = 2.5 2 cos 2.5 2.5/5 2 sin 2.5 1/5 = 0.99508 x 2 = 1.46901 x 3 = 1.42764 x 4 = 1.42755
Metoda Brenta Definicja 3 Metoda Brenta jest metodą hybrydową łączącą niezawodność metody złotego podziału i szybkość interpolacji kwadratowej.
Metoda Brenta algorytm (poszukiwanie minimum) input x1, xu, tol, f, miter (minimum pomiędzy x1, x4) phi (1 + 5)/2; rho 2 phi u x1 + rho(xu x1) v u; w u; x u fu f (u) fv fu; fw fu; fx fu xm 0.5(x1 + xu); d 0; e 0 for iter = 1 to miter do if x xm tol then EXIT para e > tol!uwaga zmienna logiczna if para then dopasowanie paraboli r (x w)(fx fv) q (x v)(fx fw) p (x v)q (x w)r s 2(q r) if s > 0 then p p s s /*Sprawdzamy czy parabola jest akceptowalna*/ para p < 0.5 s e && p > s(x1 x) && p < s(xu x) if para then e d d p/s //krok interpolacji kwadratowej end if end if if!para then if x xm then //złoty podział e x1 x else e xu x end if d rho e end if
Metoda Brenta algorytm (poszukiwanie minimum) u x + d fu f (u) if fu fx then if u x then x1 x else xu x end if v w; w x; fv fw fw fx fx fu x u; else if u < x then x1 u else xu u end if if fu fw w == x then v w; fv fw w u; fw fu else if fu fv v == x v == w then v u; fv fu end if end if xm 0.5(x1 + xu) end do output u, fu, niter //aktualizacja x1, xu, x, v, w, xm
Funkcje wielowymiarowe Metody poszukiwania ekstremów funkcji n-wymiarowych możemy podzielić na takie, które: nie wymagają liczenia pochodnych metody bezpośrednie (bezgradientowe) wymagają liczenia pochodnych metody spadku/wzrostu (gradientowe)
Metody bezpośrednie szukanie losowe W metodzie szukania losowego wielokrotnie liczymy wartość funkcji dla losowo wybranych zmiennych niezależnych (w rozsądnym przedziale). Jeśli próbka losowych zmiennych niezależnych jest wystarczająco duża, to ekstremum ostatecznie zostanie znalezione. Wadą metody jest konieczność wielokrotnego liczenia funkcji, a co za tym idzie duży koszt obliczeniowy.
Szukanie losowe algorytm (przypadek 2 zmiennych) input x1, x2, y1, y2, f (x), niterm, minf, maxf for i = 1 to niter do x RND(x 1, x 2 ) y RND(y 1, y 2 ) fn f (x, y) if fn < minf then (minimalizacja) minf fn minx x miny y end if end do output minx, miny, minf if fn > maxf then (maksymalizacja) maxf fn maxx x maxy y output maxx, maxy, maxf
Metody bezpośrednie przeszukiwanie jednowymiarowe Metoda przeszukiwania jednowymiarowego polega na poszukiwaniu ekstremum poprzez zmianę tylko jednej zmiennej niezależnej, podczas gdy pozostałe są ustalone. Problem redukuje się do zagadnienia jednowymiarowego i można użyć dowolnej metody stosowanej do optymalizacji funkcji jednej zmiennej.
Metody spadku (gradientowe) Gradient: f (x) = f x 1 (x) f x 2 (x). f x n (x) (9) Hesjan: H(x) = 2 f x1 2 2 f (x) (x) x 2 x 1. 2 f x n x 1 (x) 2 f x 1 x 2 (x)... 2 f x2 2 (x).... 2 f (x)... x n x 2 2 f x 1 x n (x) 2 f x 2 x n (x)...... 2 f xn 2 (x) (10)
Metody spadku (gradientowe) Twierdzenie 1 Jeśli funkcja f : W R jest różniczkowalna w punkcie x 0 należącym do wnętrza zbioru W oraz x 0 jest lokalnym minimum (maksimum) funkcji f to f (x 0 ) = 0. Definicja 4 Punkt x 0 intw nazywamy punktem krytycznym funkcji f : W R, jeśli f jest różniczkowalna w x 0 oraz f (x 0 ) = 0.
Metody spadku (gradientowe) Niech A = {a ij } n i,j=1 będzie macierzą symetryczną, tzn. a ij = a ji. Rozważmy formę kwadratową n x T Ax = a ij x i x j (11) i,j=1 Definicja 5 Określoność macierzy lub formy kwadratowej x T Ax definiujemy następująco: A jest nieujemnie określona, co oznaczamy A 0, jeśli x T Ax 0 x R n A jest dodatnio określona, co oznaczamy A > 0, jeśli x T Ax > 0 x R n \{0} niedodatnią określoność i ujemną określoność definiujemy odwracając powyższe nierówności macierz A nazywamy nieokreśloną, jeśli istnieją wektory x, x R n takie, że x T Ax > 0, x T A x < 0
Metody spadku (gradientowe) Twierdzenie 2 Jeśli x 0 intw jest punktem krytycznym f to: H(x) 0 x int W x 0 jest globalnym minimum H(x) 0 x int W x 0 jest globalnym maksimum