Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

December 2, 2011

METODI OPTIMIZACIJE

Metodi optimizacije

Seminarski rad

Newton-Raphson metoda i metoda Nelder-Mead


Dositej ajinovi 1173/10 Marko Potkonjak 267/04

Profesor: Boirar Rosi

Datum: 02.12.2011
-0-

December 2, 2011

METODI OPTIMIZACIJE

SADRAJ 1. Uvod 1.1 Problem optimizacije 1.2 Pristupi 2. Newton-Raphson metoda 2.1 Primer Newton-ove metoda u programskom paketu Matlab 3. Nelder-Mead metoda 3.1 Primer Nelder-Mead metode u programskom paketu Matlab 4. Literatura 2 3 4 6 12 15 23 29

-1-

December 2, 2011

METODI OPTIMIZACIJE

1. Uvod
U matematici, kompjuterskoj nauci ili menadmentu, optimizacija znai odabir najboljih elemenata iz nekog skupa moguih alternativa. U najprostijem sluaju optimizacioni problem se sasvoji u maksimizovanju ili mininizovanju realne funkcije tako to sistematski biramo ulazne vrednosti iz dozvoljenog skupa a zatim raunamo vrednost funkcije.

slika 1: maksimum paraboloida (crvena taka)

Uopteno govorei, optimizacija podrazumeva pronalaenje "najbolje raspoloive" vrednosti neke funkcije cilja od svih moguih reenja, u definisanom domenu korienjem primenjene matematike. Deferma i Lagran su prvi doli do raunskih formula za identifikovanje optimuma, dok su Njutn i Gaus predloili iterativne metode za pribliavanje optimumu.

-2-

December 2, 2011

METODI OPTIMIZACIJE

1.1 Problem optimizacije

 Dato je: y - kriterijum y - uslovi izraeni nejednakostima y - uslovi izraeni jednakostima

 Trai se: y koje zadovoljava date uslove i maksimizira (minimizira)

 Napomena: y maksimizujemo po konanom broju varijabli, a ne po funkciji

-3-

December 2, 2011

METODI OPTIMIZACIJE

1.2 Pristupi
Postoje dva naina pristupanju reavanja problema optimizacije, analitike i numerike metode. Analitike metode su osavremenjavanjem alata za proraun manje prisutne zbog este kompleksnosti samog problema. Numerike metode omoguavaju iterativni pristup pronalaenju reenja, lako se koriste primenom raunara, bre se dolazi do reenja, ali se mora poznavati teorija u smislu odabira najbolje metode za reavanje datog problema i moraju se posedovati osnovna znanja iz programiranja.

slika 2: Pristupi optimizacije, sa naglaskom na gradijentne metode.

-4-

December 2, 2011

METODI OPTIMIZACIJE

Postoje: linearni sluajevi (, - linearne funkcije) gde se do reenja dolazi eksplicitno, u konanom broju koraka korienjem poznatih metoda (npr. Simplex);

algoritma koji je primenljiv za sve nelinearne probleme. U zavisnosti od tipa problema odluujemo se za neki od metoda, a korisne informacije su zakrivljenost funkcije, dimenzionalnost i tip ogranienja.

i nelinearni sluajevi (bilo koja funkcija od, nelinearna. Nema

Napomena: Obe metode o kojima je re u ovom radu (Njutn-Rafson i Nelder-Midova) se bave nelinearnim problemima, i u osnovi su gradijentne metode, s toga je taj pristup i naglaen na slici 2 sa prethodne strane.

-5-

December 2, 2011

METODI OPTIMIZACIJE

2. Newton-Raphson metoda
Mnogi problemi u inenjerstvu i nauci zahtevaju pronalaenje reenja neke nelinearne jednaine (traenje korena). Ovo je jedan od najstarijih problema u matematici. Problem se, u stvari, svodi na sledee: Za datu neprekidnu nelinearnu funkciju f(x), treba nai vrednosti x ! \ takvu da je f (\ ) ! 0 . Postupku reavanja nelinearnih jednacina moemo razlikovati dve faze: y Lokalizacija nula y Poboljanje reenja

Poboljanje reenja predstavlja odreivanje reenja do eljene tanosti pomou neke od sistematskih procedura. U tu svrhu mogu se koristiti:

y Osnovne karakteristike u pronalaenju korena y Metode na zatvorenom intervalu y Metode na otvorenom intervalu

-6-

December 2, 2011

METODI OPTIMIZACIJE

Metode na otvorenom intervalu: y y y y Metoda proste iteracije Njutnova metoda Modifikovana Njutnova metoda Metoda secice

Njutnova metoda (Newton-Raphsonova metoda) je jedna od najpoznatijih i najefikasnijih procedura u celoj numerikoj analizi. Metoda uvek konvergira ako je poetna aproksimacija dovoljno blizu reenju. Konvergencija Njutnove metode je kvadratna. Grafika interpretacija metode data je na slici 3. Prvi korak metode je lokalna aproksimacija funkcije f(x) pomocu linearne funkcije g(x) koja predstavlja tangentu funkcije f(x) u tacki . Reenje jednacine g(x) = 0, , predstavlja sledeu aproksimaciju reenja jednaine f(x) = 0.

Slika 3: Grafika interpretacija Njutnove metode

-7-

December 2, 2011

METODI OPTIMIZACIJE

Kako bismo izveli algoritam za Njutnovu metodu, postavimo sledeu relaciju: 


 

Reenje ove jednaine za xi  1 , pri emu je f ( xi  1) ! 0 daje:  


to predstavlja rekurzivnu formulu za Njutnovu metodu. Jednaina 1.2 se ponavlja dok se ne zadovolji jedan od ili oba kriterijuma konvergencije:    

Njutnova metoda moe se dobiti i direktno iz Tejlovorog niza, ako se zanemare lanovi vieg reda, tj.    i konano:

 

-8-

December 2, 2011

METODI OPTIMIZACIJE

Konvergencija Newtonove metode se moe odrediti na sledei nain. Jednaina (1.2) predstavlja jednacinu oblika:  pri emu je funkcija g(x) data sa:

 

S toga, Njutnova metoda predstavlja specijalni sluaj metode proste iteracije i konvergira ako je ispunjen uslov    Diferenciranjem jednaine (1.7) dobijamo:

 

Kako za koren jednaine vai x ! \ i f (\ ) ! 0, s tim je g ' ( x) ! 0, tako je zadovoljen uslov (1.8), a metoda je konvergentna.

-9-

December 2, 2011

METODI OPTIMIZACIJE

Brzina konvergencije se moe odrediti ako se od obe strane jednaine (1.7) oduzme \ ,i sa e ! x  \ oznai greka. Na taj nain se dobija:    

Razvojem funkcije f(x) u Taylorov red, i zanemarujui lanove iznad drugog reda, za x ! \ vai:    

Ako sada poslednji izraz uvrstimo u jednainu (1.10), pri emu je f (\ ) ! 0 dobijamo:

 

Obzirom da za i p g, xi p \ , f (\ ), f (xi ) p f (\ ) imamo:

Poslednja jednaina jasno pokazuje da je Njutnova metoda metoda tanosti drugog reda, tj. kvadratna, to u praksi znai da se sa svakom iteracijom udvostruava broj znaajnih cifara. Ipak, veoma je vano da uslov (1.8) bude ispunjen, da poetna aproksimacija bude to blie reenju, poto se moe dogoditi da procedura konvergira prema nekom drugom korenu (reenju).
- 10 -

December 2, 2011

METODI OPTIMIZACIJE

Ova metoda ima odline osobine za lokalnu konvergenciju, ali globalna konvergencija moe biti slaba zbog zanemarivanja viih lanova Tejlorovog reda. Meutim, Njutnova metoda ima i nedostataka, jer je za neke funkcije vrlo teko analitiki izraunati prvi izvod, a za neke funkcije to uopte nije mogue. Osim toga, moe se desiti da u toku iterativnog procesa prvi izvod bude jednak nuli, ime ne bi bilo mogue nastaviti postupak reavanja. U takvim sluajevima koriste se neke druge metode, kao to je modifikovana Njutnova metoda ili metoda seice.

Prednosti: Tanost metode je drugog reda, pa se svakom iteracijom udvostruava broj znaajnih cifara Odline osobine lokalne konvergencije Nedostaci: Problem analitikog odreivanja prvog izvoda za sloenije funkcije

- 11 -

December 2, 2011

METODI OPTIMIZACIJE

2.1 Primer Newton-ove metoda u programskom paketu Matlab


function x = newton(f_str,df_str,x0,n) f = inline(f_str); df = inline(df_str); disp('Broj iteracija =') disp(0) x = x0; xn = 0; disp('Xn =') disp(x) disp('f(x) =') disp(f(x)) disp('f''(x) =') disp(df(x)) for i = 1:n xn = x - (f(x)/df(x)); if x == xn disp('Ovo je najvisa postignuta tacnost') i = i-1; break end x = [-10.0:0.01:10.0]; plot(x,f(x)); x = xn; disp('Broj iteracija =') disp(i) disp('Xn =') disp(x) disp('f(x) =') disp(f(x)) disp('f''(x) =') disp(df(x)) end disp('Broj izvrsenih iteracija:') disp(i) end

Napomena: funkcija se u komandnom prozoru unosi na sledei nain: newton(funkcija',prvi izvod funkcije',prva procena,broj iteracija) npr: newton('x.^3+cos(x)','3.*x.^2-sin(x)',0.1,10)
- 12 -

December 2, 2011

METODI OPTIMIZACIJE

Prikaz reenja:
Broj iteracije = 0 Xn = 0.1000 f(x) = 0.9960 f'(x) = -0.0698 Broj iteracije = 1 Xn = 14.3626 f(x) = 2.9625e+003 f'(x) = 617.8758 Broj iteracije = 2 Xn = 9.5679 f(x) = 874.8892 f'(x) = 274.7743 Broj iteracije = 3 Xn = 6.3838 f(x) = 261.1569 f'(x) = 122.1593 . . .

- 13 -

December 2, 2011

METODI OPTIMIZACIJE

. . .

Broj iteracije = 10 Xn = -0.8655 f(x) = -8.1536e-005 f'(x) = 3.0087 Broj izvrsenih iteracija: 10

ans = -0.8655

Slika 3a: Grafiki prikaz reenja

- 14 -

December 2, 2011

METODI OPTIMIZACIJE

3. Metoda Nelder-Mead
Ovu nelinearnu optimizacionu metodu su razvili Nelder I Mead 1965. Godine, i ona ne zahteva proraunavanje izvoda. Formira se geometrijsko telo Simplex sa N+1 temena, a problem je Ndimenzionalan. Siplex se pomera u prostoru pomou osnovnih transformacija dok se ne pronae najbolje reenje. Od strane korisnika se definie samo jedna taka simplex-a, , a ostalih N taka su pronaene po formuli. Cilj metode je pomeranje Simplex-a, dok ne okrui minimum, a onda da se skuplja oko minimuma dok ne ue u granice prihvatljive greke. Mana ovog metoda je to moramo imati zaseban algoritam za traenje minimuma i to nije naroito brz.

Inicijalni trougao BGW Neka je f(x,y) funkcija koju treba minimizovati. Za poetak, imamo tri temena trougla: , Za funkciju pronaene su vrednosti za te tri take: za . Vrednosti su onda sloene tako da je . Take obeleavamo sa:   

- 15 -

December 2, 2011

METODI OPTIMIZACIJE

Da bi se naznailo da je B najbolja taka, G dobra I W najgora taka.

Sredinja taka dobre stranice Proces konstrukcije koristi sredinju taku linije koja spaja B I G. Nalazi se usrednjavanjem koordinata:    

Refleksija korienjem take R Funkcija opada kako se pomeramo du stranice trougla od take do take , a takoe opada i dok se pomeramo du stranice trougla od take do . Stoga je izvodljivo da uzima manje vrednosti u takama koje lee dalje od take , na suprotnoj strani linije koja lei izmeu taaka i . Izabraemo test taku koju smo dobili refleksijom trougla preko stranice . Da bismo odredili , prvo moramo da naemo srednju taku stranice . Onda povlaimo liniju od do i nazivamo je duina . Ova linija je produena za duinu , kroz taku , kako bismo odredili poloaj take . (slika 4). Vektorska formula za dobijanje take R je:  

- 16 -

December 2, 2011

METODI OPTIMIZACIJE

Slika 4: Trougao i sredinja taka

Ekspanzija korienjem take E Ukoliko je vrednost funkcije u tacki manja od vrednosti funkcije u taki , onda smo se pomerili u pravom smeru prema minimumu. Pitamo se da li je minimum funkcije samo malo udaljen od take . S toga produavamo liniju kroz I do take za duinu . Tako smo formirali trougao . (slika 5). Ukoliko je vrednost funkcije u manja od vrednosti funkcije u , onda smo pronali bolju taku nego to je . Vektorska formula za E je:   

- 17 -

December 2, 2011

METODI OPTIMIZACIJE

Slika 5: Trougao , taka i produena taka

Kontrakcija koristei taku C Ukoliko su vrednosti u takama I jednake, jo jedna taka mora biti testirana. Moda je vrednost funkcije manja u taki , ali ne moemo zameniti sa , jer moramo da oformimo trougao. Razmotriemo dve sredinje take, i stranica i , respektivno. (slika 6). Taka u kojoj je vrednost funkcije manja nazivamo takom i time formiramo novi trougao . U dvodimenzionalnim problemima, izbor izmeu i je nepotreban, ali je vaan u viedimenzionim problemima.

- 18 -

December 2, 2011

METODI OPTIMIZACIJE

Slika 6: Kontrakcija (smanjenje) take ili

Smanjenje prema taki B Ukoliko vrednost funkcije u nije manja od vrednosti u , take I moraju se skupiti ka ( slika 7). Taka je zamenjena sa , a sa , koja je sredinja taka linije koja spaja I .

- 19 -

December 2, 2011

METODI OPTIMIZACIJE

Slika 7: Smanjenje trougla prema taki

Logine odluke za svaki korak Efikasan algoritam za proraunavanje bi trebalo da vri procenu funkcije samo ukoliko je potrebno. U svako koraku, pronalazi se taka koja zamenjuje . im je ona pronaena, dalja pretraga nije potrebna, a iteracioni korak se zavrava.

- 20 -

December 2, 2011

METODI OPTIMIZACIJE

Primer: Korienjem Nelder-Mead nai reenje funkcije           Poinjemo od tri temena:      Funkcija  uzima sledee vrednosti u temenima:        Vrednosti se moraju uporediti da bi utvrdili koja ja taka , , i ;        Teme   e biti zamenjeno. Take i su      Vrednost funkcije      , to je manje od  pa je u pitanju ekspanzija. Poto je   pomerili smo se u pravom smeru, i taka mora biti konstruisana:       
- 21 -

 

 

December 2, 2011

METODI OPTIMIZACIJE

Vrednost funkcije      ,sto je manje od  i tacke novog trougla su: V1 = (1.8, 1.2), V2 = (1.2, 0.0), V3 = (0.0, 0.8). Proces se nastavlja i generie se sekvenca trouglova koja konvergira ka konanoj taki (slika 8). U tabeli 1 date su vrednosti funkcije tacaka trouglova za sve iteracije.

Slika 8: Sekvenca trouglova za ravanske i prostorne probleme

Tabela 1: vrednosti funkcije

- 22 -

December 2, 2011

METODI OPTIMIZACIJE

3.2 Primer metode Nelder-Mead u programskom paketu Matlab

function [ x_opt, n_feval ] = nelder_mead ( x, function_handle, flag ) % Autor: % % Jeff Borggaard % % Parametri: % % Ulaz, realni X (M+1,M) koji predstavljaju tacke koje sluze za % pretpostavljanje pocetnih vrednosti resenja. Ako je dimenzija prostora % M, onda matrica mora sadrzati M+1 tacaka. Na primer, za 2D prostor % moraju se dati tri tacke. Svaki red matrice predstavlja jednu tacku; % za ravan ovo znaci da bi X bila matrica dimenzije 3x2. % % Input, handle FUNCTION_HANDLE, izraz funkcije pod navodnicima, % ili ime M-filea koji definise funkciju, sa znakom "@" koji prethodi % funkciji. % % Ulaz, logicki indikator koji je opcioni argument. Ako je prisutan, i % postavljen na 1 program ce pokazaci graficku sliku konture i proceduru % pronalazenja resenja. Ovo samo ima smisla za dvodimenzionalne

- 23 -

December 2, 2011

METODI OPTIMIZACIJE
% probleme, odnosno za N=2. % % Izlaz, realan X_OPT, optimalna vrednost X-a pronadjenog pomocu algoritma. rho xi gam sig = = = = 1; 2; 0.5; 0.5; % % % % rho xi 0 < 0 < > 0 > max(rho, 1) gam < 1 sig < 1

tolerance = 1e-6; max_feval = 250; % Initialization [temp,n_dim] = size(x); if (temp-n_dim ~= 1) fprintf ( 1, '\n' ); fprintf ( 1, 'NELDER_MEAD - Fatal error!\n' ); error('number of points must be = number of design variables + 1\n'); end if (nargin==2) flag = 0; end if (flag) xp = linspace(-5,5,101); yp = xp; for i=1:101 for j=1:101 fp(j,i) = feval(function_handle,[xp(i),yp(j)]); end end figure(27) hold on contour(xp,yp,fp,linspace(0,200,25)) if (flag) plot(x(1:2,1),x(1:2,2),'r') plot(x(2:3,1),x(2:3,2),'r') plot(x([1 3],1),x([1 3],2),'r') pause plot(x(1:2,1),x(1:2,2),'b') plot(x(2:3,1),x(2:3,2),'b') plot(x([1 3],1),x([1 3],2),'b') end end index = 1:n_dim+1;

- 24 -

December 2, 2011

METODI OPTIMIZACIJE
[f ] = evaluate(x,function_handle); n_feval = n_dim + 1; [f,index] = sort ( f ); x = x(index,:); % % % Begin the Nelder Mead iteration. converged = 0; diverged = 0; while ( ~converged & ~diverged ) % % % % % % % % % Compute midpoint of simplex opposite worst point. x_bar = sum(x(1:n_dim,:)) / n_dim; Compute reflection point. x_r f_r = (1+rho)*x_bar - rho*x(n_dim+1,:); = feval(function_handle,x_r); n_feval = n_feval+1;

Accept the point: if (f(1) <= f_r & f_r <= f(n_dim)) x(n_dim+1,:) = x_r; f(n_dim+1 ) = f_r; if (flag), title('reflection'), end

% % %

Test for possible expansion. elseif (f_r < f(1)) x_e = (1+rho*xi)*x_bar - rho*xi*x(n_dim+1,:); f_e = feval(function_handle,x_e); n_feval = n_feval+1; if (f_e<f_r) % accept the expanded point x(n_dim+1,:) = x_e; f(n_dim+1 ) = f_e; if (flag), title('expansion'), end else x(n_dim+1,:) = x_r; f(n_dim+1 ) = f_r; if (flag), title('eventual reflection'), end end

elseif (f(n_dim) <= f_r & f_r < f(n_dim+1)) % outside contraction x_c = (1+rho*gam)*x_bar - rho*gam*x(n_dim+1,:); f_c = feval(function_handle,x_c); n_feval = n_feval+1; if (f_c <= f_r) % accept the contracted point x(n_dim+1,:) = x_c;

- 25 -

December 2, 2011

METODI OPTIMIZACIJE
f(n_dim+1 ) = f_c; if (flag), title('outside contraction'), end else [x,f] = shrink(x,function_handle,sig); n_feval = n_feval+n_dim; if (flag), title('shrink'), end end else % f_r must be >= f(n_dim+1), try an inside contraction x_c = (1-gam)*x_bar + gam*x(n_dim+1,:); f_c = feval(function_handle,x_c); n_feval = n_feval+1; if (f_c < f(n_dim+1)) % accept the contracted point x(n_dim+1,:) = x_c; f(n_dim+1 ) = f_c; if (flag), title('inside contraction'), end else [x,f] = shrink(x,function_handle,sig); n_feval = n_feval+n_dim; if (flag), title('shrink'), end end end % % % % % % % % % % % Resort the points. note that we are not implementing the usual Nelder-Mead tie-breaking rules (when f(1) = f(2) or f(n_dim) = f(n_dim+1)... [ f, index ] = sort ( f ); x = x(index,:); test for convergence converged = f(n_dim+1)-f(1) < tolerance; test for divergence diverged = n_feval>max_feval; if (flag) plot(x(1:2,1),x(1:2,2),'r') plot(x(2:3,1),x(2:3,2),'r') plot(x([1 3],1),x([1 3],2),'r') pause plot(x(1:2,1),x(1:2,2),'b') plot(x(2:3,1),x(2:3,2),'b') plot(x([1 3],1),x([1 3],2),'b') end end if ( 0 ) fprintf('The best point x^* was: %d %d\n',x(1,:)); fprintf('f(x^*) = %d\n',f(1)); end

- 26 -

December 2, 2011

METODI OPTIMIZACIJE

x_opt = x(1,:); if ( diverged ) fprintf ( 1, '\n' ); fprintf ( 1, 'NELDER_MEAD - Warning!\n' ); fprintf ( 1, ' The maximum number of function evaluations was exceeded\n') fprintf ( 1, ' without convergence being achieved.\n' ); end return end function f = evaluate(x,function_handle); %****************************************************************** ***********80 % %% EVALUATE handles the evaluation of the function at each point. % [temp,n_dim] = size(x); f = zeros(1,n_dim+1); for i=1:n_dim+1 f(i) = feval(function_handle,x(i,:)); end return end function [ x, f ] = shrink(x,function_handle,sig) %****************************************************************** ***********80 % %% SHRINK ... % % In the worst case, we need to shrink the simplex along each edge towards % the current "best" point. This is quite expensive, requiring n_dim new % function evaluations. [temp,n_dim] = size(x); x1 = x(1,:); f(1) = feval(function_handle,x1); for i=2:n_dim+1 x(i,:) = sig*x(i,:) + (1-sig)*x(1,:); f(i ) = feval(function_handle,x(i,:)); end return

- 27 -

December 2, 2011
end

METODI OPTIMIZACIJE

Ova funkcija se moe uneti argumentima u komandnom prozoru:

nelder_mead ( x, function_handle, flag )

A priloena je i posebna funkcija (example.m) u kojoj bismo mi definisali samu funkciju cilja:
function f = example ( x ) f = ( 2*cos (x(1)) - exp (x(2)))^6;

Pozivanje funkcije nelder_mead.m, uz samu funkciju kao parametar definisan u example.m vri se pokretanjem fajla pozivanje.m koji mora biti u istom folderu kao i dva navedena.
n=2; x_init=[3, -3; 2, -4; -1, -2]; x_opt = nelder_mead ( x_init, @example, 1 )

to znai - optimizacija vrednosti x-a vri se nelder_mead metodom definisanom u svom fajlu, sa inicijalnom vrednou x-a (x_init) koju smo sami pretpostavili (x_init=[3, -3; 2, -4; -1, -2]), uzevi izraz funkcije cilja definisane u svom fajlu (@example), setovanjem indikatora na 1, ime potvrujemo da elimo plotovanje grafikog prikaza.

Reenje:
- 28 -

December 2, 2011

METODI OPTIMIZACIJE

x_opt = 1.5679 -3.7949

Slika 9: Grafiki prikaz reenja

- 29 -

December 2, 2011

METODI OPTIMIZACIJE

Literatura:
[1] - Prof. dr. Boidar Rosi - Metodi optimizacije (hendouti) [2] - Introduction to Optimum Design 2nd ed - J. Arora (Elsevier, 2004) WW [3] - http://en.wikipedia.org/wiki/Mathematical_optimization [4] - http://en.wikipedia.org/wiki/Optimization_problem [5] - http://en.wikipedia.org/wiki/Newton%27s_method [6] - http://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method [7] - http://www.albertomoraglio.com/gnma.pdf [8] - Matlab:A Practical Introduction to Programming and Problem Solving - Stormy Attaway [9] - applied numerical methods using Matlab - Won Young Yang, Wenwu Cao, Tae-Sang Chung, John Morris

- 30 -

You might also like