Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Metody optymalizacji Metody poszukiwania ekstremum funkcji jednej zmiennej Materiały pomocnicze do ćwiczeń laboratoryjnych T Opracowanie: Piotr Hirsch, mgr inż. Kazimierz Duzinkiewicz, dr hab. inż. Gdańsk, 04.016
1. Wstęp. Algorytmy poszukiwania minimum funkcji jednej zmiennej podzielić możemy na metody gradientowe i bezgradientowe. Do grupy metod gradientowych zaliczamy: poszukiwanie miejsc zerowych pochodnej (metody bisekcji, siecznych), algorytmy drugiego rzędu (algorytm Newtona-Raphsona), interpolacje funkcjami wielomianowymi. W grupie metod bezgradientowych wyróżniamy, między innymi, algorytmy: dychotomii (dwudzielny), Fibonacciego, złotego podziału i interpolacji kwadratowej. W ćwiczeniu zapoznamy się z metodami: bisekcji, Newtona-Raphsona i złotego podziału. Problem poszukiwania minimum funkcji jednej zmiennej zapisujemy jako: min f() gdzie f() to funkcja kryterialna (funkcja celu), a R to argument funkcji (zmienna decyzyjna). Przy założeniu jednomodalności (unimodalności) f(), czyli posiadania przez nią dokładnie jednego minimum w znanym przedziale <a,b>. f() * Rys. 1. Funkcja unimodalna Na rysunku 1. przedstawiony został wykres funkcji unimodalnej, która dla < jest ściśle malejąca, a dla > jest ściśle rosnąca. Zauważyć należy, że funkcja unimodalna nie musi być gładka ani ciągła.. Metody gradientowe poszukiwania minimum funkcji jednej zmiennej W przypadku rozważania metod gradientowych, założenie o unimodalności musimy rozszerzyć o założenie o różniczkowalności, wówczas zadanie znalezienia minimum sprowadza się do zadania znalezienia punktu, w którym zeruje się pochodna f () = g() = 0. Metoda bisekcji Metoda bisekcji jest jednym z najprostszych sposobów na znalezienie pierwiastka nieliniowej funkcji. Aby ją zastosować, należy wybrać przedział początkowy, w którym znajduje się zero funkcji. Metoda bisekcji polega na systematycznym zmniejszaniu przedziału w którym znajduje się pierwiastek, poprzez podzielenie tego przedziału na dwie równe części i sprawdzenie, w której połowie znajduje się zero. Test ten opiera się o twierdzenie o wartości średniej:
Tw. o wartości średniej niech f() będzie funkcją ciągłą, zdefiniowaną na przedziale <a,b>, jeżeli wartości funkcji f(a), f(b) na krańcach przedziału mają różne znaki, to funkcja posiada co najmniej jedno zero na przedziale <a,b>. f(c) f(b) a c b f(a) Rys.. Ilustracja do algorytmu bisekcji Algorytm bisekcji: Założenia: f() jest ciągła na [a,b]; f(a)f(b) < 0 1. Wyznacz środek przedziału: c = a+b. Oblicz f(c) 3. Jeżeli f(a)f(c) < 0 to nowy przedział poszukiwań to [a,c] Jeżeli f(a)f(c) > 0 to nowy przedział poszukiwań to [c,b] 4. Jeżeli b a < ε to zakończ algorytm, jeżeli nie to przejdź do kroku 1. Metoda Newtona-Raphsona Metoda Newtona-Raphsona wykorzystuje informacje o pochodnej funkcji, w celu lepszego przybliżenia pierwiastka. Oznacza to, że przy zadaniu minimalizacji funkcji jednej zmiennej posługujemy się faktycznie drugą pochodną funkcji kryterialnej. Metoda korzysta z interpretacji geometrycznej pochodnej, to jest f ( i ) = tgα = f( i) i i+1, gdzie α jest kątem nachylenia osi X do stycznej w punkcie i. f( i) α * i+1 Rys. 3. Ilustracja do algorytmu Newtona-Raphsona i
Algorytm Newtona-Raphsona: Założenia: f() jest ciągła i ma pierwszą pochodną; początkowe rozwiązanie takie, że f ( o ) 0 1. Wyznacz wartość funkcji w punkcie i. Wyznacz wartość pochodnej funkcji w punkcie i 3. Oblicz kolejne przybliżenie rozwiązania i+1 = i f( i) f ( i ) 4. Jeżeli f( i+1 ) < ε to zakończ algorytm, jeżeli nie to przejdź do kroku 1. 3. Metody bezgradientowe poszukiwania minimum funkcji jednej zmiennej Metody z tej kategorii bazują jedynie na obliczaniu wartości funkcji kryterialnej, nie wymaga się żeby, poza unimodalnością, funkcja była ciągła, różniczkowalna, a nawet podana w formie analitycznej. Metoda złotego podziału Metoda złotego podziału polega na systematycznym zmniejszaniu przedziału nieokreśloności, to jest przedziału, o którym możemy powiedzieć, że znajduje się w nim minimum funkcji unimodalnej. Metoda ta cechuje się tym, że w każdej iteracji stosunek długości dwóch kolejnych przedziałów nieokreśloności jest taki sam i wynosi k = 5 1. Podstawową zaletą metody złotego podziału jest to, że w każdym kroku (za wyjątkiem pierwszego) zachodzi konieczność wyznaczenia wartości funkcji tylko w jednym punkcie. f() a 0 b 0 α 0 a 1 β 0 b 1 α 1 β 1 Rys. 4. Ilustracja do algorytmu złotego podziału, kolorem czerwonym zaznaczono odrzucone przedziały Algorytm złotego podziału: 1. Wyznacz położenie punktów według stosunku złotego podziału: α i = b i k (b i a i ) β i = a i + k (b i a i ). Jeżeli f(α i ) f(β i ) to odrzucamy przedział (β i, b i ], przyjmując: a b
a i+1 = a i b i+1 = β i 3. Jeżeli f(α i ) > f(β i ) to odrzucamy przedział [a i, α i ), przyjmując: a i+1 = α i b i+1 = b i 4. Jeżeli (b i+1 a i+1 ) < ε to zakończ algorytm, jeżeli nie to przejdź do kroku 1.