Seminarski-Negradijentne metode

Embed Size (px)

Citation preview

  • 8/8/2019 Seminarski-Negradijentne metode

    1/40

    Univerzitet u NiuPrirodno-matematiki fakultet

    Viegradska 33, 18000 NiSrbija, JugoslavijaPotanski fah: 224

    tel: (018) 324-492, (018) 533-014fax: (018) 533-014

  • 8/8/2019 Seminarski-Negradijentne metode

    2/40

    PRIRODNO-MATEMATIKI FAKULTET NI

    -SEMINARSKI RAD-NEGRADIJENTNI METODI

    Profesor Studenti

    prof. dr. Stanimirovi Predrag Marija KrstiSlobodan VukoviBranislav Ivanov

  • 8/8/2019 Seminarski-Negradijentne metode

    3/40

    1. Prednosti simbolike implementacije negradijentnih metoda

    Ovim metodima se izraunava ekstremna vrednost ciljne funkcije bez korienja njenih izvoda.Drugaije se oni nazivajumetodi direktnog pretraivanja . Zasnivaju se na uporeivanju izraunatihvrednosti ciljne funkcije, pri emu je za svako poboljanje vrednosti funkcije cilja neophodno poznavanje vrednosti funkcije u prethodnom koraku (ili prethodnim koracima).

    Glavne prednosti koje proizilaze iz primene simbolike obrade podataka u metodima jednodimenzionalne optimizacije su:

    (1U) Ciljna funkcija, koja nije definisana potprogramom, moe da bude plasirana u listu prametara bilo koje funkcije kojom se implementira neki od metoda optimizacije. U proceduralnim programskim jezicima, ciljna funkcija koja nije definisana potprogramom moe se koristiti kao parametar samo uz prethodno obezbeen, relativno sloeni, proces leksike i sintaksne analize. Ovaosobina proizilazi iz mogunosti transformacije date ciljne funkcije u pogodnu unutranjureprezentaciju. Ovakva unutranja forma se moe koristiti u listi fomalnih parametara.

    (2U) Takoe, objektivna funkcija moe da se konstruie u procesu optimizacije iz zadatih podataka, a potom da bude primenjena. Na primer, ciljna funkcija jednog argumenta moe bitikonstruisana pri simbolikoj implementaciji nekog od metoda viedimenzionalne optimizacije (kakonegradijentnog, tako i gradijentnog).

    (3U)Za proizvoljnu jednoargumentnu funkciju f ( x) moe se jednostavno formirati nova funkcijaF( ), koja je definisana sa

    F( ) = Q( x) = f(x, ), x, R,gde je zadati parametar. Preciznije, u ovom sluaju se zamenjuju uloge argumenta i parametra.Pri tome je bitna pretpostavka da funkcija f nije definisana potprogramom, ve da je zadata kaoformalni parametar, ili da je konstruisana iz zadatih podataka.

    Glavne prednosti simbolike implementacije viedimenzionalnih metoda pretraivanja jesu:(1M)Mogunost da se ciljna funkcija zada u listi parametara, a ne potprogramom (uoptenje od

    (1U)).(2M)Moe se efikasno manipulisati sa listom argumenata ciljne funkcije.(3M)Takoe, sledei problem je nepogodan za implementaciju u proceduralnim programskim

    jezicima: Transformisati proizvoljnu funkciju odn argumenata f ( x1,..., xn) u novu funkciju, kojazavisi od jednog argumenta

    F( xk ) = f ( x1(0), ..., xk-1(0), xk , xk+1 (0), ..., xn(0)),gde su xi(0) (i = 1, ...,n, i k ) zadati realni brojevi.

    Na poetku su opisane prednosti (1U) i (1M). U programima koji su napisani u proceduralnim programskim jezicima, bez leksike i sintaksne analize, mogu da se koriste jedino ciljne funkcijekoje su definisane u potprogramima (tzv. test funkcije). Takoe, u gradijentnim metodima, morajuse definisati potprogrami kojima se izraunavaju parcijalni izvidi ciljne funkcije.

    Primer 1.Funkcija( x, y, z ) = ( x 1)2 + ( y 1)2 + ( z 1)2 zadata je pomou potprograma

    float func(x)

    3

  • 8/8/2019 Seminarski-Negradijentne metode

    4/40

    float x [] ;{ int i; float f=0.0;

    for(i=1; i < =3; i++) f+=(x [i]-1.0) (x [i]-1.0);return f;

    }

    Parcijalni izvodidf [1], df [2] i df [3] ove funkcije odreeni su sledeim potprogramom

    void dfunc(x,df)float x [] , df [] ;{ int i;

    for (i=1; i < =3; i++) df [i]+=2.0 (x [i]-1.0);}

    Ako se ciljna funkcija promeni, korisnik mora da promeni sve ove potprograme. Isti principi sukorieni i u pogramskom jezikuFORTRAN .

    U programskim jezicimaFORTRAN ili C, mogue je koristiti ciljnu funkciju u listi formalnih parametara, jedino uz prethodnu leksiku i sintaksnu analizu unetog izraza.

    S druge strane ovaj problem se jednostavno moe reiti u funkcionalnim programskim jezicima.Unutranju formu ciljne funkcije ine analitiki izraz ciljne funkcije i lista njenih argumenata. Neka je q_ formalni parametar koji predstavlja ciljnu funkciju u paketuMATHEMATICA , dok formalni parametar var_ _ predstavlja listu argumenata funkcijeQ. Ako je x0 lista koja predstavlja datu taku,tada se vrednostq0 =q[ x0] moe izraunati na sledei nain:

    q0=q;Do [q0=q0 / .var [[ i]] -> x0 [[ i]] , {i,Length [var ]}] ;

    U jednodimenzionalnom sluaju, za zadati realan broj x0 moe se pisati:q0=q;q0=q0 / .var [[ i]] -> x0;

    U funkcijama kojima se implementiraju optimizacioni metodi uLISPu, realna ciljna funkcijaQ( x1, . . . xn) = Q( x) je predstavljena dvoelementnom listom oblika

    '( Q( x ) ( x ) )

    Prvi element te liste jeste selektovanaLISPovska aritmetika funkcija, dok je drugi argument listanjenih argumenata.

    Ovakva unutranja reprezentacija, oznaena saq, date ciljne funkcije, moe da se transformie uodgovarajuilambda-izraz :

    (set! fun (eval (list lambda (cadr q) (car q)))).

    Ovakva lambda funkcija se moe primeniti na zadatu listu argumenatav:(apply fun v)

    Primer 2.Unutranja forma funkcije f ( x) = 2 x3 -a x

    4)log( u LISPu je sledea lista:

    ((- ( 2 (expt x 3)) (/ (log x) ( 4 a))) (x)) .

    Odgovarajua unutranja forma u paketuMATHEMATICA je:2x^3-Log [x ] / (4 a) , {x } .

    U ovom primeru se podrazumeva da jea zadati parametar. Meutim, funkcija f se moedefinisati i kao funkcija parametraa , pri emu promenljiva x preuzima ulogu parametra. To se moe jednostavno uiniti promenom liste argumenata funkcije:

    4

  • 8/8/2019 Seminarski-Negradijentne metode

    5/40

    ((- ( 2 (expt x 3)) (/ (log x) ( 4 a))) (a))ili

    2x^3-Log [x ] / (4 a) , {a } .

    Ovim je opisana prednost (3U). Prednost (2U) e biti koriena kasnije kod implementacije

    negradijentnih metoda viedimenzionalne optimizacije (u vezi (3M)) ili kod implementacijegradijentnih metoda optimizacije (u vezi sa (3G)).

    2. Jednodimenzionalna negradijentna optimizacija

    Zadata je ciljna funkcija Q = Q( x) koja zavisi od jednog parametra x. Problem je nai lokalnimaksimum (minimum) te funkcije, uz uslov nametnut upravljakom parametru:a

  • 8/8/2019 Seminarski-Negradijentne metode

    6/40

    5. Metod zlatnog preseka.B. Interpolacioni metodi. U sluaju kada poetni interval[a,b ] nije zadat, ekstremum moe da se

    pretrauje interpolacionim i ekstrapolacionim metodima. Osnovna ideja ovih metoda jestedefinisanje polinomne aproksimacije drugog ili veeg stepena tanosti kojom se aproksimira ciljnafunkcija. Ova aproksimacija se formira na osnovu nekoliko izraunatih vrednosti ciljne funkcije, kaoi na osnovu tekueg maksimuma x(k)max aproksimativnog polinoma.

    Ako su za ciljnu funkicju Q( x) izraunate vrednosti Qa, Qm, Q b , koje odgovaraju parametrima x(a), x(m), x(b), respektivno, funkcija Q( x) moe se aproksimirati algebarskim polinomom drugogstepena

    Q ( x) = b0 + b 1 ( x x(a)) +b11 ( x x(a))( x x(m))

    Koeficijentib0, b1, b11 se izraunavaju po formulama

    b0 = Qa, b1 =-

    -

    (a)(m)a b QQ

    x x

    , b11 = x x

    m

    D)((b)

    ,

    gde je

    D = x x

    (a)(b)a b

    -

    - QQ-

    x xa )((m)

    am - QQ

    Ekstremne vrednosti ciljne funkcije Q( x) se procenjuju pomou Q ( x) = 0. odakle sleduje

    x* x(k)max =21 ( x(a) + x(m))

    2b11 b1 .

    Interpolacioni metodi, kako za jednodimenzionalno, tako i za viedimenzionalno pretraivanjeekstremuma razlikuju se prema nainu generisanja taaka koje su neophodne za polinomnuaproksimaciju. U ovu grupu metoda spadaju:

    1. Metod Davies-Swann-Campey (DSC);2. Powelov jednodimenzionalni metod.C. Metodi aproksimacije polinomom. Ovi metodi se sastoje u sledeem: Da bi se odredila taka

    optimuma x* funkcije Q, ona se najpre aproksimira polinomom p( x) na intervalu[a,b ] koji sadritaku x*. Zatim se odreuje taka optimuma xm polinoma p( x). Za priblinu vrednost take x* moese uzeti taka xm. Sada se interval[a,b ] smanjuje, funkcija Q se aproksimira novim polinomom i

    postupak se nastavlja sve dok se ne dostigne eljena tanost. Za aproksimativne polinome obino seuzimaju polinomi drugog i treeg reda. U tom smislu se moe govoriti ometodu parabole ili tzv.kubnom metodu.

    2.1.SKENIRANJE SA KONSTANTNIM KORAKOM

    U ovom metodu se uzastopno ispituje ciljna funkcija, poev od neke vradnostia do vrednostibupravljakog parametra, sa fiksiranim korakom, koji se naziva korak skeniranja i oznaava sa . Oddobijenih rezultata uzima se najbolji. Na taj nain je ekstremna vrednost lokalizovana sa tanoumin = . Tanost lokalizacije ekstrema je vea ako se smanjuje korak .

    Algoritam metoda skaniranja sa konstantnim korakom moe se opisati na sledei nain:

    6

  • 8/8/2019 Seminarski-Negradijentne metode

    7/40

    Korak 1. Uneti vrednosti za granice optimizacijea , b i korak skeniranja . Korak 2. Staviti Qmax = Q (a), u sluaju maksimuma, odnosno Qmin = Q(a), u sluaju minimuma. Korak 3. Staviti Xm = a , X =a . Korak 4. X = X + .

    Korak 5. Ako je X >b za izlaz iz algoritma uzeti Qmax (odnosno Qmin) i vrednost parametra Xm zakoji je optimalna vrednost dostignuta; inae, prei na sledei korak. Korak 6. Izraunati Q1 = Q(X). Ako je Q1 > Qmax, u sluaju maksimuma staviti Qmax = Q1, Xm = X.

    U sluaju minimuma, kada je ispunjen uslov Q1 < Qmin, staviti Qmin = Q1, Xm = X. Zatimprei na Korak 4.

    Pogodnosti ovog metoda su: (a) laka algoritmizacija; (b) sa malim korakom moe se pronaiglobalni ekstrem.

    Nedostatak metoda je veliki broj izraunavanja vrednosti ciljne funkcije.Metod se moe implementirati koristei jedino prednost(1U)simbolikog pristupa.

    skk[Q_,pr_, a_, b_, del_]:=Block[{q0,qm,izb,lista={},x,xm},

    izb=Input["1 za minimum, 2 za maksimum"];xm=x=a;(* tekuci max *)qm=N[Q/.pr[[1]] x];(* tekuci max *)AppendTo[lista,{xm,qm}];(* pratimo vrednosti da bi videli kakosmo se kretali

    ka rezultatu *)Do[

    q0=Q/.pr[[1]] x;If[(izb 1 && N[q0]N[qm]),xm=x;qm=N[q0];AppendTo[lista,{xm,qm}]],

    {x,a,b,del} (* x se krece od a do b sa korakom del *)];

    Return[{xm,qm,lista}]]

    skk[Sin[x+3],{x},0, Pi,0.01]{1.71,-0.999997,{{0,0.14112},{0.01,0.131213},{0.02,0.121293},{0.03,0.111361},

    {0.04,0.101418},{0.05,0.0914646},{0.06,0.0815022},{0.07,0.0715315},{0.08,0.0615537},{0.09,0.0515698},{0.1,0.0415807},{0.11,0.0315874},{0.12,0.021591},{0.13,0.0115924},{0.14,0.00159265},{0.15,-0.00840725},{0.16,-0.0184063},{0.17,-0.0284035},{0.18,-0.0383979},{0.19,-0.0483884},{0.2,-0.0583741},{0.21,-0.068354},{0.22,-0.078327},{0.23,-

    0.0882922},{0.24,-0.0982486},{0.25,-0.108195},{0.26,-0.118131},{0.27,-0.128055},{0.28,-0.137966},{0.29,-0.147863},{0.3,-0.157746},{0.31,-0.167612},{0.32,-0.177462},{0.33,-0.187295},{0.34,-0.197108},{0.35,-0.206902},{0.36,-0.216675},{0.37,-0.226427},{0.38,-0.236155},{0.39,-0.245861},{0.4,-0.255541},{0.41,-0.265196},{0.42,-0.274825},{0.43,-0.284426},{0.44,-0.293998},{0.45,-0.303542},{0.46,-0.313054},{0.47,-0.322536},{0.48,-0.331985},{0.49,-0.341401},{0.5,-0.350783},{0.51,-0.36013},{0.52,-0.369441},{0.53,-0.378715},{0.54,-0.387951},{0.55,-0.397148},{0.56,-0.406306},{0.57,-0.415423},{0.58,-0.424498},{0.59,-0.433531},{0.6,-0.44252},{0.61,-0.451466},{0.62,-0.460366},{0.63,-0.46922},{0.64,-0.478027},{0.65,-0.486787},{0.66,-0.495497},{0.67,-0.504159},{0.68,-0.512769},{0.69,-0.521329},{0.7,-0.529836},{0.71,-0.538291},{0.72,-0.546691},{0.73,-0.555037},{0.74,-0.563327},{0.75,-0.571561},{0.76,-0.579738},{0.77,-0.587857},{0.78,-0.595917},{0.79,-0.603918},{0.8,-0.611858},{0.81,-0.619737},{0.82,-0.627554},{0.83,-0.635308},{0.84,-0.642999},{0.85,-0.650625},{0.86,-0.658186},{0.87,-0.665682},{0.88,-0.673111},{0.89,-0.680473},{0.9,-0.687766},{0.91,-0.694991},{0.92,-0.702146},{0.93,-0.709231},{0.94,-0.716246},{0.95,-0.723188},{0.96,-0.730058},{0.97,-0.736856},{0.98,-

    0.743579},{0.99,-0.750228},{1.,-0.756802},{1.01,-0.763301},{1.02,-0.769723},{1.03,-0.776068},{1.04,-0.782336},{1.05,-0.788525},{1.06,-0.794636},{1.07,-0.800667},{1.08,-0.806618},{1.09,-0.812488},{1.1,-0.818277},{1.11,-0.823984},{1.12,-0.829609},{1.13,-0.835151},{1.14,-0.840609},{1.15,-0.845984},{1.16,-0.851273},{1.17,-0.856478},{1.18,-0.861597},{1.19,-0.86663},{1.2,-0.871576},{1.21,-0.876435},{1.22,-0.881206},{1.23,-

    7

  • 8/8/2019 Seminarski-Negradijentne metode

    8/40

    0.885889},{1.24,-0.890484},{1.25,-0.894989},{1.26,-0.899405},{1.27,-0.903732},{1.28,-0.907967},{1.29,-0.912112},{1.3,-0.916166},{1.31,-0.920128},{1.32,-0.923998},{1.33,-0.927776},{1.34,-0.931461},{1.35,-0.935053},{1.36,-0.938551},{1.37,-0.941955},{1.38,-0.945266},{1.39,-0.948481},{1.4,-0.951602},{1.41,-0.954628},{1.42,-0.957558},{1.43,-0.960392},{1.44,-0.963131},{1.45,-0.965773},{1.46,-0.968319},{1.47,-0.970767},{1.48,-0.973119},{1.49,-0.975373},{1.5,-0.97753},{1.51,-0.979589},{1.52,-0.98155},{1.53,-0.983413},{1.54,-0.985178},{1.55,-0.986844},{1.56,-0.988411},{1.57,-0.98988},{1.58,-0.991249},{1.59,-0.99252},{1.6,-0.993691},{1.61,-0.994763},{1.62,-0.995735},{1.63,-0.996608},{1.64,-0.997381},{1.65,-0.998054},{1.66,-0.998628},{1.67,-0.999102},{1.68,-

    0.999476},{1.69,-0.999749},{1.7,-0.999923},{1.71,-0.999997}}}

    skk[x(x^2-1)Sin[3x],{x},0,1,0.05]{0.55,-0.382422,{{0,0.},{0.05,-0.00745323},{0.1,-0.0292565},{0.15,-0.0637768},{0.2,-

    0.108411},{0.25,-0.159759},{0.3,-0.213848},{0.35,-0.266407},{0.4,-0.313165},{0.45,-0.350163},{0.5,-0.374061},{0.55,-0.382422}}}

    skk[N[Cos[x^3]],{x},-2,2,0.1]{-1.5,-0.972884,{{-2,-0.1455},{-1.6,-0.578092},{-1.5,-0.972884}}}

    Program se poziva sa skk [q, pr , a, b , del ], pri emu je :q: ciljna funkcija;

    pr : lista koja sadri parametar ciljne funkcije;a ,b: granice oblasti skeniranja;del : korak skeniranja.

    Argumentiq i pr predstavljaju tzv.unutranju formu ciljne funkcije.

    2.2 SKENIRANJE SA PROMENLJIVIM KORAKOM

    Ovaj algoritam u izvesnoj meri otklanja nedostatak skeniranja sa konstantnim korakom. Za prvoskeniranje se uzima relativno veliki konstantni korak (1) i grubo se lokalizuje taka ekstremuma

    xm(1). Zatim se izdvaja podoblast xm(1) (1) i u njoj se izvri skeniranje s manim korakom (2). Korak se smanjuje, sve dok se ne postigne zadata tanost min, to se postie ispunjenjem uslova (k ) < minza nekok > 1.

    Prednost ovog algoritma, u odnosu na konstantno skeniranje, jeste manji broj izraunavanjavrednosti ciljne funkcije, dok je njegov nedostatak vea verovatnoa da se u sluaju ciljne funkcijesa velikim brojem ekstemuma propusti globalni ekstremum zbog relativno velikog poetnog korakaskeniranja.

    spk[q_,pr_,a_,b_,del_,delmin_]:= (* delmin je min interval *)Block[{izb, delta=del, x,xm, q0,qm, dg=a, gg=b, lista={}},

    izb=Input["1 za minimum, 2 za maksimum"];While[N[delta] N[delmin],

    xm=x=N[dg]; (* donja granica *)qm=q/.pr[[1]] dg;AppendTo[lista,{xm,qm}];x=N[x+delta];While[x N[gg], (* gornja granica *)

    q0=q/.pr[[1]] x;If[(izb 1 && N[q0]N[qm]),qm=N[q0];xm=N[x];AppendTo[lista,{xm, qm}]];

    8

  • 8/8/2019 Seminarski-Negradijentne metode

    9/40

    x=N[x+delta];];

    dg=Max[a, N[xm-delta]];(* donja granica *)gg=Min[b, N[xm+delta]];(* gornja granica *)delta=N[delta/4];];

    {xm, qm, lista}]

    spk[x^2-5x+8,{x},-4,4,0.1,0.02]2.5, 1.75, - 4., 44. , - 3.9, 42.71 , - 3.8, 41.44 , - 3.7, 40.19 , - 3.6, 38.96 , - 3.5, 37.75 , - 3.4, 36.56 , - 3.3, 35.39 ,

    - 3.2, 34.24 , - 3.1, 33.11 , - 3., 32. , - 2.9, 30.91 , - 2.8, 29.84 , - 2.7, 28.79 , - 2.6, 27.76 , - 2.5, 26.75 , - 2.4, 25.76 ,8- 2.3, 24.79

    {x1,x2};If[(izb==2&&y>max)||(izb==1&&y

  • 8/8/2019 Seminarski-Negradijentne metode

    26/40

    Kako oblast upravljakih parametara nije lokalizovana, za lokalizaciju svake koordinateekstremuma preporuuje se jednodimenzionalni simpleks metod.

    Gauss-Seidelov metod se koristi za mali broj upravljakih parametara (n = 3, 4) i ima razliitu brzinu konvergencije u zavisnosti od cilja funkcije Q( x).

    Sledi implementacija ovog metoda.

    Ulazne veliine:

    q_, var_Lista : ciljna funkcija i lista njenih parametara; x_Lista : izabrana poetna taka;eps_ : zadata tanost.

    Lokalne promenljive:

    del : kriterijum dostignute tanosti.

    Gaussei[q_,prom_List,x_List,eps_]:=Block[{Lis={},p,pr=prom, x0=x1=x,qm=q0=q,del=1,n=Length[prom]},

    Lis=Append[Lis,x0]; While[del>=eps,

    For[i=1,ix0[[j]],{j,i-1}];qm=qm/.prom[[i]]->p;Do[qm=qm/.prom[[j]]->x0[[j]],{j,i+1,n}];

    p0=skk[qm,{p},0,1,0.01];x0[[i]]=p0[[1]]

    ];del=Sqrt[Sum[ (x1[[i]]-x0[[i]])^2 ,{i,n}]]Lis=Append[Lis,x0];x1=x0

    ];

    Do[q0=q0/.prom[[i]]->x0[[i]],{i,n}];{x0,q0,Lis}

    ]

    Gaussei[z^2+5*y-x,{x,y,z},{-1,3,2},0.1]{{0,0,0},-1.01,{{-1,3,2},{0,0,0}}}

    Gaussei[z^2+5*y-x,{x,y,z},{-1,3,2},0.1]{{0,1.,1.},4.99,{{-1,3,2},{0,1.,1.}}}

    3.4. SLUAJNO PRETRAIVANJE

    Ovaj metod je analogan metodu skeniranja. Pri primeni metoda prostog sluajnog pretraivanja,vrednosti ciljne funkcije se izraunavaju u sekvencijalno generisanim takamax, koje suravnomerno rasporeene unutar dozvoljene oblasti

    [xmin, xmax] = [ xmin i, xmax i], i = 1, ...,n.Pretraivanje se prekida na osnovu jednog od sledaa dva kriterijuma:1 Dostizanje unapred zadatog brojaM 1 izraunavanja vrednosti Q( x);2 Dostiizanje zadatog broja izraunavanjaM 2 ciljne funkcije Q( x) nakon poslednjeg izbora

    tekueg maksimuma (M 2 je broj neuspenih taaka ). Obino se uzima 10n

  • 8/8/2019 Seminarski-Negradijentne metode

    27/40

    gde je i pseudosluajni broj u intervalu[0,1] dobijen od strane programskog generatora. Algoritam sluajnog pretraivanja :

    Korak 1. Zadati ulazne veliinen, M 1, xmin i, xmax i, i = 1, ...,n. Korak 2. Generisati niz sluajnih brojeva i i niz koordinata xi, i = 1, ...,n, take x, na osnovu

    (1). Korak 3. Postaviti J = 1 i xE i = xi, i = 1, ...,n. Korak 4. Izraunati Q1 = QM = Q( x). Korak 5 . Unutar ciklusa, koji se prekida kada je J > M 1, izvriti sledee korake:

    Korak 5.1. Generisatai niz sluajnih brojeva i a zatim niz sluajnih brojeva xi, i = 1, ...,n,koristei (1).

    Korak 5.2 . Izraunati Q1 = Q(x). Korak 5.3 . Ako je Q1 > QM postaviti

    QM = Q1, xE i = xi, i = 1, ...,n. Korak 5.4. Postaviti J := J + 1.

    Korak 6. Editovati vrednosti promenljivih QM i xE i, i = 1, ...,n.U sledeem algoritmu, pretraivanje se prekida kada se dostigne zadati brojM 2 izraunavanja

    vrednosti ciljne funkcije nakon poslednjeg definisanja tekueg maksimuma. Korak 1 . Zadati ulazne veliine N , M 2, xmin i, xmax i, i = 1, ...,n. Korak 2 . Generisati niz sluajnih brojeva i i niz koordinata xi, i = 1, ...,n, take x, prema (1). Korak 3 . Postaviti L = 0 i xE i = xi, i = 1, ...,n. Korak 4 . Izraunati Q1 = QM = Q(x). Korak 5 . Unutar ciklusa, koji se prekida kada je L > M 2, izvriti sledee korake:

    Korak 5.1. Koristei (1) generisati niz sluajnih brojeva i, a zatim niz sluajnih brojeva xi, i = 1, ...,n.

    Korak 5.2 . Izraunati Q1 = Q(x). Korak 5.3. Ako je Q1 > QM postaviti

    QM = Q1, xE i = xi, i = 1, ...,n, i L = 0; inae postaviti L:= L +1. Korak 6. Prikazati vrednosti pomenljivih QM i xE i, i = 1, ...,n.

    sp[q_,prom_List,n_,M1_,xmin_List,xmax_List]:=Block[{j=1,qm,q1,koordinate,i,xe,Lista={}},

    koordinate=Table[(xmin[[i]]+Random[]*(xmax[[i]]-xmin[[i]])),{i,n}];

    xe=koordinate;q1=qm=q;Do[q1=q1/.prom[[i]]->koordinate[[i]],{i,n}];qm=q1;Lista=Append[Lista,{xe,qm}];While[jkoordinate[[i]],{i,n}];

    27

  • 8/8/2019 Seminarski-Negradijentne metode

    28/40

    If[q1>qm,qm=q1;xe=koordinate;Lista=Append[Lista,{xe,qm}];];

    j=j+1;];

    {xe,qm,Lista}]

    sp[x^2+y^2,{x,y},2,100,{-1,-2},{2,1}]{{1.64667,-1.59683},5.26137,{{{0.866798,0.104219},0.7622},{{-0.818159,0.975446},1.62088},{{1.3802,0.39329},2.05962},{{1.87754,0.788444},4.14681},{{1.04403,-1.85417},4.52794},{{1.17418,-1.94326},5.15498},{{1.64667,-1.59683},5.26137}}}

    Priblina taanost lokalizacije ekstemuma zavisno od broja ravnomerno generisanih taakaM 1, izraunava se po formuli

    1

    1

    M .

    Pri korienju ovog metoda verovatnoa da se pronae globalni maksimum raste u zavisnosti od broja izraunavanja vrednosti ciljne funkcije.

    Metod nije efikasan, ali se koristi kao pomoni algoritam za nalaenje globalnog ekstremuma iliza izbor poetne optimalne take pri implementaciji drugih metoda.

    3.5. SLUAJNO PRETRAIVANJE SA VEOM GUSTINOM

    U ovom algoritmu nova sluajna taka se generie u zavisnosti od tekue najbolje vrednosticiljne funkcije. Kriterijum za prekid algoritma je dostizanje zadatog brojaM neuspenih taakanakon poslednjeg izbora naboljih rezultata za Q( x).

    U toku primene ovog metoda mogue je da vrednost nekog od upravljakih parametara izaeizvan dozvoljene oblasti x. Zbog toga je neophodno izvriti proveru da li su vrednosti svih parametara unutar zadate oblasti[xmin,xmax]. Blok ema algoritmalimit , kojim se vrednostiupravljakih parametara vraaju unutar zadate oblasti, posebno je opisana u ovom odeljku.

    U algoritmu vrednost brojak predstavlja broj novoodabranih ocena maksimuma. Nova sluajnataka x1= x1i, i = 1, ...,n, se generie prema formulama

    (2) x1i = xE i + ( xmax i xmin i)k

    k i )12( , i = 1, ...,n.

    Zbog -1

  • 8/8/2019 Seminarski-Negradijentne metode

    29/40

    koji predstavljaju koordinate takexE. Korak 4 . Izraunati QM = Q(xE). Korak 5 . Unutar ciklusa, koji se prekida kada je L > M 1, izvriti sledee

    Korak 5.1 . Generisati niz sluajnih brojeva i a zatim niz brojeva x1i, i = 1, ...,n, prema

    (2). Korak 5.2 . Poziv procedurelimit . Korak 5.3 . Izraunati Q1 = Q(x1). Korak 5.4 . Ako je Q1 > QM postaviti :

    QM = Q1, xE i = x1i, i = 1, ...,n, k = k + 1, L = 0;inae postaviti L:= L + 1.

    Korak 6 . Editovati vrednosti QM i xE i, i= 1, ...,n.Sledi opis algoritma procedurelimit .Ulazne veliine sun, xmin( I ), xmax( I ), I = 1, ...,n.

    Korak 1 . Definisatifor ciklus, za vrednosti promenljive I = 1, ...,n. Unutar ciklusa uraditi sledeekorake:

    Korak 1.1. Ako je x( I ) > xmax( I ) postaviti x( I ) = xmax( I ). Korak 1.2. Ako je x( I ) < xmin( I ) postavitix( I ) = xmin( I ).

    limit [x_List,xmin_List,xmax_List ]:=

    Block [{i,n,x0=x },

    n=Lenght [x0 ];Do[ Which [x0 [[ i ]] xmax [[ i ]] ,x0 [[ i ]] =xmax [[ i ]]

    ], {i,n }

    ];x0

    ]

    spsvg[q_,prom_List,n_,M1_,xmin_List,xmax_List]:=Block[{j=0,k=1,qm,q1,koordinate,i,xe,Lista={}},

    koordinate=Table[(xmin[[i]]+Random[]*(xmax[[i]]-xmin[[i]])),{i,n}];

    xe=koordinate;q1=qm=q;Do[q1=q1/.prom[[i]]->koordinate[[i]],{i,n}];qm=q1;Lista=Append[Lista,{xe,qm}];While[jkoordinate[[i]],{i,n}];If[q1>qm,qm=q1;k+=1;j=0;xe=koordinate;

    29

  • 8/8/2019 Seminarski-Negradijentne metode

    30/40

    Lista=Append[Lista,{xe,qm}],j+=1;];

    ];{xe,qm,Lista}]

    spsvg[x^2-y^2,{x,y},2,1000,{-5,-3},{1,4}]{{1,0.0975969},0.990475,{{{-0.936152,-0.278331},0.798912},{{1,-0.197418},0.961026},{{1,0.0975969},0.990475}}}

    3.6. METOD SLUAJNIH SMEROVA

    Osnovna ideja ovog metoda sastoji se u sledeem. Neka je zadata takax0 = ( x1(0), ..., xn(0)) udozvoljenij oblasti x. Ova taka lei na jednoj povri (ili liniji) sa konstantnom vrednou ciljnefunkcije. Ova povr deli prostor na dve oblasti, koje se nazivajuuspena i neuspena , zavisno odsmera koji vodi prema ekstremu. Ako se naini neki korak od takex0 u sluajnom smeru postoje trimoogunosti:a) korak je unutar uspene oblasti, tj. u smeru poboljanja vrednosti Q(x); b) korak je uneuspenoj oblasti, tj. u smeru loijih vrednosti funkcije Q(x);c) korak je unutar neutralne oblasti, tj. Q(x) ima istu vrednost.

    Ako je korak uuspenoj oblasti, nova taka moe da se uzme za novu poetnu taku, a zatimda se naini novi korak u sluajnom pravcu. Ako je taka uneuspenoj oblasti, ona se izostavlja i pravi se novi korak od prethodne poetne take, sve dok se ne dobije nova uspena taka. Praveiuzastopno korake konstantne duine x na sluajan nain i zamenjujui staru poetnu taku novomuspenom takom, stie se u oblast ekstremne take x*. U toj oblasti korak moe da se smanjuje do prethodno zadatih granica.

    Na osnovu ove ideje razraeno je mnogo algoritama za sluajno pretraivanje. Osnovna ideja tihalgoritama je formiranje koraka u sluajnom pravcu. To se moe ostvariti formiranjem sluajnogvektora = (1, ..., n) jedinine duine, koji se prostire od zadate take u svim moguim pravcima sa jednakom verovatnoom, unutar oblasti upravljakih parametara. Korak od zadate take x(k ) u novutaku x(k + 1) odreen je transformacijom

    xi(k + 1)

    = xi(k )

    + h ii(k )

    , i = 1, 2, ...,n,gde jehi veliina koraka po svakom upravljakom parametru, a i(k ) je i-ta komponenta sluajnogvektora formiranog uk -oj iteraciji. Kriterijum uspenosti koraka je Q(x(k+ 1)) > Q(x(k )) u sluajumaksimuma i Q(x(k+ 1)) < Q(x(k )) za sluaj minimuma. U blizini ekstremne take, potrebno je sve viesmanjivati duinu korakahi da bi korak bio uspean. Kriterijum za prekid pretraivanja moe da bude dostizanje brojaM neuspenih smerova nakon poslednjeg uspenog koraka. BrojM moe da seuzme prema empirijskim formulama

    (3) M = { 2n + 4, zan 3

    30

  • 8/8/2019 Seminarski-Negradijentne metode

    31/40

    Formiranje sluajnog vektora. Komponente sluajnogn-dimenzionalnog vektora = (1, ..., n)mogu se dobiti korienjem vrednostin sluajnih brojeva i (i = 1, ..., n) ravnomernorasporeenih unutar intervala[-C , C ], prema sledeoj formuli

    i = =

    2n

    i 1

    , i = 1, ...,n.

    Pri tome je, evidentno, ispunjen uslov

    =

    n

    i

    i1

    2 = 1.

    Ako se raspolae nizom sluajnih brojeva i koji su ravnomerno rasporeeni unutar pozitivnogintervala [0,C ], on se transformie u interval[-C , C ] prema formuli

    i = (i - 2C

    ) 2, i = 1, 2, ...,n. Na primer, ako je i u intervalu[0,1], on se transformie u interval[-1,1], prema formuli

    i = (i -21 ) 2, i = 1, 2, ...,n,

    posle ega se izraunavaju vrednosti i. Algoritam za generisanje komponentin-dimenzionalnogsluajnog jedininog vektora implementiran je sledeim programom:

    Sluvec [n_Integer ]:=

    Block [{v=Table [Random [] , {n }] ,s },

    s=Sum [v [[ i ]] ^2, {i,n }] ;

    s=Sqrt [s ];

    Do[v [[ i ]] /=s, {i,n };v

    ]

    Sledi opis implementacije metoda sluajnih smerova. Neophodni parametri algoritma su:

    Q(x) = Q( x1, ..., xn): ciljna funkcija;n: broj upravljakih parametara;x0= x0i, i = 1, ...,n: poetna taka;h0 = h0i, i = 1, ...,n : poetni parametar koraka;hmin = hmin i, i = 1, ...,n: minimalna parametar koraka, odnosno tanost lokalizacije ekstremumaza svaki upravljaki parametar;

    LH : vrednost kojom se skrauju koraci optimizacijehi, i= 1, ...,n;xmin = xmin i, i = 1, ..., n, i xmax = xmax i, i = 1, ..., n: vektori kojima je odreena oblastoptimizacije.

    Neophodni potprogrami su: potprogram za generisanje sluajnog vektoraSluvec ; potprogram za proveru ogranienjalimit .

    31

  • 8/8/2019 Seminarski-Negradijentne metode

    32/40

  • 8/8/2019 Seminarski-Negradijentne metode

    33/40

    If[lg, Do[h0[[i]]/=lh,{i,n}];]]

    ];{x0,q0, Lista}

    ]

    SluDir[x^3-2*y,{x,y},{-1,1},{0.1,0.2},{0.01,0.02},4,{-5,-3},{2,2}]

    {{-0.739492,2},-4.40439,{{-1,1},{-0.955531,1.17914},{-0.886699,1.32422},{-0.829814,1.48871},{-0.75933,1.63058},

    {-0.748812,1.82947},{-0.739492,2}}}

    SluDir[x^3-2*y,{x,y},{-1,1},{0.1,0.2},{0.01,0.02},4,{-5,-3},{2,2}]

    {{-1,1},-3,{{-1,1}}}

    Metod sluajnih smerova nije tako efikasan u odnosu na brzinu konvergencije, ali je on osnovaza niz drugih metoda, kao to su algoritam sa obrnutim korakom, algoritam sa linernominterpolacijom za ciljnu funkciju, algoritam sluajnog traenja sa samoobuavanjem, itd.

    3.7. SLUAJNO PRETRAIVANJE SA OBRNUTIM KORAKOM

    Znaajno ubrzanje konvengencije metoda sluajnih smerova moe se postii ako se uvedeobrnuti korak, u sluaju da je korak uinjen u neuspenoj oblasti.Ako se naini neki korak usluajnom prvcu koji se pokae neuspenim, logino je da se proveri obrnuti smer. U sluaju da se i prvi i drugi put pokau neuspenim, definie se novi sluajan smer.

    Algoritam ovog metoda se moe opisati na sledei nain: Korak 1 . Izabrati poetnu taku x0.

    Korak 2 . Izgraditi sluajan smer, kako je ve opisano. Korak 3 . Ako je generisani sluajni vektor odredio neuspeni smer optimizacije, pokuava se sa

    optimizacijom u suprotnom smeru. Korak 4 . Vratiti se na Korak 2 . Korak 5 . Kriterijum za prekid algoritma je isti kao i za metod sluajnih smerova.

    Ekstremum se lokalizuje sa tanouh0i za svaki upravljaki parametar.

    SluOb[q_,var_List,x_List,h_List,hmin_List,elha_,xmin_List,xmax_List]:=Block[{x0=x,ksi,M,q0,q1,n,i,L=0,x1=x,lg=True,h0=h,izbor,lh=elha,

    Lista={}},izbor=Input["1 za minimum 2 za maksimum"];n=Length[var];If[nx0[[i]],{i,n}];Lista=Append[Lista,x0];q1=q0;

    While[Lx1[[i]],{i,n}];If[(izbor==2 && q1q0),

    Do[x1[[i]]=x0[[i]]-h0[[i]]*ksi[[i]],{i,n}];x1=limit[x1,xmin,xmax];q1=q; Do[q1=q1/.var[[i]]->x1[[i]],{i,n}];

    ];

    33

  • 8/8/2019 Seminarski-Negradijentne metode

    34/40

    If[(izbor==2 && q1>q0) || (izbor==1 && q1hmin[[i]],lg=True],{i,n}];If[lg, Do[h0[[i]]/=lh,{i,n}];]

    ];];

    {x0,q0, Lista}]

    SluOb[x^3+2*y^2,{x,y},{-1,1},{0.1,0.2},{0.01,0.02},4,{-5,-3},{2,2}]{{-1.55094,-0.265895},-3.58924,{{-1,1},{-1.06338,0.845307},{-1.09779,0.657518},{-1.16784,0.514791},{-

    1.24229,0.381259},{-1.2713,0.189863},{-1.33009,0.028071},{-1.39927,-0.11634},{-1.40767,-0.163438},{-1.42045,-0.206405},{-1.44324,-0.22695},{-1.45699,-0.268711},{-1.45654,-0.218719},{-1.4761,-0.249871},{-1.47052,-0.201133},{-1.48827,-0.236339},{-1.51323,-0.239058},{-1.53813,-0.243634},{-1.54016,-0.255453},{-1.54633,-0.257448},{-1.55094,-0.265895}}}

    SluOb[x^3+2*y^2,{x,y},{-1,1},{0.1,0.2},{0.01,0.02},4,{-5,-3},{2,2}]{{2,2},16,{{-1,1},{-0.997411,1.19993},{-0.920265,1.32719},{-0.8313,1.41852},{-0.812757,1.61505},{-0.730393,1.72847},{-0.693126,1.91406},{-0.61685,2},{-0.574778,2},{-0.479851,2},{-0.382101,2},{-0.297681,2},{-0.231713,2},{-0.16233,2}, {-

    0.0942408,2}, {-0.0508033,2}, {0.0292366,2},{0.0634783,2},{0.154053,2},{0.240254,2},{0.33811,2}, {0.346015,2},{0.444102,2},{0.455186,2},{0.460586,2},{0.481856,2},{0.500042,2},{0.565621,2},{0.639537,2},{0.682759,2},{0.782758,2},{0.864978,2},{0.871523,2},{0.960705,2},{1.03271,2},{1.09905,2},{1.1641,2},{1.256,2},{1.35594,2},{1.44852,2},{1.48678,2},{1.55519,2},{1.62224,2},{1.67693,2},{1.734,2},{1.82125,2},{1.87931,2},{1.96629,2},{2,2}}}

    3.8. METOD NAMETNUTE SLUAJNOSTI

    U ovom sluaju, koristi se isti pravac generisan sluajnim vektorom sve dok je pretraivanje u

    tom pravcu uspeno. Posle toga, formira se novi sluajni vektor, odnosno novi pravac zaopimizaciju.

    Algoritam ovog metoda je sledei: Korak 1 . Formirati poetnu taku x0. Korak 2 . Izgraditi sluajni smer na ranije opisan nain. Korak 3 . Lokalizovati ekstremum u tom smeru. Lokalizacija moe da se izvri sa konstantnim

    korakom dok se ne dobijeneuspean rezultat, ili se moe iztvriti sa promenljivimkorakom.

    Korak 4 . Poslednjiuspean korak u uspenom pravcu se uzima za novu poetnu taku x0 ialgoritam se nastavlja od Koraka 2 . Korak 5 . Kriterijum za prekid algoritma je isti kao i za metod sluajnih smerova.

    SluCon[q_,var_List,x_List,h_List,hmin_List,elha_,xmin_List,xmax_List]:=Block[{x0=x,ksi,M,q0,q1,n,i,L=0,x1=x,lg=True,h0=h,izbor,

    lh=elha, Lista={}},izbor=Input["1 za minimum 2 za maksimum"];n=Length[var];If[nx0[[i]],{i,n}];

    Lista=Append[Lista,x0];q1=q0; While[L

  • 8/8/2019 Seminarski-Negradijentne metode

    35/40

    Do[x1[[i]]=x0[[i]]+h0[[i]]*ksi[[i]],{i,n}];x1=limit[x1,xmin,xmax];q1=q; Do[q1=q1/.var[[i]]->x1[[i]],{i,n}];While[(izbor==1 && q1q0),

    q0=q1; x0=x1; L=0;Do[x1[[i]]=x0[[i]]+h0[[i]]*ksi[[i]],{i,n}],x1=limit[x1,xmin,xmax];q1=q; Do[q1=q1/.var[[i]]->x1[[i]],{i,n}];Lista=Append[Lista,x0];];

    L=L+1; lg=False;Do[Which[h0[[i]]>hmin[[i]], lg=True],{i,n}];If[lg, Do[h0[[i]]/=lh,{i,n}]; ]

    ];{x0,q0,Lista}

    ]

    SluCon[x^3+2*y^2,{x,y},{-1,1},{0.1,0.2},{0.01,0.02},4,{-5,-3},{2,2}]{{-1,1},1,{{-1,1}}}

    SluCon[x^3+2*y^2,{x,y},{-1,1},{0.1,0.2},{0.01,0.02},4,{-5,-3},{2,2}]{{2,2},16,{{-1,1},{-0.947697,1.17046},{-0.895395,1.34093},{-0.843092,1.51139},{-0.79079,1.68185},{-

    0.738487,1.85232},{-0.686185,2},{-0.633882,2},{-0.58158,2},{-0.529277,2},{-0.476975,2},{-0.424672,2},{-0.37237,2},{-0.320067,2},{-0.267765,2},{-0.215462,2},{-0.16316,2},{-0.110857,2},{-0.0585545,2},{-0.006252,2},{0.0460505,2},{0.0983531,2},{0.150656,2},{0.202958,2},{0.255261,2},{0.307563,2},{0.359866,2},{0.412168,2},{0.464471,2},{0.516773,2},{0.569076,2},{0.621378,2},{0.673681,2},{0.725983,2},{0.778286,2},{0.830588,2},{0.882891,2},{0.935193,2},{0.987496,2},{1.0398,2},{1.0921,2},{1.1444,2},{1.19671,2},{1.24901,2},{1.30131,2},{1.35361,2},{1.40592,2},{1.45822,2},{1.51052,2},{1.56282,2},{1.61513,2},{1.66743,2},{1.71973,2},{1.77203,2},{1.82434,2},{1.87664,2},{1.92894,2},{1.98124,2},{2,2}}}

    Izbor poetne take pri sluajnom traenju.Brzina konvergencije algoritma sutinski zavisiod izbora poetne take. Osnovni metodi za izbor poetne take su:

    1Poetna taka se zadaje u oblasti ekstremuma akoapriori postoji takva informacija.

    2Poetna takax0 se zadaje u sreditu dozvoljene oblasti xmin i, xmax i, i = 1, ...,n: x0i =

    21 ( xmax i + xmin i), i = 1, ...,n.

    3poetna taka se generie na sluajan nain x0i = xmin i + i( xmax i - xmin i), i = 1, ...,n,

    pri emu je i pseudosluajan broj.4 Odabira se poetna taka iz skupa sluajnih taaka. Ovo predstavlja kombinaciju prostog

    sluajnog traenja i adaptivnog metoda. Generie se niz sluajnih taaka, a za poetnu se uzima onau kojoj ciljna funkcija ima najbolju vrednost Q(x0). Broj generisanih taaka N 0 moe se definissatiempirijskim formulama

    N 0 = {2n + 4, zan 3

    Ovakvom modifikacijom znatno se poveava konvergencija metoda.Brzina konvergencije moe se dodatno poveati ako se koristi poetni algoritam sluajnog

    pretraivanja sa velikim parametrom u poetnoj taki koja je izabrana iz skupa taaka koje sulokalizovane drugim algoritmom (na primer, gradijentnim algoritmom).

    Kako se metod zasniva na sluajnom izboru taaka iz zadatog intervala, prilikom vie poziva zaiste parametre dobijaju se razliiti rezultati. Greka je relativno velika. Zato se ovakvi metodinajee koriste za odreivanje poetnih vrednosti za neke druge metode.

    35

  • 8/8/2019 Seminarski-Negradijentne metode

    36/40

    3.9. KOMPLEKS METOD

    Ideja metoda je da se unutar dozvoljene oblasti formira oblak sluajnih taaka, koji se

    naziva kompleks , a koji e se na odgovarajui nain kretati prema ekstremnoj vrednosti ciljnefunkcije Q(x). Pri premetanju kompleksa koristi se teite kompleksa, koje se oznaava sax(c). Uovom poglavlju se izuava kompleks metod koji je primenljiv samo za ogranienja parametaraoblika x = (xmin, xmax).

    Algoritam kompleks metoda:

    Korak 1 . Formirati poetni kompleks koji sadri N m taakax( j), j = 1, ..., N m, formikrati prema formuli(4) xi( j) = xmin i + i( j)( xmax i xmin i),gde su i = 1, ...,n; j = 1, ..., N m. Veliine i( j) su ravnomerno rasporeeni sluajni brojevi iz intervala[0,1].Broj taaka u kompleksu se odreuje prema empirijskoj formuli

    N m = {2n + 2, n 3.

    Korak 2. U svakoj takix( j)

    kompleksa izraunati vrednosti Q( j)

    = Q(x( j)

    ). Korak 3 . Determinisati takux(b) unutar kompleksa u kojoj ciljna funkcija ima najbolju vrednost,

    kao i takux(w) unutar kompleksa u kojoj ciljna funkcija ima najloiju vrednost, tj.(5) Q(b) = Q(x(b)) = maxQ( j), Q(w) = Q(x(w)) = minQ( j).

    Korak 4 . Proveriti kriterijum za prekid algoritma:

    (6) =

    n

    i

    w xib xi1

    2))()(( Q(w), taka x( N ) se uzima za novu taku kompleksa umesto takex(w), tj.

    x(w)

    = x( N )

    , Q(w)

    = Q( N )

    . Agoritam se nastavlja od Koraka 3 . Korak 9 . Ako je Q( N )

  • 8/8/2019 Seminarski-Negradijentne metode

    37/40

    x~ i( N ) =

    21 ( xi(b) + xi(w)9, i = 1, ...,n.

    Korak 10 . IzraunatiQ

    ~ ( N) = Q( x~ ( N )). Korak 11 . Nova taka x~ ( N ) se uzima umestox(w), tj. postavljaju se smenex(w) = x~ ( N ), Q(w) = Q

    ~ ( N).Algoritam se nastavlja od Koraka 3 .

    Mogu se istai sledee pozitivne osobine kompleks metoda:1 Algoritam je jednostavan i pogodan za implementaciju na raunarima.2 Moe se koristiti kako za izraunavanje bezuslovnog, tako i za izraunavanje uslovnog

    ekstremuma.

    KompleksMetod [q_,prom_List,xmin_List,xmax_List,eps_ ]:=

    Block [{n=Lenght [ prom ],xb,xw,Nm,pniz,i,j,vektorq,

    qpom,qb,qw,xN,qN, kompleks,qkompleks= {},

    minq,minind,maxq,maxind },

    If [nxN [[ i ]] , {i,n }] ;

    If [qN >= qw,

    xN=(xb+xw)/2;xN=limit [xN,xmin,xmax ];

    ];

    37

  • 8/8/2019 Seminarski-Negradijentne metode

    38/40

    qN=q; Do [qN=qN/. prom [[ i ]] ->xN [[ i ]] , {i,n }] ;

    kompleks [[ maxind ]] =xN; qkompleks [[ maxind ]] =qN;

    Print [ kompleks= ,kompleks ];

    Print [ qkompleks= ,qkompleks ];

    minq=qkompleks [[ 1 ]] ; minind=1;

    maxq=qkompleks [[ 1 ]] ; maxind=1;

    For [i=2,i

  • 8/8/2019 Seminarski-Negradijentne metode

    39/40

    1u1(1)) = f (x0 + 1e1). Zatim se izraunavat1(1) = t0(1) + *1u1(1)

    i nastavlja se sai = 2, tj. izraunava se optimalna taka *2 funkcije f (t1(1) + 2u2(1)), azatim izraunava

    t2(1) = t1(1) + *2u2(1) (1)i nastavlja sai = 3, itd. Na kraju petlje izraunata su sva optimalna reenja *1 , *2 ,..., *n jednodimenzionalnih problema minimizacije, kao i svi vektorit1(1), t2(1)*, ..., tn(1).

    Korak 4. Nastavak k -te iteracije. Zamenitiui(k +1)= ui+1(k ), i = 1, ...,n -1,

    i stvaitiun(k +1)= un+1(k ) = tn(k ) t0(k ).

    Ovaj korak opisuje zamenu poetnih jedininih vektora sa konjugovanim vektorima. Dok se u prvoj iteraciji koriste vektori

    {u1(1), u2(1), ...,un(1)},za izraunavanje prve aproksimacijex1 koristi se konjugovani vektor un+1(1). Uizraunavanju druge aproksimacije koristie se novi skup vektora

    { u2(1), u3(1), ...,un(1), un+1(1)} = { u1(2), u2(2), ...,u n-1(2), un(2)}.Treba primetiti da je prvi jedinini vektor otpao, zapravo je zamenjen konjugovanimvektoromu n+1(1). Da bi se moglo lako kontrolisati koji e vektor otpasti i koji su vektorikonjugovani, uvedeno je ureenje meu vektorima. Novi konjugovani vektor uvek se pojavljuje u slupu tekuih vektora sa desne strane.

    Korak 5 . Zavretak k -te iteracije: Izraunati broj *

    n+1 sa osobinom f (tn(k ) + *n+1 ( tn(k ) t0(k ))) = min f (tn(k ) + n+1(tn(k ) t0(k ))),

    ixk = tn(k ) + *n+1 (tn(k ) t0(k )).

    (Vektor un+1(k ) = tn(k ) t0(k ) jedan je od konjugovanih vektora.U smeru toga vektora, uzetogiz take tn(k ), nalazi se aproksimacijaxk ).

    Korak 6. Primena pravila zaustavljanja (k = 1, ...).Ako je| | xk xk -1| | <

    proces se zaustavlja jer jexk dovoljno dobra aproksimacija lokalnog optimumaxk . Akoovo nije sluaj, stavitit0(k ) = xk -1

    i vratiti se na Korak 3 i nastaviti sa (k + 1)-vom iteracijom.

    Sledi implementacija u jezikuMATHEMATICA :

    powelvise [q_,pr_,x_,eps_ ] :=

    Block [{funpom,fjed,vt0=x,vt1=x,vx0=x,vx1=x,rast=2*eps,

    vvu=Table [0, {Length [ pr ]} , {Length [ pr ]}] ,

    vnovi=Table [ 0, {Lenght [ pr ]}] ,vpomkonj=Table [0, {Lenght [ pr ]}] ,teta,tetamin,

    pomeraj,n=Lenght [ pr ],i,j,jj,iter=0 },

    39

  • 8/8/2019 Seminarski-Negradijentne metode

    40/40

    Do[vvu [[ i,i ]] =1, {i,1,n }];(* glavna petlja iteracije *)

    While [rasp>eps,iter++;vt0=vx0;

    Do[vpomkonj=vvu [[ i ]] ; fjed=q;

    Do[fjed=fjed/.pr [[ j ]] ->(vt0 [[ j ]] +teta*vpomkonj [[ j ]] ), {j,1,n }];

    tetamin=dskpowel [fjed, {teta },0,N [esp/10 ]] ;

    pomeraj=tetamin [[ 1 ]] ;

    Do[vt1 [[ j ]] =N[vt0 [[ j ]] +pomeraj*vpomkonj [[ j ]] ],

    {j,1,n }];vt0=vt1,

    {i,1,n }];

    Do[vvu [[ i ]] =vvu [[ i+1 ]] , {i,1,n-1 }];

    Do[vpomkonj [[ i ]] =vt1 [[ i ]] -vx0 [[ i ]] , {i,1,n }];

    vvu [[ n ]] =vpomkonj;fjed=q;

    Do[fjed=fjed/.pr [[ j ]] ->

    (vx0 [[ j ]] +teta*vpomkonj [[ j ]] ), {j,1,n }];

    tetamin=dskpowel [fjed, {teta },0,N, [eps/10 ]] ;

    pomeraj=tetamin [[ 1 ]] ;

    Do[vx1 [[ j ]] =N[vx0 [[ j ]] +pomeraj*vpomknj [[ j ]]] ,

    {j,1,n }];

    rast=mera [vx1,vx0 ];vx0=vx1;

    funpom=q;Do[funpom=N [funpom/.pr [[ i ]] ->vx1 [[ i ]]] , {i,1,n }];

    ]

    Return [{vx1, funpom }];

    ]