1 / 42

Univerzitet u Novom Sadu , Fakultet tehničkih nauka , Katedra za Automatiku i upravljanje sistemima

P redavanje. Predmet Metodi optimizacije. Tema Statička optimizacija, numeričke metode višedimenzione optimizacije. 20 11 godina. Univerzitet u Novom Sadu , Fakultet tehničkih nauka , Katedra za Automatiku i upravljanje sistemima. Statička optimizacija, višedimenziona optimizacija.

dyllis
Download Presentation

Univerzitet u Novom Sadu , Fakultet tehničkih nauka , Katedra za Automatiku i upravljanje sistemima

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Predavanje Predmet Metodi optimizacije Tema Statička optimizacija, numeričke metode višedimenzione optimizacije 2011 godina Univerzitet u Novom Sadu, Fakultet tehničkih nauka, Katedra za Automatiku i upravljanje sistemima

  2. Statička optimizacija, višedimenziona optimizacija Višedimeziona optimizacija Numeričko rešavanje Analitičko rešavanje Indirektne metode Metode direktnog pretraživanja

  3. Metode direktnog pretraživanja Osnovna ideja ovih metoda Odrediti tačku (ili tačke) u kojima funkcija ima optimalnu vrednost bez korišćenja izvoda funkcije • Hook - Jeves - ova metoda • Nelder - Mead - ova metoda • Powell - ova metoda

  4. Hook – Jeeves - ova metoda • Koraci:1. Pretraživanje po koordinatnim osama2. Skok3. Pretraživanje u okolini skoka

  5. Hook – Jeeves - ova metoda Pretraživanje po koordinatnim osama Početna tačka Pretražuje se po pravcimaDolazi se do tekuće tačke ti

  6. Hook – Jeeves - ova metoda Skok • Nakon pretraživanja po n pravaca dobijamo tačku tn • Iz ove tačke vršimo skok i dobijamo tačku tB • Ako skok ne uspe – KRAJ ITERACIJE!

  7. Hook – Jeeves - ova metoda Pretraživanje u okolini skoka • Novu baznu tačku dobijamo pretraživanjem po koordinatnim osama u okolini skoka (tačke tB) • Ceo postupak se ponavlja dok ima poboljšanja po pravcima di ; u suprotnom smanjujemo l • Kriterijum zaustavljanja l<e

  8. d2 d1 Hook – Jeeves - ova metoda Grafički prikaz osnova metode Pretraživanje u pozitivnom smeru ose d2 USPEŠNO Skok USPEŠAN Pretraživanje u okolini skoka USPEŠNO KRAJ ITERACIJE!!! Pretraživanje u pozitivnom smeru ose d1 NEUSPEŠNO Pretraživanje u negativnom smeru ose d1 USPEŠNO

  9. function [x, f, cnt] = HookJeev( fun, x0, d, dmin ) % Metoda HOOK-JEEVES za minimizaciju f-je više promenljivih bez ograničenja % fun - funkcija cilja % x0 - početno pogađanje; d - početni korak; dmin - krajnja dužina koraka (uslov zaustavljanja) % x - izračunat minimum; f - vrednost u minimumu; cnt - broj poziva fun n = length(x0); % broj promenljivih e = eye(n) * d; % pravci kretanja - ose x = x0; f = feval(fun,x); % prva bazna tačka cnt = 1; % broj izračunavanja f-je cilja while e(1,1) > dmin % glavna petlja (traje dok je korak veći od dmin) t = x; % tekuća tačka for i=1:n % po svim promenljivim (po svim osama) % pozitivan smer z = t + e(:,i); y = feval(fun,z); cnt=cnt+1; if y < f t = z; f = y; % prihvata se (“-“ smer se onda ne razmatra) else % negativan smer z = t - e(:,i); y = feval(fun,z); cnt=cnt+1; if y < f t = z; f = y; % prihvata se end end end% ako oba smera “ne uspeju” uzima se sledeća osa

  10. if all(t==x) % tekuća tačka se nije pomerila iz bazne tačke... e = e * 0.5; % te se smanjuje korak else % skok u pravcu “spuštanja terena” - probam x1 = t + (t-x); y1 = feval(fun,x1); cnt=cnt+1; x = t; % x=nova bazna tačka, ako skok ne uspe if y1 < f % skok delimično uspeo, još se traži prva tačka u okolini x1 gde je f(z) manje nego u tački x for i=1:n % po svim koordinatama % pozitivan smer z = x1 + e(:,i); y = feval(fun,z); cnt=cnt+1; if y < y1 x = z; f = y; break; % bingo, nova bazna tačka, iskačem iz for petlje end % negativan smer (ovde se ne stiže ako “uspe pozitivan smer”) z = x1 - e(:,i); y = feval(fun,z); cnt=cnt+1; if y < y1 x = z; f = y; break; % bingo, imam baznu tačku end end% ako ni jedan od pravaca (osa) ne daje bolje... % rešenje od tačke x, ona postaje nova bazna tačka end end end % kraj glavne petlje.

  11. Primer Pretraživanje po pravcima Hook-Jeeves - ovom metodom polazeći iz tačke (0,0) odrediti minimum funkcije

  12. Primer Skok Pretraživanje u okolini skoka

  13. Primer • Izgled funkcije

  14. Primer

  15. Primer 2 • Traženje minimuma funkcije f = 2x12 + x22 –3 iz početne tačke (-2,-2) • Izgled funkcije

  16. Primer 2 Skok NEUSPEŠAN, KRAJ ITERACIJE i KRAJ PRETRAGE! Pretraživanje po x1 + NEUSPEŠNO Pretraživanje po x1 + Skok NEUSPEŠAN, KRAJ ITERACIJE! Pretraživanje po x2 + Skok Pretraživanje po x1 + Pretraživanje po x2 + Pretraživanje u okolini skoka KRAJ 1. ITERACIJE! Početna tačka Pretraživanje po x2 +

  17. Nelder – Mead – ova metoda • Formira se geometrijsko telo – Simplex sa n+1 temena, n je dimenzionalnost problema • Uoče se temena sa najmanjom vrednošću funkcije VL i najvećom VH • Simplex se pomera u prostoru pomoću osnovnih transformacija dok se ne pronađe najbolje rešenje

  18. Nelder – Mead – ova metoda • Osnovne transformacije su:Refleksija EkspanzijaKontrakcijaSkupljanje

  19. Start Odredi se početni Simplex Nađe se najgora tačka vh i odredi težište ostatka vbar Refleksija vr=vbar+alfa*(vbar-vh) yr=f(vr) ne ne ne yr<yl vh=vr yr<yh-1 yr>yh da da da Ekspanzija Kontrakcija ve= vbar+gama*(vbar-vh) vc= vbar+beta*(vh-vbar) ye=f(ve) yc=f(vc) ne da ye<yl yc>yh da vh=vr ne Skupljanje v=(v+vl)/2 vh=ve vh=vc Test kraja ne da min=vl Kraj? Stop

  20. function [x,fx,cnt] = NeldMead(fun,x,xtol,ftol,maxit) % Nelder-Mead alg. minimizacije f-je vise promenljivih bez ograničenja % fun - ime funkcije f(x) % x - početna tačka % xtol, ftol, maxit - kriterijumi zaustavljanja n = prod(size(x)); % broj promenljivih maxit = maxit*n; % maksimlno dozvoljen broj računanja f-je % Postavljanje početnog simplex-a xin = x(:); % xin je vektor kolona v = xin; fv = feval(fun,v); % prvo teme i vrednost f-je u temenu for j = 1:n % dodatnih N temena (ne smeju se poklapati) y = xin; if y(j) ~= 0 y(j) = 1.05*y(j); % pomeranje j-te koordinate za 5% else% ili y(j) = 0.00025; % npr. 0.00025 (po preporuci iz lit.) end v = [v y]; % dodaj teme (vertex) fv = [fv feval(fun,y)]; % i vrednost f-je u temenu end% dimenzija v=(n) x (n+1) [fv,j] = sort(fv); % sortiranje temena prema vrednosti f-je u njima v = v(:,j); % rasporedi temena: 1. je najniže,... N+1. najvišlje cnt = n+1; % broj poziva f-je

  21. alpha = 1; beta = 1/2; gamma = 2; onesn = ones(1,n); ot = 2:n+1; % sva temena bez najnižeg on = 1:n; % sva temena, bez najvišljeg - koje treba pomeriti % radi dok dijametar simplex-a ne bude manji od xtol ili razlika vrednosti f-je u temenima manja od ftol % ili dok broj izračunavanja f-je ne premaši maxit while cnt < maxit % glavna petlja if max(max(abs(v(:,ot)-v(:,onesn)))) <= xtol & ... max(abs(fv(1)-fv(ot))) <= ftol break% prekid petlje end % korak Nelder-Mead simplex algoritma vbar = (sum(v(:,on)')/n)'; % težište (ne računa se najvišlje teme) vr = (1+alpha)*vbar - alpha*v(:,n+1); % refleksija (uvek se proba) fr = feval(fun,vr); cnt = cnt+1; vk = vr; fk = fr; if fr < fv(n) % nova tačka ispod do-najvišlje tačke? if fr < fv(1) % nova tačka je ispod najniže? ve = gamma*vr + (1-gamma)*vbar; % ekspanzija - proba fe = feval(fun,ve); cnt = cnt+1; if fe < fv(1) % i posle ekspanzije imam još nižu tačku? vk = ve; fk = fe; % ekspanzija usvojena end end% ako reflektovana tačka nije najniža, a niža je od do-najvišlje, usvaja se

  22. else% reflektovana tačka nije bolja od do-najvišlje vt = v(:,n+1); ft = fv(n+1); % najvišlja tačka (teme) if fr < ft % refl. tačka se poredi sa najvišljom ... vt = vr; ft = fr; % i za sada zamenjuje najvišlju end vc = beta*vt + (1-beta)*vbar; % kontrakcija - proba fc = feval(fun,vc); cnt = cnt+1; if fc < fv(n) % test kontrakcije vk = vc; fk = fc; % kontrakcija uspela else % ni refleksina ni kontrakcija ne daju nizu tačku od najvišlje for j = 2:n % polovljenje, najniže teme je i dalje 1. % moraju se izračunati nova temena simplex-a i vrednosti f-je u njima v(:,j) = (v(:,1) + v(:,j))/2; fv(j) = feval(fun,v(:,j)); end vk = (v(:,1) + v(:,n+1))/2; % najvišlje teme je izdvojeno zbog progr. rešenja fk = feval(fun,vk); cnt = cnt+n; end end v(:,n+1) = vk; % zamena temena sa max. vrednosti fv(n+1) = fk; [fv,j] = sort(fv); % ponovo sortiranje v = v(:,j); end% kraj glavne petlje

  23. x(:) = v(:,1); % epilog fx = fv(1); if cnt == maxit disp(['Upozorenje: Maksimalan broj iteracija (', ... int2str(maxit),') je premasen']); end

  24. Primer 1 VH Ekspanzija Refleksija VL Tekući simplex Kontrakcija Skupljanje

  25. Primer 2 • Traženje minimuma funkcije f = 2x12 + x22 –3 iz početne tačke (-2,-2) • Izgled funkcije

  26. Primer 2 Ekspanzija ve = -1.8000 = -2 + 2(-2+2.1) -2.1500 = -2.05 + 2(-2.05+2) fe = 8.1025 fe < fv(1) – uspela ekspanzija Inicijalni simplex v = -2.0000 -2.0000 -2.1000 -2.0000 -2.1000 -2.0000 fv = 9.0000 9.4100 9.8200 Iteracija 1. Težiste vt= -2.0000 = (-2-2)/2 -2.0500 = (-2-2.1)/2 • Zamenjujem maksimum • v = • -2.0000 -2.0000 -1.8000 • -2.0000 -2.1000 -2.1500 • fv = • 9.0000 9.4100 8.1025 • Sortiram temena simplex-a • v = • -1.8000 -2.0000 -2.0000 • -2.1500 -2.0000 -2.1000 • Refleksija • vr = • -1.9000 = -2 + 1(-2+2.1) • -2.1000 = -2.05 +1 (-2.05+2) • fr = • 8.6300 • fr < fv(1), uspela refleksija

  27. Primer 2

  28. Powell – ova metoda • Na početku su poznati: • Početno pogađanje x0 • Početni pravci: ui(0), i=1,2,…n koji se obično poklapaju sa osama • kriterijum zaustavljanja • U svakoj iteraciji se vrši: • n+1 pretraga po pravcima (konjugovanim vektorima) sa optimalnim, a ne fiksnim korakom • jedan od konjugovanih vektora se zamenjuje novim

  29. e 2 e 2 u v x 2 2 e u 1 x x 0 1 e Powell – ova metoda Pretraga po novom pravcu v KRAJ ITERACIJE Pretraga po e2 Pretraga po novom pravcu u KRAJ ITERACIJE Pretraga po u Pretraga po e2 Početna tačka Pretraga po e1

  30. function [x,f,it]=Powell(fun,x0,epsilon) % Metoda Powell za minimizaciju f-je vise promenljivih bez ogranicenja % fun - funkcija cilja % x0 - pocetno pogadjanje % epsilon - uslov zaustavljanja n = length(x0); % broj promenljivih u = eye(n); % početni “konjugovani pravci” x = x0; x1 = x0+2*epsilon; % x1 je vrednost iz predhodne iteracije it = 0; % broj iteracija while max(abs(x-x1)) > epsilon it = it+1; ti = x; % tekuća tačka for i = 1:n % pos svim pravcima teta = parabola(fun,u(:,i),ti,epsilon); % linijska pretraga ti = ti + teta*u(:,i); % pomeranje u minimum na pravcu end u = [u(:,2:n) ti-x]; % prvi vektor ispada i dodaje se novi x1 = x; teta = parabola(fun,u(:,n),ti,epsilon); % n+1. pretraga, (umesto ti može x1) x = ti + teta*u(:,n); % minimum, (umesto ti može x1) end f = feval(fun,x);

  31. Primer Powell-ovom metodom polazeći iz tačke (0,0) odrediti minimum funkcije 1. iteracija: pretraživanje po pravcu u1:

  32. pretraživanje po pravcu u2: Primer pretraživanje po novom pravcu u3:

  33. Primer Izgled funkcije

  34. Primer Početna tačka Pretraga po x1 Pretraga po novom pravcu u KRAJ ITERACIJE Pretraga po x2 TAČNO rešenje posle dve iteracije, funkcija je kvadratna forma!

  35. Primer 2 • Odrediti minimum funkcije f(x1,x2) = (x1-2)^4 + (x1-2)^2 * x2^2 + (x2+1)^2 Powell-ovom metodom polazeći iz tačke [2.9 , 0.9] Izgled funkcije

  36. Primer 2

  37. Metode promeljive metrike • Matrica H(xk)-1se aproksimira sa H’(xk)-1 • i u svakoj iteraciji koriguje za H’(xk)-1 H’(xk+1)-1 = H’(xk)-1 + H’(xk)-1 • početna vrednost H’(0)-1 = I • xk+1 = xk +k ·sk sk = – H’(xk)-1 ·f(xk) Računanje H’(xk)-1 odredjuje metod promenljive metrike • Broyden • Davidon-Fletcher-Powell (DFP) • Broyden-Fletcher-Goldfarb-Shanno (BFGS) • … 

  38. Broyden, DFP i BFGS metode • Broyden • DFP • BFGS

More Related