Narzdzia optymalizacji programowanie nieliniowe bez ogranicze wykad 6
Narzędzia optymalizacji programowanie nieliniowe bez ograniczeń (wykład 6) Ryszard Myhan
Programowanie liniowe a nieliniowe PROGRAMOWANIE LINIOWE • stały kierunek wzrostu • maksimum na wierzchołku PROGRAMOWANIE NIELINIOWE • zmienny kierunek wzrostu • maksimum w różnym miejscu W programowaniu nieliniowym mamy dwa rodzaje optimum: § optimum bezwarunkowe § optimum warunkowe: • wewnątrz • na krawędzi • na wierzchołku Programowanie nieliniowe bez ograniczeń 2
Sformułowanie zadania u Sformułowanie zadania optymalizacji nieliniowej bez ograniczeń § Funkcja celu f(x) § Zadanie optymalizacji polega na znalezieniu wektora zmiennych decyzyjnych x, należącego do zbioru n rozwiązań dopuszczalnych R , takiego, że: co jest równoznaczne zapisowi: Programowanie nieliniowe bez ograniczeń 3
Minimum lokalne i minimum globalne u Minimum lokalne i globalne funkcji f(x) § Punkt ^x stanowi minimum lokalne funkcji f(x) n w przestrzeni R , jeżeli istnieje takie otwarte otoczenie U x punktu x, że: § Punkt ^x stanowi minimum globalne funkcji f(x) n w przestrzeni R , jeżeli: Programowanie nieliniowe bez ograniczeń 4
Gradient funkcji Definicja F Jeżeli funkcja f(x) i jej wszystkie pierwsze pochodne są ciągłe na pewnym podzbiorze En to dla każdego punktu ^x w tym podzbiorze jest określany n-elementowy wektor kolumnowy zwany gradientem f(x) w punkcie ^x, jako: Programowanie nieliniowe bez ograniczeń 5
Gradient funkcji F Wektor jest prostopadły do płaszczyzny stycznej do hiperpłaszczyzny f(x)=const w punkcie x. F Spośród wszystkich przesunięć o jednakowej długości funkcja f(x) maleje najszybciej przy przesunięciu o x w kierunku wektora –( f). F Kierunek wektora –( f) jest więc kierunkiem najszybszego spadku funkcji f(x) w punkcie x. f(x) x 2 x Programowanie nieliniowe bez ograniczeń f(x 1, x 2)=const x 3 x 1 f(x 1, x 2, x 3)=const x 2 6
Macierz hesjanu F Jeżeli funkcja f(x) i jej wszystkie pierwsze i drugie pochodne są ciągłe na pewnym podzbiorze En to ^ x w tym podzbiorze jest określana dla każdego punktu n n-elementowa macierz , zwaną macierzą Hessego funkcji f(x) x Programowanie nieliniowe bez ograniczeń 7
Warunki optymalności Konieczne i wystarczające warunki optymalności ² Warunki jakie musi spełniać punkt optymalny nazywane są warunkami koniecznymi. Jeśli punkt nie spełnia tych warunków to nie jest punktem optymalnym. Spełnienie jednak tych warunków nie wystarcza do tego aby określić czy punkt jest optymalny. Punkt spełniający warunki konieczne jest punktem podejrzanym o to, że może być optymalny. ² Jeśli punkt spełniający warunki konieczne spełnia także warunki wystarczające wówczas jest to punkt optymalny. Programowanie nieliniowe bez ograniczeń 8
Warunki konieczne ² Warunek konieczny optymalności pierwszego rzędu ² Warunek konieczny optymalności drugiego rzędu § nie można założyć, że punktem minimum, § punkt Programowanie nieliniowe bez ograniczeń nie jest nie może być lokalnym minimum. 9
Warunki wystarczające ² Funkcja f(x), mająca ciągłe pochodne cząstkowe do rzędu drugiego włącznie w otoczeniu punktu stacjonarnego : § ma w punkcie minimum lokalne silne, gdy hesjan jest w punkcie dodatnio określony, § ma w punkcie maksimum lokalne silne, gdy hesjan jest w punkcie ujemnie określony, § nie można rozstrzygnąć czy istnieje ekstremum w punkcie , gdy hesjan w punkcie jest półokreślony dodatnio bądź ujemnie, § nie ma w punkcie ekstremum, gdy hesjan w punkcie nie jest określony. Programowanie nieliniowe bez ograniczeń 10
Programowanie nieliniowe bez ograniczeń v Metody programowania nieliniowego pozwalają odnaleźć minimum lokalne funkcji wielu zmiennych z dowolną zadaną dokładnością. • Wszystkie metody wymagają podania punktu startowego. • Działanie metod polega na badaniu własności funkcji START 2 START 1 w otoczeniu tego punktu. • Znaleziony nowy punkt, w którym wartość funkcji jest mniejsza niż w punkcie wyjściowym, staje się kolejnym punktem wyjściowym dalszych poszukiwań. • Ponieważ lokalizacja optimum nie jest z góry znana, więc proces poszukiwań kończy się, gdy nie można już uzyskać znaczącej poprawy wartości funkcji celu. Programowanie nieliniowe bez ograniczeń 11
Programowanie nieliniowe bez ograniczeń u Problem optymalizacji nieliniowej funkcji celu f(x) wielu zmiennych, sformułowany jest w postaci: u Metody optymalizacji nieliniowej bez ograniczeń można podzielić na dwie grupy: • • metody poszukiwań prostych; metody kierunków poprawy. Programowanie nieliniowe bez ograniczeń 12
Programowanie nieliniowe bez ograniczeń u Do metod przeszukiwań prostych zaliczana jest między innymi: • • • metoda Hooka-Jeevesa; metoda Rosenbrocka; metoda simpleksu Neldera-Meada. W pakiecie Optimization Toolbox programu MATLAB wykorzystano tylko metodę simpleksu Neldera-Meada § Kryterium zakończenia obliczeń w algorytmie tej metody stanowi zmniejszenie odległości pomiędzy środkiem symetrii simpleksu a jego wierzchołkami poniżej wartości określonej przez użytkownika Programowanie nieliniowe bez ograniczeń 13
Programowanie nieliniowe bez ograniczeń u Implementację metody zawiera funkcja fminsearch. u Możliwe są następujące opcje korzystania z tej funkcji: • • fun jest ciągiem znaków zawierającym funkcję celu x 0 to punkt startowy. Programowanie nieliniowe bez ograniczeń 14
Programowanie nieliniowe bez ograniczeń Zadanie 1 - opis: Znaleźć minimum funkcji Rosenbrocka Programowanie nieliniowe bez ograniczeń 15
Programowanie nieliniowe bez ograniczeń Zadanie 1 – implementacja w środowisku MATLAB: %% Zadanie programowania nieliniowego bez ograniczeń % określenie punktu startowego x 0=[-3; 4]; % wywołanie funkcji fminsearch [x, f]=fminsearch('prog_nl_bo_1 f', x 0) %% funkcja Rosenbrocka function f=prog_nl_bo_1 f(x) f=5*(x(2)-x(1). ^2+(1 -x(1)). ^2; end Programowanie nieliniowe bez ograniczeń 16
Programowanie nieliniowe bez ograniczeń Zadanie 1 - opis: Znaleźć minimum funkcji Rosenbrocka Rozwiązanie w środowisku MATLAB: x= 1. 0000 START f= 1. 8161 e-009 STOP Programowanie nieliniowe bez ograniczeń 17
Programowanie nieliniowe bez ograniczeń Zadanie 2 - opis: Znaleźć minimum funkcji Programowanie nieliniowe bez ograniczeń 18
Programowanie nieliniowe bez ograniczeń Zadanie 2 – implementacja w środowisku MATLAB: %% Zadanie programowania nieliniowego bez ograniczeń % określenie punktu startowego x 0=[0. 8 1. 0]; line(x 0(1), x 0(2), 'Marker', 'Marker. Size', 10); % wywołanie funkcji fminsearch [x, f]=fminsearch(@(x) sin(pi*x(1)). *sin(pi*x(2)), x 0) % wizualizacja line(x(1), x(2), 'Marker', 'Marker. Size', 20); plot([x 0(1), x(1)], [x 0(2), x(2)], 'k-'); Programowanie nieliniowe bez ograniczeń 19
Programowanie nieliniowe bez ograniczeń Zadanie 2 - opis: Znaleźć minimum funkcji Rozwiązanie w środowisku MATLAB: x= 1. 5000 0. 5000 f= -1. 0000 START Programowanie nieliniowe bez ograniczeń STOP 20
Optimization tool – fminsearch on - wyświetla błąd, gdy funkcja celu Informacja graficzna o przebiegu iteracji Funkcja wyjściowa wywoływana Określa zakres wyświetlania informacji wartość inną niż rzeczywista; Okno Uruchomienie wyświetlania solvera statusu i rozwiązanie i wyników (domyślnie wszystkie wykresy w każdej iteracji ( funkcja postaci dodatkowej o przebiegu wykonania off (domyślne) nie wyświetlaj błędu. rozwiązania zadania wyłączone) algorytmu optymalizacyjnego. @outputfun gdzie to Wybór typuoutputfun. m zadania Wskazanie m-pliku zstartowego zadeklarowaną Określenie punktu m-plik zawierający funkcję). (zadanie programowania Określenie funkcją celukryteriów (znak @ stopu oznacza, że nieliniowego bez ograniczeń) dołączany plik jest funkcją) Programowanie nieliniowe bez ograniczeń 21
Optimization tool – zadanie 1 Programowanie nieliniowe bez ograniczeń 22
Programowanie nieliniowe bez ograniczeń u Metody kierunków poprawy noszą nazwę metod minimalizacji w kierunku, a ich działanie polega na wielokrotnym wyznaczaniu kierunku, w którym może się znajdować optimum względem punktu wyjściowego poszukiwań. u Każda iteracja metody składa się z dwu faz: • wyznaczania kierunku poprawy, określonego przez wektor d; • minimalizacji w kierunku określonym przez wektor d z punktu wyjściowego. Programowanie nieliniowe bez ograniczeń 23
Programowanie nieliniowe bez ograniczeń u Minimalizacja w kierunku sprowadza się do poszukiwania minimum funkcji jednej zmiennej: gdzie: • • • f(x) – funkcja celu; xk – punkt wyjściowy poszukiwań w k-tej iteracji; d – kierunek poprawy. Implementację metody zawiera funkcja fminunc. Programowanie nieliniowe bez ograniczeń 24
Programowanie nieliniowe bez ograniczeń u Funkcja wykorzystuje jedną z metod quasi niutonowskich, zwaną również metodą zmiennej metryki. u Metoda ta wykorzystuje kierunek poprawy, obliczony ze wzoru wyprowadzonego dla metody Newtona, przy czym kierunek ten wyznaczany jest nie w oparciu o odwrotność hesjanu funkcji celu, ale w oparciu o jego aproksymację. § Macierz aproksymująca odwrotność hesjanu jest aktualizowana w każdej iteracji na podstawie gradientu funkcji celu. § Najbardziej znaną i efektywną metodę aproksymacji oparto o wzór Broyedena-Fletchera-Goldfarba-Shanno. Programowanie nieliniowe bez ograniczeń 25
Programowanie nieliniowe bez ograniczeń u Funkcja fminunc poszukuje minimum bez ograniczeń funkcji wielu zmiennych metodą zmiennej metryki według algorytmu BFGS. Programowanie nieliniowe bez ograniczeń 26
Programowanie nieliniowe bez ograniczeń gdzie: • • • fun – ciąg znaków zawierający nazwę funkcji celu; • grad – opcjonalny ciąg znaków zawierający nazwę funkcji obliczającej gradient funkcji celu w punkcie. • p 1, p 2 – dodatkowe parametry funkcji celu. x 0 – wektor określający punkt startowy poszukiwań; options – wektor dodatkowych parametrów, który może pojawić się zarówno wśród parametrów wejściowych, jak i wyjściowych, wnosząc poprzez swoje składowe informację co do sposobu optymalizacji i wyprowadzania wyników. Programowanie nieliniowe bez ograniczeń 27
Programowanie nieliniowe bez ograniczeń Zadanie 3 - opis: Znaleźć minimum funkcji (liść Kartezjusza) Programowanie nieliniowe bez ograniczeń 28
Programowanie nieliniowe bez ograniczeń Zadanie 3 – implementacja w środowisku MATLAB: %% Zadanie programowania nieliniowego bez ograniczeń % określenie punktu startowego x 0=[2; 2]; % wywołanie funkcji optymalizacyjnej fminunc [x, f 1, e_flag, out, grad, hes]=fminunc(@prog_nl_bo_3 f, x 0) %% plik funkcji celu function [f, g, H]=prog_nl_bo_3 f(x) f=x(1)^3+x(2)^3 -3*x(1)*x(2); if nargout>1 g=[3*(x(1)^2 -x(2)); 3*(x(2)^2 -x(1))]; end if nargout>2 H=[6*x(1); 6*x(2)]; end Programowanie nieliniowe bez ograniczeń 29
Programowanie nieliniowe bez ograniczeń Zadanie 3 - opis: Znaleźć minimum funkcji (liść Kartezjusza) Rozwiązanie w środowisku MATLAB: Computing finite-difference Hessian using user-supplied objectivfunction. x = 1. 0000 f 1 = -1. 0000 e_flag = 1 START out = iterations: 9 func. Count: 30 stepsize: 1 STOP grad = 0 0 hes = 6. 0007 -3. 0000 6. 0007 Programowanie nieliniowe bez ograniczeń 30
Optimization toot – fminunc on - wyświetla błąd, gdy funkcja celu ma wartość inną niż rzeczywista; off - (domyślne) nie wyświetlaj błędu. Wybóralgorytmu: typu zadania - fminunc Wybór rodzaju Określenie punktuprogramowania startowego Wskazanie m-pliku zzależne zadeklarowaną (zadanie Określenie kryteriów stopu od Możliwe ustawienia § large scale funkcją celu (znak @ oznacza, że nieliniowego bez ograniczeń) wybranego algorytmu, dla algorytmu § medium scale dołączany plik określa jest funkcją) średniej skali, czy gradient jest dostarczany w funkcji celu, czy też ma być przybliżony przez solver Programowanie nieliniowe bez ograniczeń 31
Optimization toot – zadanie 3 Programowanie nieliniowe bez ograniczeń 32
Programowanie nieliniowe bez ograniczeń Zadania programowania nieliniowego bez ograniczeń: 4. Znaleźć rozwiązanie następującego zadania: 5. Znaleźć rozwiązanie następującego zadania: 6. Znaleźć rozwiązanie następującego zadania: Programowanie nieliniowe bez ograniczeń 33
- Slides: 33