36
Metode de Optimizare – Curs 14 1 VII.3.5. Metode Newton modificate În ultimul algoritm prezentat în cursul trecut în situaţia în care hessiana Hf(x k ) nu era pozitiv definită se folosea drept direcţie de deplasare v k = -f(x k ) specifică metodei gradientului. Altă variantă este modificarea ad-hoc a matricei Hf(x k ). Mai precis, folosirea unei direcţii de forma B k = Hf(x k ) + E k unde E k este o matrice aleasă astfel încât Hf(x k ) + E k să fie „suficient de pozitiv definită” (E k = 0 dacă Hf(x k ) este „suficient de pozitiv definită”). Metodele de acest tip poartă numele de metode Newton modificate (sau metode Newton cu modificarea hessianei). Algoritmul asociat metodelor de tip Newton modificate este schiţat mai jos (se presupune x 0 dat) k: = 0; cât timp ||∇f(x k )|| 0 execută pasul 1: * se calculează B k = Hf(x k ) + E k , unde E k este o matrice aleasă astfel încât Hf(x k ) + E k să fie „suficient de pozitiv definită” (E k = 0 dacă Hf(x k ) este „suficient de pozitiv definită”) pasul 2: *se rezolvă sistemul B k v k = -f(x k ) pasul 3: *se determină pasul de deplasare t k (suboptimal) asociat direcţiei de deplasare v k ; pasul 4: x k+1 = x k + t k v k ; k: = k+1; Pentru determinarea matricei B k putem pleca de la descompunerea spectrală a matricei simetrice Hf(x k ), adică scrierea ei sub forma Hf(x k ) = QDQ t , unde Q este o matrice ortogonală (având pe coloane vectori proprii ai lui Hf(x k )) iar D o matrice diagonală (având pe diagonala principală valorile proprii ale lui Hf(x k )): Se poate lua B k = Hf(x k ) + E k = QD m Q t , unde λ 1 0 0 0 0 λ 2 0 0 0 0 0 λ n D =

Metode de Optimizare – Curs 14Metode de Optimizare – Curs 14 1 VII.3.5. Metode Newton modificate În ultimul algoritm prezentat în cursul trecut în situa ţia în care hessiana

  • Upload
    others

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

  • Metode de Optimizare – Curs 14

    1

    VII.3.5. Metode Newton modificate

    În ultimul algoritm prezentat în cursul trecut în situaţia în care hessiana

    Hf(xk) nu era pozitiv definită se folosea drept direcţie de deplasare vk = -∇f(xk)

    specifică metodei gradientului. Altă variantă este modificarea ad-hoc a matricei

    Hf(xk). Mai precis, folosirea unei direcţii de forma Bk = Hf(xk) + Ek unde Ek este o

    matrice aleasă astfel încât Hf(xk) + Ek să fie „suficient de pozitiv definită” (Ek = 0

    dacă Hf(xk) este „suficient de pozitiv definită”). Metodele de acest tip poartă

    numele de metode Newton modificate (sau metode Newton cu modificarea

    hessianei).

    Algoritmul asociat metodelor de tip Newton modificate este schiţat mai

    jos (se presupune x0 dat) k: = 0;

    cât timp ||∇f(xk)|| ≠0 execută

    pasul 1: * se calculează Bk = Hf(xk) + Ek, unde Ek este o matrice aleasă

    astfel încât Hf(xk) + Ek să fie „suficient de pozitiv definită” (Ek

    = 0 dacă Hf(xk) este „suficient de pozitiv definită”)

    pasul 2: *se rezolvă sistemul Bkvk = -∇f(xk)

    pasul 3: *se determină pasul de deplasare tk (suboptimal) asociat

    direcţiei de deplasare vk;

    pasul 4: xk+1 = xk + tkvk ; k: = k+1;

    Pentru determinarea matricei Bk putem pleca de la descompunerea

    spectrală a matricei simetrice Hf(xk), adică scrierea ei sub forma Hf(xk) = QDQt,

    unde Q este o matrice ortogonală (având pe coloane vectori proprii ai lui Hf(xk))

    iar D o matrice diagonală (având pe diagonala principală valorile proprii ale lui

    Hf(xk)):

    Se poate lua Bk = Hf(xk) + Ek = QDmQ

    t, unde

    λ1 0 0 … 0

    0 λ2 0 … 0

    0 0 0 … λn

    D =

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    2

    cu µi = max (ε, |λi|) pentru orice 1 ≤ i ≤ n (sau eventual, µi = max (ε, λi) pentru

    orice 1 ≤ i ≤ n), ε fiind un număr pozitiv „mic” (de exemplu, ε = machε , unde

    εmach este precizia maşinii). O astfel de descompunere necesită un volum mare de

    calcul dacă n mare. Un volum mai mic de calcul se obţine dacă se estimează doar

    cea mai mică valoare proprie λmin(Hf(xk)) a matricei Hf(xk) şi se ia

    ε fiind un număr pozitiv „mic”.

    Dacă matricea Hf(xk) are o valoare proprie negativă mare în modul şi

    restul valorilor proprii pozitive dar mici în modul, atunci se poate întâmpla ca prin

    această metodă direcţia de deplasare obţinută să fie esenţial direcţia celei mai

    rapide descreşteri.

    Alte metode de modificare a hessianei se bazează pe factorizări Cholesky.

    Probabil cea mai simplă idee este de a determina un scalar τ >0 cu proprietatea că

    Hf(xk) + τIn este „suficient de pozitiv definită”. Un algoritm pentru determinarea

    lui τ (bazat pe factorizări Cholesky) este prezentat mai jos (pentru simplitate

    notăm Hf(xk) = A, iar elementele de pe diagonala principală cu aii, 1≤i≤n) :

    ρ > 0 dat (de exemplu, ρ = 10-3)

    dacă min{aii, 1≤i≤n} > 0 atunci τ0 : = 0

    altfel τ0 : = - min{aii, 1≤i≤n} + ρ

    µ1 0 0 … 0

    0 µ2 0 … 0

    0 0 0 … µn

    Dm =

    max(0, ε-λmin(Hf(xk))) 0 0 … 0

    0 max(0, ε-λmin(Hf(xk))) 0 … 0

    0 0 0 … max(0, ε-λmin(Hf(xk)))

    Ek = = max(0, ε-λmin(Hf(xk)))In

  • Metode de Optimizare – Curs 14

    3

    pentru k = 0, 1, … execută

    * se încearcă factorizarea Cholesky LLt = A + τkIn

    dacă factorizarea reuşeşte atunci return L şi STOP

    altfel τk+1 : = max (2τk, ρ)

    Prezentăm în continuare implementarea în MAPLE ale algoritmului de

    mai sus. Procedura are drept parametri funcţia obiectiv f, punctul iniţial, notat x00,

    şi precizia ε (criteriul de oprire este ||∇f(xk)|| < ε). Deoarece procedura foloseşte

    comenzi (vector, grad, hessian, cholesky, etc.) din pachetul linalg, înainte de

    utilizarea ei pachetul trebuie încărcat:

    > with(linalg):

    Funcţionare procedurii va fi exemplificată pentru funcţiile

    > f1:=(x,y)->3*x^2+2*y^2-2*x*y-4*x+2*y-3;

    := f1 → ( ),x y + − − + − 3 x2 2 y2 2 x y 4 x 2 y 3

    > f2:=(x,y)->10*(y-x^2)^2+(x-1)^2;

    := f2 → ( ),x y + 10 ( ) − y x22

    ( ) − x 1 2 > f4:=(x,y)->1/(x-1)^4/4+(y^2-x);

    := f4 → ( ),x y + − 14

    1

    ( ) − x 1 4y2 x

    > f6:=(x,y)->x^2*(4-2.1*x^2+x^4/3)+x*y+y^2*(-4+4*y^2);

    := f6 → ( ),x y + + x2

    − + 4 2.1 x

    2 13

    x4 x y y2 ( )− + 4 4 y2

    Implementarea unei variante a metodei Newton modificate (pasul de deplasare

    este generat prin algoritmul backtracking-Armijo) :

    > newton_modif:=proc(f,x00,epsilon)

    > local x0,x1,g,H,g0,H0,L,y,v,n,t,z0,tinit,

    beta,delta,p,pp,rho,tau,md,test,dd;

    > n:=vectdim(x00); x0:=vector(n); x1:=vector(n);y:=vector(n);

    >v:=vector(n);beta:=0.5;delta:=0.1;tinit:=1.;

    >L:=matrix(n,n);dd:=floor(Digits/2);

    > g:=grad(f(seq(x[i],i=1..n)),[seq(x[i],i=1..n)]);

    > H:=hessian(f(seq(x[i],i=1..n)),[seq(x[i],i=1..n)]);

    > x0:=map(evalf,x00);

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    4

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    > while norm(g0,2)>=epsilon do

    > H0:=evalm(matrix(n,n,[seq(seq(subs(seq(x[i]=x0[i],i=1..n),

    H[j,p]),j=1..n),p=1..n)]));

    > rho:=0.001;

    >md:=min(seq(H0[i,i],i=1..n));

    >if md>0 then tau:=0. else tau:=-md+rho fi;

    >test:=1;

    >while test=1 do test:=0;

    >for p from 1 to n do

    >md:=H0[p,p]+tau -sum(L[p,i]^2,i=1..p-1);

    >if mdelse L[p,p]:=md^(1/2); for pp from p+1 to n do

    >L[pp,p]:=(H0[pp,p]-sum(L[pp,i]*L[p,i],i=1..p-1))/L[p,p] od

    >fi

    >od;

    >od;

    > y[1]:=-g0[1]/L[1,1];

    > for p from 2 to n do

    >y[p]:=(-g0[p]-sum(L[p,j]*y[j],j=1..p-1))/L[p,p] od;

    > v[n]:=y[n]/L[n,n];

    > for p from n-1 by -1 to 1 do

    >v[p]:=(y[p]-sum(L[j,p]*v[j],j=p+1..n))/L[p,p] od;

    > z0:=evalf(f(seq(x0[i],i=1..n))); t:=tinit;

    >x1:=evalm(x0+t*v);

    > while f(seq(x1[i],i=1..n))>z0+t*delta*sum(g0[i]*v[i],i=1..n)

    > do t:=t*beta; x1:=evalm(x0+t*v);

    > od;

    > x0:=evalm(x1);

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    > od;

    > RETURN(evalm(x0))

    > end;

    > newton_modif(f1,vector([0,0]),10^(-4));

    [ ],0.6000000001 -0.2000000002

    > newton_modif(f2,vector([1,0]),10^(-4));

  • Metode de Optimizare – Curs 14

    5

    [ ],1. 1.000000000

    > newton_modif(f2,vector([-1,0]),10^(-4));

    [ ],0.9999993870 0.9999987218

    > newton_modif(f2,vector([-0.5,0.2]),10^(-4));

    [ ],1.000000004 0.9999999981

    > newton_modif(f3,vector([0,-1]),10^(-4));

    [ ],0.4714045208 10-10 0.1 10-8

    > newton_modif(f5,vector([2,3]),10^(-4));

    [ ],1.565194829 0.1 10-53

    > newton_modif(f4,vector([0.5,3]),10^(-4));

    [ ],0.12864143 10-5 -0.1 10-62

    > newton_modif(f4,vector([-0.5,0.2]),10^(-4));

    [ ],0.2439499 10-7 0.1 10-18

    > newton_modif(f6,vector([-1,-1]),10^(-4));

    [ ],0.08984236139 -0.7126591488

    > newton_modif(f6,vector([-1,1]),10^(-4));

    [ ],-0.08984201229 0.7126564041

    > newton_modif(f6,vector([1,1]),10^(-4));

    [ ],-0.08984236139 0.7126591488

    Pentru funcţiile f6 cu punctul iniţial (1, -1)t şi f2 cu punctul iniţial (0, 1)

    t prezentăm

    mai jos şi reprezentarea grafică (3D şi contour) a iteraţiilor:

    > newton_modif(f6,vector([1,-1]),10^(-4));

    [ ],0.08984201229 -0.7126564041

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    6

    Număr de iteraţii: 6

    > newton_modif(f2,vector([0,1]),10^(-4));

    [ ],1.000000003 0.9999999948

    Număr de iteraţii: 5

    Deşi simplu de implementat algoritmul prezentat mai înainte poate

    necesita un volum mare de calcul (în situaţia în care se încearcă factorizări

    Cholesky pentru multe valori τk). Poate fi avantajos ca τ să crească la fiecare

    iteraţie cu un factor mai mare, de exemplu 10 în loc de 2.

    Altă strategie de modificare hessianei este de a aplica algoritmul de

    factorizare Cholesky şi de a mării elementele diagonale care apar în algoritm.

    Acest algoritm Cholesky modificat garantează pe de parte existenţa factorului

  • Metode de Optimizare – Curs 14

    7

    Cholesky cu elemente care nu depăşesc în modul norma hessianei, iar pe de altă

    parte nu modifică hessiana dacă este „suficient de pozitiv definită”. Începem

    descrierea acestei strategii prin recapitularea aşa numitei descompuneri LDLt a

    unei matrice simetrice A cu minorii principali nenuli. O scriere a matricei A sub

    forma A = LDLt, unde L este o matrice inferior triunghiulară cu elementele de pe

    diagonala principală egale cu 1, şi D o matrice diagonală se numeşte factorizare

    LDLt. Ţinând cont de relaţiile:

    aij = ∑=

    j

    1kjkkkik LDL = ∑

    =

    1j

    1kjkkkik LDL + LijDjj pentru i ≥ j =1,2,…,n.

    obţinem următorul algoritm pentru calculul factorizării LDLt a unei matrice A

    pentru j=1,2,...,n execută

    Djj := ajj - ∑−

    =

    1j

    1kkk

    2jk DL

    pentru i = j+1, j+2,...,n execută

    Lij : = jjD

    1(aij - ∑

    =

    1j

    1kjkkkik LDL )

    Algoritmul funcţionează pentru matrice simetrice cu minorii principali nenuli, în

    particular pentru matrice A pozitiv definite. Legătura între factorul Cholesky M al

    matricei A (A= MMt cu M =(mij)i,j o matrice inferior triunghiulară cu elementele

    de pe diagonala principală pozitive) şi factorizare A = LDLt este

    mij = Lij jjD pentru orice i,j.

    Algoritmul de factorizare Cholelesky modificat aplicat unei matrice A presupune

    date două valori ε > 0 şi η >0. Se calculează A + E = LDLt = MMt astfel încât

    Djj ≥ ε şi |mij| ≤ η pentru orice i şi j.

    Algoritm Cholesky modificat pentru calculul factorizării A + E = LDLt = MMt

    pentru j=1,2,...,n execută

    Cjj : = ajj - ∑−

    =

    1j

    1kkk

    2jk DL ; θj := max{cij, j

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    8

    pentru i = j+1, j+2,...,n execută

    Cij : = (aij - ∑−

    =

    1j

    1kjkkkik LDL ); Lij : =

    jjD

    1Cjj;

    Să verificăm că într-adevăr |mij| ≤ η pentru orice i şi j:

    |mij| = |Lij| jjD =ij

    jj

    C

    D ≤

    ij

    j

    C η

    θ ≤ η.

    Pentru a reduce modificările asupra lui A se pot face permutări simetrice de linii şi

    coloane (algoritmul Cholesky modificat datorat lui Gill, Murray şi Wright)

    obţinându-se factorizarea PAPt + E = LDLt = MMt, unde P este matricea de

    permutare.

    VII.3.6. Metoda direcţiilor conjugate. Metoda gradientului

    conjugat

    Fie C ∈Mn,n(R) o matrice pozitiv definită. Matricea C induce un produs

    scalar pe Rn, notat C :

    C : = , x, y ∈ Rn.

    Doi vectori x, y ∈Rn se numesc conjugaţi în raport cu C (sau C – ortogonali)

    dacă = 0 (sau echivalent, C = 0).

    Dacă vectorii v1, v2, ..., vk sunt nenuli conjugaţi în raport cu C doi câte doi,

    atunci v1, v2, ..., vk sunt liniar independenţi (deoarece conjugarea în raport cu C

    înseamnă ortogonalitate în raport cu produsul scalar C şi într-un spaţiu pre-

    Hilbert orice familie de vectori nenuli ortogonali doi câte doi este liniar

    independentă). În particular, dacă k = n, vectorii v1, v2, ..., vn constituie o bază în

    Rn.

    Lema 34. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 + cu

    C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat, şi fie v0, v1, ..., vn-1

    o familie de vectori nenuli conjugaţi în raport cu C doi câte doi. Atunci există şi

    este unic un punct de minim global x* al lui f şi

  • Metode de Optimizare – Curs 14

    9

    x* = in 1 i

    i ii 0

    d, vv

    Cv , v

    =

    < >− ∑ < >

    .

    Demonstraţie. Avem ∇f(x) = Cx + d şi Hf(x) = C pentru orice x ∈ Rn.

    Deoarece C este pozitiv definită rezultă că f este convexă, deci un punct x* este

    punct de minim dacă şi numai dacă x* este punct staţionar. Avem

    ∇f(x*) = 0 x* = -C-1d,

    şi ca urmare x* = -C-1d este unicul punct de minim al lui f. Deoarece v0, v1, ..., vn-1

    sunt vectori nenuli conjugaţi în raport cu C doi câte doi, ei constituie o bază în Rn.

    În consecinţă, există scalarii α0, α1, ..., αn-1∈R astfel încât

    -C-1d = n 1 i

    ii 0

    v−

    =α∑

    C = n 1 i j

    i Ci 0

    v , v−

    =α < >∑

    -C = αj C

    - = αj

    αj = j

    j j

    d, v

    Cv , v

    < >−

    < >.

    Aşadar x* = -C-1d = in 1 i

    i ii 0

    d, vv

    Cv , v

    =

    < >− ∑ < >

    Lema 35. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 + cu

    C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat. Dacă vk∈Rn este un

    vector nenul, atunci soluţia optimă a problemei t 0inf

    ≥f(xk + tvk) este

    tk = ( )k k

    k k

    f x , v

    Cv , v

    < ∇ >−

    < >

    Demonstraţie. Pentru orice t avem

    f(xk+tvk) = 1

    2 t2 + t( + )

    1

    2 +

    +1

    2 +

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    10

    de unde rezultă că tk =k k

    k k

    Cx d, v

    Cv , v

    < + >−

    < >=

    ( )k kk k

    f x , v

    Cv , v

    < ∇ >−

    < >.

    Propoziţie 36. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 +

    cu C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat, şi fie v0,

    v1, ..., vn-1 o familie de vectori nenuli conjugaţi în raport cu C doi câte doi. Se

    construieşte şirul (xk)k:

    xk+1 = xk + tkvk, x0 dat, 0≤ k ≤n-1

    unde tk este pasul optimal asociat direcţiei vk, adică tk este soluţia optimă a

    problemei t 0inf

    ≥f(xk + tvk). Atunci xn = x* unicul punct de minim al lui f.

    Demonstraţie. Deoarece v0, v1, ..., vn-1 sunt vectori nenuli conjugaţi în

    raport cu C doi câte doi, ei constituie o bază în Rn. În consecinţă, există scalarii α0,

    α1, ..., αn-1∈R astfel încât

    x0 = n 1 i

    ii 0

    v−

    =α∑

    C = n 1 i j

    i Ci 0

    v , v−

    =α < >∑

    C = αj C

    = αj

    αj = 0 j

    j j

    Cx , v

    Cv , v

    < >

    < >.

    Aşadar

    x0 = 0 in 1 ii i

    i 0

    Cx , vv

    Cv , v

    =

    < >∑

    < > (36.1)

    Adunând relaţiile xi+1 = xi + tivi pentru i =0..k-1, obţinem

    xk = x0 + k 1 i

    ii 0

    t v−

    =∑ . (36.2)

    C = x0 +

    k 1 i ki C

    i 0t v , v

    =< >∑

    = (36.3)

  • Metode de Optimizare – Curs 14

    11

    Deci

    = = +

    ( )

    =36.3

    + (36.4)

    Din lema 35 rezultă că tk = ( )k k

    k k

    f x , v

    Cv , v

    < ∇ >−

    < > ( )

    =36.4

    0 k k

    k k k k

    Cx , v d, v

    Cv , v Cv , v

    < > < >− −

    < > < >

    pentru orice k, şi înlocuind în (36.2) k cu n şi fiecare ti, obţinem:

    xn = x0 + ( )k kn 1 k

    k kk 0

    f x , vv

    Cv , v

    =

    < ∇ > −∑ < >

    = x0 + 0 i in 1 ii i i ii 0

    Cx , v d, vv

    Cv , v Cv , v

    =

    < > < >− − ∑ < > < >

    = x0 + 0 in 1 ii i

    i 0

    Cx , vv

    Cv , v

    =

    < >− ∑

    < >+

    in 1 ii ii 0

    d, vv

    Cv , v

    =

    < >− ∑ < >

    ( )

    =36.1

    x0 – x0 + in 1 i

    i ii 0

    d, vv

    Cv , v

    =

    < >− ∑ < >

    (36.5)

    Conform lemei 34, f are unic punct de minim

    x* = in 1 i

    i ii 0

    d, vv

    Cv , v

    =

    < >− ∑ < >

    ,

    şi în consecinţă ţinând cont şi de (36.5), rezultă xn =x*.

    Lema 37. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 + cu

    C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat, şi fie v0, v1, ..., vm-1

    (m un număr natural) o familie de vectori conjugaţi în raport cu C doi câte doi. Se

    construieşte şirul (xk)k:

    xk+1 = xk + tkvk, x0 dat, 0≤ k ≤m

    unde tk este pasul optimal asociat direcţiei vk, adică tk este soluţia optimă a

    problemei t 0inf

    ≥f(xk + tvk). Atunci = 0 pentru orice i ∈ {0, 1, …, k}.

    Demonstraţie. Vom face demonstraţia inductiv după k. Pentru k =0 avem

    = = +

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    12

    = + t0 + ,

    şi ţinând cont că t0 = ( )0 0

    0 0

    f x , v

    Cv , v

    < ∇ >−

    < >=

    0 0 0

    0 0 0 0

    Cx , v d, v

    Cv , v Cv , v

    < > < >− −

    < > < > (conform,

    lemei 35) rezultă că = 0. Presupunem afirmaţia adevărată pentru k şi

    o demonstrăm pentru k+1. Pentru i = k avem

    = = +

    = + tk + ,

    iar din lema 35, tk = ( )k k

    k k

    f x , v

    Cv , v

    < ∇ >−

    < >=

    k k k

    k k k k

    Cx , v d, v

    Cv , v Cv , v

    < > < >− −

    < > < > . Aşadar

    = 0. Pentru i ∈ {0, 1, …, k-1}, conform ipotezei de inducţie

    = 0, şi ca urmare

    = =

    = + tk = tkC = 0.

    Propoziţie 38. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 +

    cu C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat, şi fie v0,

    v1, ..., vn-1 o familie de vectori nenuli conjugaţi în raport cu C doi câte doi. Se

    construieşte şirul (xk)k:

    xk+1 = xk + tkvk, x0 dat, 0≤ k ≤n-1

    unde tk este pasul optimal asociat direcţiei vk, adică tk este soluţia optimă a

    problemei t 0inf

    ≥f(xk + tvk). Atunci xk+1 este soluţie optimă a problemei

    x Ak

    inf∈

    f(x),

    unde Ak = x0 + Sp{v0, v1, …, vk} = x0 +

    n 1 ii i

    i 0v ,

    =

    λ λ ∈∑

    R .

    Demonstraţie. Adunând relaţiile xi+1 = xi + tivi pentru i =0..k, obţinem

    xk+1 = x0 + k i

    ii 0

    t v=∑ .

    Fie x ∈Ak. Atunci există λ0, λ1, ..., λn-1∈R astfel încât x = x0 +

    n 1 ii

    i 0v

    =λ∑ . Avem

    = ( ) ( )kk 1 i

    i ii 0

    f x , t v+

    =< ∇ λ − >∑

  • Metode de Optimizare – Curs 14

    13

    = ( ) ( )k k 1 i

    i ii 0

    t f x , v+

    =λ − < ∇ >∑

    = 0

    conform lemei 37. Deci pentru orice x∈Ak avem

    f(x) – f(xk+1) ≥ = 0,

    şi ca urmare xk+1 este punct de minim pentru f pe Ak.

    În cazul metodei gradientului conjugat vectorii C- conjugaţi v0, v1, ..., vn-1

    se construiesc prin ortogonalizarea relativ la produsul scalar C a sistemului de

    vectori –∇f(x0), -∇f(x1), ..., ∇f(xn-1) folosind procedeul Gram-Schmidt. Astfel

    v0 = -∇f(x0)

    vk = -∇f(xk) + k 1 i

    kii 0

    v−

    =λ∑

    unde λki (i=0..k-1) se determină astfel încât pentru orice k şi orice j ≤ k-1,

    = 0. Astfel

    λki = ( )i k C

    i iC

    v , f x

    v , v

    < ∇ >

    < >=

    ( )i ki i

    Cv , f x

    Cv , v

    < ∇ >

    < >

    Conform lemei 37, pentru orice k ≥ 1 avem

    = - = 0

    şi pentru orice i ≥1 şi k≥ i+1

    = < - vi +i 1 j

    i 1, jj 0

    v−

    −=

    λ∑ , ∇f(xk)> = 0.

    Pe de altă parte

    ∇f(xi+1) = Cxi+1 + d = Cxi + tiCvi + d = ∇f(xi) + tiCv

    i

    şi ca urmare pentru orice i ∈{0, 1, …, k-2}

    0 = = + ti = ti.

    Aşadar = 0 şi deci λki =0 pentru orice i ∈{0, 1, …, k-2}. Deci

    vk = -∇f(xk) + k 1 i

    kii 0

    v−

    =λ∑ = -∇f(xk) + λkk-1v

    k-1

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    14

    = -∇f(xk) + ( )k 1 k

    k 1 k 1

    Cv , f x

    Cv , v

    − −

    < ∇ >

    < >vk-1.

    Deci vk+1 = -∇f(xk+1) + βkvk, unde

    βk = ( )k k 1

    k k

    Cv , f x

    Cv , v

    +< ∇ >

    < >

    Cum din lema 35 tk = ( )k k

    k k

    f x , v

    Cv , v

    < ∇ >−

    < > şi

    ∇f(xk+1) = Cxk+1 + d = Cxk + tkCvk + d = ∇f(xk) + tkCv

    k

    =∇f(xk) ( )k k

    k k

    f x , v

    Cv , v

    < ∇ >−

    < > Cvk

    rezultă că Cvk = ( )

    k k

    k k

    Cv , v

    f x , v

    < >

    < ∇ >(∇f(xk) - ∇f(xk+1)). În consecinţă

    βk = ( ) ( ) ( )

    ( )

    k k 1 k 1

    k k

    f x f x , f x

    f x , v

    + +< ∇ − ∇ ∇ >

    < ∇ >

    şi ţinând cont că vk = -∇f(xk) + βk-1vk-1, de unde = -

    (conform lemei 37, = 0), rezultă

    βk = ( ) ( ) ( )

    ( ) ( )

    k 1 k k 1

    k k

    f x f x , f x

    f x , f x

    + +< ∇ − ∇ ∇ >

    < ∇ ∇ >

    Deoarece = 0, βk poate fi exprimat echivalent:

    βk = ( ) ( )

    ( ) ( )

    k 1 k 1

    k k

    f x , f x

    f x , f x

    + +< ∇ ∇ >

    < ∇ ∇ >.

    În virtutea condiţiei de C-ortogonalitate, în cazul funcţiilor pătratice, metoda

    gradientului conjugat converge într-un număr finit de paşi k ≤ n (conform

    propoziţiei 36). Deoarece formulele de calcul pentru βk nu depind explicit de

    matricea C, metoda poate fi aplicată unor funcţii mai generale. Dacă funcţia f nu

    este pătratică atunci cele două formule de calcul ale lui βk nu sunt echivalente.

    În cazul în care

  • Metode de Optimizare – Curs 14

    15

    βk = ( ) ( )

    ( ) ( )

    k 1 k 1

    k k

    f x , f x

    f x , f x

    + +< ∇ ∇ >

    < ∇ ∇ >.

    se obţine algoritmul Fletcher-Reeves, iar în cazul în care

    βk = ( ) ( ) ( )

    ( ) ( )

    k 1 k k 1

    k k

    f x f x , f x

    f x , f x

    + +< ∇ − ∇ ∇ >

    < ∇ ∇ >

    se obţine algoritmul Polak-Ribiere. Schiţăm mai jos cei doi algoritmi.

    Algoritmul Fletcher-Reeves (se presupune x0 dat)

    k: = 0;

    v0:=∇f(x0);

    cât timp ||∇f(xk)|| ≠0 execută

    pasul 1: *se determină pasul de deplasare tk (optimal sau suboptimal)

    asociat direcţiei de deplasare vk;

    pasul 2: xk+1 = xk + tkvk ;

    pasul 3: βk : = ( ) ( )

    ( ) ( )

    k 1 k 1

    k k

    f x , f x

    f x , f x

    + +< ∇ ∇ >

    < ∇ ∇ >; vk+1:=-∇f(xk+1) + βkv

    k.

    k: = k+1;

    Algoritmul Polak-Ribiere (se presupune x0 dat)

    k: = 0;

    v0:=∇f(x0);

    cât timp ||∇f(xk)|| ≠0 execută

    pasul 1: *se determină pasul de deplasare tk (optimal sau suboptimal)

    asociat direcţiei de deplasare vk;

    pasul 2: xk+1 = xk + tkvk ;

    pasul 3: βk : = ( ) ( ) ( )

    ( ) ( )

    k 1 k k 1

    k k

    f x f x , f x

    f x , f x

    + +< ∇ − ∇ ∇ >

    < ∇ ∇ >;

    vk+1:=-∇f(xk+1) + βkvk.

    k: = k+1;

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    16

    Prezentăm în continuare implementarea în MAPLE a celor doi algoritmi de mai

    sus. Procedurile au drept parametri funcţia obiectiv f, punctul iniţial, notat x00, şi

    precizia ε (criteriul de oprire este ||∇f(xk)|| < ε). Procedurile folosesc comenzi din

    pachetul linalg. Funcţionare procedurilor va fi exemplificată pentru funcţiile:

    > f1:=(x,y)->3*x^2+2*y^2-2*x*y-4*x+2*y-3;

    := f1 → ( ),x y + − − + − 3 x2 2 y2 2 x y 4 x 2 y 3

    > f2:=(x,y)->10*(y-x^2)^2+(x-1)^2;

    := f2 → ( ),x y + 10 ( ) − y x22

    ( ) − x 1 2 > f4:=(x,y)->1/(x-1)^4/4+(y^2-x);

    := f4 → ( ),x y + − 14

    1

    ( ) − x 1 4y2 x

    > f6:=(x,y)->x^2*(4-2.1*x^2+x^4/3)+x*y+y^2*(-4+4*y^2);

    := f6 → ( ),x y + + x2

    − + 4 2.1 x

    2 13

    x4 x y y2 ( )− + 4 4 y2

    Pentru funcţiile f6 cu punctul iniţial (1, -1)t şi f2 cu punctul iniţial (0, 1)

    t vom

    prezenta şi reprezentarea grafică (3D şi contour) a iteraţiilor (cele două funcţii nu

    sunt funcţii convexe!).

    Implementarea algoritmului Fletcher-Reeves (pasul optimal de deplasare este

    obţinut prin metoda secţiunii de aur) :

    > FletcherReeves:=proc(f,x00,epsilon)

    > local x0,i,n,g,g0,v,beta,t1,t2,t,

    y1,y2,alpha,alpha1,a,b,L,u,w,nmax,j,phi;

    > n:=vectdim(x00); x0:=vector(n);v:=vector(n);

    >g:=grad(f(seq(x[i],i=1..n)),[seq(x[i],i=1..n)]);

    > x0:=map(evalf,x00);

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >v:=evalm(-g0);

    > while norm(g0,2)>=epsilon do

    >phi:=t->f(seq(x0[i]+t*v[i],i=1..n));

    > t1:=0.; t2:=1.; y1:=phi(t1); y2:=phi(t2);

    > if y1 while y1>y2 do y1:=y2;t1:=t2;t2:=t2+1;y2:=phi(t2) od;

    > a:=t1-1; b:=t2 fi;

    > alpha:=evalf((5^(1/2)-1)/2);alpha1:=1-alpha;

  • Metode de Optimizare – Curs 14

    17

    > L:=b-a;u:=a+alpha1*L;w:=a+alpha*L;y1:=phi(u);

    >y2:=phi(w);nmax:=ceil(ln(epsilon/(10*L))/ln(alpha));j:=0;

    > while j if y1 y2:=y1;w:=u;u:=a+alpha1*L;y1:=phi(u)

    > else a:=u;L:=b-a;

    > y1:=y2;u:=w;w:=a+alpha*L;y2:=phi(w);

    > fi;

    >j:=j+1

    > od;

    > t:=(a+b)/2;beta:=sum(g0[i]*g0[i],i=1..n);

    > x0:=evalm(x0+t*v);

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >beta:=sum(g0[i]*g0[i],i=1..n)/beta;v:=evalm(-g0+beta*v);

    > od;

    > RETURN(evalm(x0))

    > end;

    > FletcherReeves(f1,vector([0,0]),10^(-4));

    [ ],0.6000128098 -0.2000001602

    > FletcherReeves(f2,vector([1,0]),10^(-4));

    [ ],0.9999779929 0.9999537039

    > FletcherReeves(f2,vector([-1,0]),10^(-4));

    [ ],0.9999957029 0.9999902214

    > FletcherReeves(f2,vector([-0.5,0.2]),10^(-4));

    [ ],0.9999864790 0.9999713199

    > FletcherReeves(f3,vector([0,-1]),10^(-4));

    [ ],0.28487 10-5 -0.0000111958

    > FletcherReeves(f4,vector([0.5,3]),10^(-4));

    [ ],0.29674978 10-6 0.00003805865244

    > FletcherReeves(f4,vector([-0.5,0.2]),10^(-4));

    [ ],-0.633170353 10-5 -0.61905436 10-5

    > FletcherReeves(f6,vector([-1,-1]),10^(-4));

    [ ],-0.08984210733 0.7126526153

    > FletcherReeves(f6,vector([-1,1]),10^(-4));

    [ ],1.703604624 -0.7960833832

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    18

    > FletcherReeves(f6,vector([1,1]),10^(-4));

    [ ],0.08984210733 -0.7126526153

    > FletcherReeves(f2,vector([0,1]),10^(-4));

    [ ],0.9999789174 0.9999564617

    17 iteraţii

    > FletcherReeves(f6,vector([1,-1]),10^(-4));

    [ ],-1.703604624 0.7960833832

    1241 iteraţii

    Implementarea algoritmului Polak-Ribiere (pasul optimal de deplasare este

    obţinut prin metoda secţiunii de aur) :

    > PolakRibiere:=proc(f,x00,epsilon)

    > local x0,i,n,g,g0,g1,v,beta,t1,t2,t,y1,y2,

    >alpha,alpha1,a,b,L,u,w,nmax,j,phi;

  • Metode de Optimizare – Curs 14

    19

    > n:=vectdim(x00); x0:=vector(n);v:=vector(n);

    >g:=grad(f(seq(x[i],i=1..n)),[seq(x[i],i=1..n)]);

    > x0:=map(evalf,x00);

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >v:=evalm(-g0);

    > while norm(g0,2)>=epsilon do

    >phi:=t->f(seq(x0[i]+t*v[i],i=1..n));

    > t1:=0.; t2:=1.; y1:=phi(t1); y2:=phi(t2);

    > if y1 while y1>y2 do y1:=y2;t1:=t2;t2:=t2+1;y2:=phi(t2) od;

    > a:=t1-1; b:=t2 fi;

    > alpha:=evalf((5^(1/2)-1)/2);alpha1:=1-alpha;

    > L:=b-a;u:=a+alpha1*L;w:=a+alpha*L;y1:=phi(u);y2:=phi(w);

    >nmax:=ceil(ln(epsilon/(10*L))/ln(alpha));j:=0;

    > while j if y1 y2:=y1;w:=u;u:=a+alpha1*L;y1:=phi(u)

    > else a:=u;L:=b-a;

    > y1:=y2;u:=w;w:=a+alpha*L;y2:=phi(w);

    > fi;

    >j:=j+1

    > od;

    > t:=(a+b)/2;

    > x0:=evalm(x0+t*v);

    > g1:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >beta:=sum((g1[i]-g0[i])*g1[i],i=1..n)/sum(g0[i]*g0[i],i=1..n);

    >g0:=evalm(g1);v:=evalm(-g0+beta*v);

    > od;

    > RETURN(evalm(x0))

    > end;

    > PolakRibiere(f1,vector([0,0]),10^(-4));

    [ ],0.6000173636 -0.1999812728

    > PolakRibiere(f2,vector([1,0]),10^(-4));

    [ ],0.9999999306 0.9999998742

    > PolakRibiere(f2,vector([-1,0]),10^(-4));

    [ ],0.9999998969 0.9999997969

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    20

    > PolakRibiere(f2,vector([-0.5,0.2]),10^(-4));

    [ ],1.000002020 1.000004631

    > PolakRibiere(f3,vector([0,-1]),10^(-4));

    [ ],-0.916052101 10-6 -0.366547736 10-5

    > PolakRibiere(f4,vector([0.5,3]),10^(-4));

    [ ],-0.1120502499 10-5 -0.00001018277

    > PolakRibiere(f4,vector([-0.5,0.2]),10^(-4));

    [ ],0.832527387 10-5 0.00001060187505

    > PolakRibiere(f6,vector([-1,-1]),10^(-4));

    [ ],-0.08984347334 0.7126526183

    > PolakRibiere(f6,vector([-1,1]),10^(-4));

    [ ],-1.703605085 0.7960854846

    > PolakRibiere(f6,vector([1,1]),10^(-4));

    [ ],0.08984347334 -0.7126526183 > PolakRibiere(f2,vector([0,1]),10^(-4));

    [ ],0.9999999059 0.9999997978

    9 iteraţii

    > PolakRibiere(f6,vector([1,-1]),10^(-4));

    [ ],1.703605085 -0.7960854846

  • Metode de Optimizare – Curs 14

    21

    14 iteraţii

    Pentru a limita acumularea erorilor datorate impreciziei calculului paşilor

    tk, se recomandă reiniţializarea direcţiei vk sub forma vk = -∇f(xk) după fiecare m

    iteraţii, m≥n. Se obţin astfel metodele de gradient conjugat cu reiniţializare

    (restart), caracterizate prin calcularea la pasul 3

    kβ =

    şi alegerea direcţiei de deplasare vk+1:=-∇f(xk+1) + kβ vk.

    Prezentăm în continuare implementarea în MAPLE ale algoritmilor

    Flecher-Revees şi Polak-Ribiere cu reiniţializare (restart) după fiecare n iteraţii (n

    este numărul de variabile de care depinde funcţia obiectiv). Vom opta pentru

    alegerea suboptimală a pasului. Procedurile au drept parametri funcţia obiectiv f,

    punctul iniţial, notat x00, şi precizia ε (criteriul de oprire este ||∇f(xk)|| < ε).

    Procedurile folosesc comenzi din pachetul linalg. Funcţionare procedurilor va fi

    exemplificată pentru aceleaşi funcţii ca procedurile fără restart (FlecherReeves,

    PolakRibiere)

    Implementarea algoritmului Fletcher-Reeves cu restart (pasul suboptimal de

    deplasare este generat prin algoritmul backtracking-Armijo) :

    > FletcherReeves_r:=proc(f,x00,epsilon)

    > local x1,x0,i,n,g,g0,v,beta,z0,tinit,beta_pas,delta,t, k;

    0, dacă k 1

    m

    + întreg

    βk, în caz contrar

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    22

    > n:=vectdim(x00); x0:=vector(n);x1:=vector(n);v:=vector(n);

    >g:=grad(f(seq(x[i],i=1..n)),[seq(x[i],i=1..n)]);

    >beta_pas:=0.5;delta:=0.1;tinit:=1.;

    > x0:=map(evalf,x00);k:=0;

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >v:=evalm(-g0);

    > while norm(g0,2)>=epsilon do

    > z0:=evalf(f(seq(x0[i],i=1..n))); t:=tinit;x1:=evalm(x0+t*v);

    > while f(seq(x1[i],i=1..n))>z0+t*delta*sum(g0[i]*v[i],i=1..n)

    > do t:=t*beta_pas; x1:=evalm(x0+t*v);

    > od;

    > beta:=sum(g0[i]*g0[i],i=1..n);

    > x0:=evalm(x1);k:=k+1;

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >if irem(k+1,n)=0 then beta:=0 else

    >beta:=sum(g0[i]*g0[i],i=1..n)/beta fi;v:=evalm(-g0+beta*v);

    > od;

    > RETURN(evalm(x0))

    > end;

    > FletcherReeves_r(f1,vector([0,0]),10^(-4));

    [ ],0.6000057569 -0.2000119450

    > FletcherReeves_r(f2,vector([1,0]),10^(-4));

    [ ],0.9999311774 0.9998613155

    > FletcherReeves_r(f2,vector([-1,0]),10^(-4));

    [ ],0.9999269533 0.9998499381

    > FletcherReeves_r(f2,vector([-0.5,0.2]),10^(-4));

    [ ],1.000036412 1.000076377

    > FletcherReeves_r(f3,vector([0,-1]),10^(-4));

    [ ],-0.876325710 10-6 -0.00001133598715

    > FletcherReeves_r(f4,vector([0.5,3]),10^(-4));

    [ ],0.44320465 10-5 0.00001173252907

    > FletcherReeves_r(f4,vector([-0.5,0.2]),10^(-4));

    [ ],0.73348991 10-5 0.

    > FletcherReeves_r(f6,vector([-1,-1]),10^(-4));

    [ ],-0.08984022516 0.7126573686

  • Metode de Optimizare – Curs 14

    23

    > FletcherReeves_r(f6,vector([-1,1]),10^(-4));

    [ ],-0.08984151229 0.7126566759

    > FletcherReeves_r(f6,vector([1,1]),10^(-4));

    [ ],0.08984022516 -0.7126573686

    > FletcherReeves_r(f2,vector([0,1]),10^(-4));

    [ ],0.9999125593 0.9998228383

    115 iteraţii

    > FletcherReeves_r(f6,vector([1,-1]),10^(-4));

    [ ],0.08984151229 -0.7126566759

    14 iteraţii

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    24

    Implementarea algoritmului Polak-Ribiere cu restart(pasul suboptimal de

    deplasare este generat prin algoritmul backtracking-Armijo) :

    > PolakRibiere_r:=proc(f,x00,epsilon)

    > local x0,x1,i,n,g,g0,g1,v,beta,z0,tinit,beta_pas,delta,t,k;

    > n:=vectdim(x00); x0:=vector(n);x1:=vector(n);v:=vector(n);

    >g:=grad(f(seq(x[i],i=1..n)),[seq(x[i],i=1..n)]);

    >beta_pas:=0.5;delta:=0.1;tinit:=1.;

    > x0:=map(evalf,x00);k:=0;;

    > g0:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >v:=evalm(-g0);

    > while norm(g0,2)>=epsilon do

    > z0:=evalf(f(seq(x0[i],i=1..n))); t:=tinit;x1:=evalm(x0+t*v);

    > while f(seq(x1[i],i=1..n))>z0+t*delta*sum(g0[i]*v[i],i=1..n)

    > do t:=t*beta_pas; x1:=evalm(x0+t*v);

    > od;

    > x0:=evalm(x1);

    > g1:=vector([seq(subs(seq(x[i]=x0[i],i=1..n), g[j]),j=1..n)]);

    >k:=k+1;

    >if irem(k+1,n)=0 then

    >beta:=sum((g1[i]-g0[i])*g1[i],i=1..n)/sum(g0[i]*g0[i],i=1..n)

    else beta:=0 fi;

    >g0:=evalm(g1);v:=evalm(-g0+beta*v);

    > od;

    > RETURN(evalm(x0))

    > end;

    > PolakRibiere_r(f1,vector([0,0]),10^(-4));

    [ ],0.5999894627 -0.1999927775

    > PolakRibiere_r(f2,vector([1,0]),10^(-4));

    [ ],0.9999408998 0.9998813146

    > PolakRibiere_r(f2,vector([-1,0]),10^(-4));

    [ ],0.9999400952 0.9998796744

    > PolakRibiere_r(f2,vector([-0.5,0.2]),10^(-4));

    [ ],0.9999424538 0.9998810721

    > PolakRibiere_r(f3,vector([0,-1]),10^(-4));

  • Metode de Optimizare – Curs 14

    25

    [ ],-0.274299758 10-5 0.00002535024096

    > PolakRibiere_r(f4,vector([0.5,3]),10^(-4));

    [ ],-0.00001126654842 -0.3144577122 10-7

    > PolakRibiere_r(f4,vector([-0.5,0.2]),10^(-4));

    [ ],0.00001096961757 -0.1101010205 10-9

    > PolakRibiere_r(f6,vector([-1,-1]),10^(-4));

    [ ],-0.08984470254 0.7126608923

    > PolakRibiere_r(f6,vector([-1,1]),10^(-4));

    [ ],0.08984030100 -0.7126516985

    > PolakRibiere_r(f6,vector([1,1]),10^(-4));

    [ ],0.08984470254 -0.7126608923

    > PolakRibiere_r(f2,vector([0,1]),10^(-4));

    [ ],0.9999315557 0.9998621322

    445 iteraţii

    > PolakRibiere_r(f6,vector([1,-1]),10^(-4));

    [ ],-0.08984030100 0.7126516985

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    26

    14 iteraţii

    VII.3.7. Metode cvasi-Newton (Metode de metrică variabilă)

    În cazul metodelor cvasi-Newton (metode de metrică variabilă) direcţia

    de deplasare se alege sub forma

    vk= - Hk∇f(xk)

    unde Hk este o matrice pozitiv definită reprezentând o aproximare a inversei

    hessianei Hf(xk). În cele ce urmează notăm

    sk = xk+1 – xk şi yk = ∇f(xk+1) - ∇f(xk) , k ≥ 0.

    În cazul unei funcţii pătratice strict convexe f:Rn→R, adică a unei funcţii

    de forma f(x) = 1

    2 + cu C∈Mn,n(R) o matrice pozitiv definită şi

    d∈Rn un vector fixat, avem ∇f(x) = Cx + d şi Hf(x) = C pentru orice x ∈ Rn. Ca

    urmare:

    yk = ∇f(xk+1) - ∇f(xk) = C(xk+1 - xk) = Csk, k ≥ 0

    sk = C-1yk, k≥0

    iar C = Hf(xj) pentru orice j. Plecând de la această observaţie se vor căuta Hk,

    aproximaţii a inverselor matricelor Hf(xk), care să îndeplinească următoarele

    condiţii:

  • Metode de Optimizare – Curs 14

    27

    1. si = Hk+1yi pentru orice i, 0≤i≤k (condiţia sk = Hk+1y

    k se numeşte

    condiţia secantei, iar implicaţia „si = Skyi pentru orice i, 0≤i≤k-1 => si

    = Sk+1yi pentru orice i, 0≤i≤k-1” se numeşte proprietatea de ereditate)

    2. Hk pozitiv definită

    Matricele Hk vor fi determinate recursiv:

    Hk+1 = Hk + Dk, k ≥0.

    Algoritmul generic asociat metodelor cvasi-Newton aplicat funcţiilor

    pătratice este schiţat mai jos (se presupune x0 dat şi H0 dat, de exemplu H0 = In )

    k: = 0;

    cât timp ||∇f(xk)|| ≠0 execută

    pasul 1: vk = - Hk∇f(xk)

    pasul 2: *se determină pasul de deplasare tk (optimal) asociat direcţiei

    de deplasare vk;

    pasul 3: xk+1 = xk + tkvk ;

    pasul 4: *se alege Dk astfel încât Hk+1 = Hk + Dk să fie pozitiv definită

    şi în plus, să fie îndeplinite condiţia secantei ( Hk+1yk = sk) şi

    proprietatea de ereditate (Hk+1yi = si pentru orice i , 0≤i≤k-1);

    k: = k+1;

    Lema 39. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 + , cu

    C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat, şi fie x0∈Rn. Fie k

    un număr natural şi fie (xj)j şirul definit prin xj+1 = xj – tjHj∇f(x

    j), 0≤ j≤ k unde

    - Pentru orice 0≤j≤k, matricele Hj sunt pozitiv definite şi îndeplinesc

    condiţia si = Hjyi pentru orice i, 0≤i≤j-1 cu si = xi+1 – xi şi yi = ∇f(xi+1) -

    ∇f(xi)

    - tj este pasul optimal asociat direcţiei vj = - Hj∇f(x

    j).

    Atunci vectorii s0, s1, ..., sk sunt conjugaţi în raport cu C doi câte doi.

    Demonstraţie. Observăm că pentru orice k ≥0

    sk = xk+1 – xk = tkvk = -tkHk∇f(x

    k)

    iar din faptul că ∇f(x) = Cx+d deducem că

    yk = ∇f(xk+1) - ∇f(xk) = Csk = tkCvk = -tkCHk∇f(x

    k).

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    28

    Vom face demonstraţia prin inducţie după k. Pentru k = 1, obţinem

    = -t0 = -t0 = -t0

    = -t0 = = +

    = + t0 + ,

    şi ţinând cont că t0 = ( )0 0

    0 0

    f x , v

    Cv , v

    < ∇ >−

    < >=

    0 0 0

    0 0 0 0

    Cx , v d, v

    Cv , v Cv , v

    < > < >− −

    < > < > (conform,

    lemei 35) rezultă că = 0.

    Presupunem afirmaţia adevărată pentru k şi o demonstrăm pentru k+1.

    Avem

    = -tk+1 = -tk+1 =

    = -tk+1 = -tk+1 (39. 1)

    Din ipoteza de inducţie rezultă că s0, s1, ..., sk sunt conjugaţi în raport cu C doi

    câte doi, şi aplicând lema 37 rezultă că = 0 pentru orice i∈{0,1,

    ...,k}. Mai departe din (39.1) obţinem

    = -tk+1 = 0.

    În consecinţă, s0, s1, ..., sk+1 sunt conjugaţi în raport cu C doi câte doi.

    În condiţiile lemei 39 dacă la un moment dat sk = 0 (k < n) atunci de fapt

    vk = 0 sau echivalent ∇f(xk) = 0. Aşadar xk este punctul de minim al lui f (fiind

    punct staţionar al funcţiei convexe f). Dacă s0, s1, ..., sn-1 sunt toţi nenuli, atunci

    fiind conjugaţi în raport cu C doi câte doi, rezultă că s0, s1, ..., sn-1 sunt liniar

    independenţi. Atunci ţinând cont de faptul că si = Hnyi şi că yi = Csi, de unde si

    =HnCsi pentru orice i=0..n-1, rezultă că Hn = C

    -1. Deci vn = -Hn∇f(xn) = -C-1∇f(xn).

    Atunci pasul optimal tn asociat direcţiei (Newton) vn = -C-1∇f(xn) este tn = 1. Ca

    urmare

    xn+1 = xn - tnHn∇f(xn) = xn-C-1(Cxn+d) = -C-1d,

    Aşadar xn+1 este punctul de minim al lui f (fiind punct staţionar al funcţiei

    convexe f). Deci minimul lui f este determinat în urma a cel mult n+1 iteraţii.

    Aşa cum precizat matricele Hk se determină recursiv:

    Hk+1 = Hk + Dk, k ≥0.

  • Metode de Optimizare – Curs 14

    29

    Prezentăm în continuare trei metode de alegere a matricei Dk. Formula de corecţie

    de ordinul I presupune utilizarea pe post de Dk a unei matrice de rang 1. Mai

    precis, căutăm Dk de forma Dk = akzk ( )

    tkz , unde ak ∈R, ak≠0 şi zk ∈Rn.

    Determinăm ak şi zk astfel încât să fie îndeplinită condiţia secantei. Din condiţia

    secantei rezultă

    (Hk + Dk)yk = sk

    Hkyk + ak z

    k ( )tkz yk = sk

    Înmulţind la stânga cu ( )tky , obţinem

    ( )tky Hky

    k + ak ( )tky zk ( )

    tkz yk = ( )tky sk

    + ak ()2 =

    ak =

    ( )

    k k kk

    2k k

    y ,s H y

    y , z

    < − >

    < >

    Revenind la condiţia secantei Hkyk + ak z

    k ( )tkz yk = sk, obţinem

    zk = k

    1

    a k k1

    z , y< >(sk - Hky

    k)

    de unde,

    Dk = akzk ( )

    tkz = ak 2k

    1

    a ( )2k k

    1

    z , y< >(sk - Hky

    k) (sk - Hkyk)t

    = k

    1

    a ( )2k k

    1

    z , y< >(sk - Hky

    k) (sk - Hkyk)t

    = ( )

    2k k

    k k kk

    y , z

    y ,s H y

    < >

    < − > ( )2k k

    1

    z , y< >(sk - Hky

    k) (sk - Hkyk)t

    = ( ) ( )

    tk k k kk k

    k k kk

    s H y s H y

    y ,s H y

    − −

    < − >

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    30

    Arătăm prin inducţie după k că dacă funcţia f este pătratică (f(x) = 1

    2 +

    , cu C simetrică), H0 este simetrică şi dacă avem

    Dk = ( ) ( )

    tk k k kk k

    k k kk

    s H y s H y

    y ,s H y

    − −

    < − >,

    atunci este îndeplinită condiţia Hk+1yi = si pentru orice 0≤i≤k (Hk+1 = Hk + Dk).

    Pentru orice k condiţia este îndeplinită pentru i = k din construcţia lui Dk (chiar

    dacă funcţia f nu este pătratică). Ca urmare pentru k = 0 afirmaţia este adevărată.

    Presupunem afirmaţia adevărată pentru k şi o demonstrăm pentru k +1. Pentru

    orice i, 0 ≤ i ≤ k, avem

    Hk+2 yi = (Hk+1 + Dk+1) y

    i

    = Hk+1yi +

    ( )( )tk 1 k 1 k 1 k 1

    k 1 k 1

    k 1 k 1 k 1k 1

    s H y s H y

    y ,s H y

    + + + ++ +

    + + ++

    − −

    < − >yi

    = si +( )k 1 k 1k 1k 1 k 1 i

    k 1 k 1 k 1 k 1k 1

    s H ys H y , y

    y ,s H y

    + +++ +

    + + + ++

    −< − >

    < − >

    = si + ( )( )k 1 k 1k 1k 1 i k 1 i

    k 1 k 1 k 1 k 1k 1

    s H ys , y H y , y

    y ,s H y

    + +++ +

    + + + ++

    −< > − < >

    < − >

    = si + ( )( )k 1 k 1k 1k 1 i k 1 i

    k 1 k 1 k 1 k 1k 1

    s H ys , y y , H y

    y ,s H y

    + +++ +

    + + + ++

    −< > − < >

    < − >

    = si + ( )( )k 1 k 1k 1k 1 i k 1 ik 1 k 1 k 1

    k 1

    s H ys , y y , s

    y ,s H y

    + +++ +

    + + ++

    −< > − < >

    < − >

    = si + ( )( )k 1 k 1k 1k 1 i k 1 ik 1 k 1 k 1

    k 1

    s H ys , Cs Cs , s

    y ,s H y

    + +++ +

    + + ++

    −< > − < >

    < − >

    = si + ( )( )k 1 k 1k 1k 1 i k 1 ik 1 k 1 k 1

    k 1

    s H yCs , s Cs , s

    y ,s H y

    + +++ +

    + + ++

    −< > − < >

    < − >

    = si.

    Actualizarea matricei Hk sub forma

  • Metode de Optimizare – Curs 14

    31

    Hk+1 = Hk + Dk cu Dk = ( ) ( )

    tk k k kk k

    k k kk

    s H y s H y

    y ,s H y

    − −

    < − >

    Poartă denumirea de formula de corecţie de rang 1. Dacă numitorul nu este pozitiv, atunci pozitiv definirea matricei Hk+1 nu este garantată.

    Formula de corecţie de rang 2 Davidon-Fletcher–Powell (formula DFP)

    presupune Hk sub forma Hk+1 = Hk + Dk cu

    Dk = ( )

    tk k

    k k

    s s

    s , y< >-

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >

    Arătăm că în cazul acestei formule dacă Hk este pozitiv definită şi

    > 0, atunci Hk+1 = Hk + Dk este pozitiv definită.

    Lema 40. Fie Hk o matrice pozitiv definită şi sk yk∈Rn astfel încât

    > 0. Atunci Hk+1 = Hk + Dk este pozitiv definită, unde

    Dk = ( )

    tk k

    k k

    s s

    s , y< >-

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >

    În plus, Hk+1yk = sk.

    Demonstraţie. Să observăm mai întâi că dacă z ∈Rn este un vector nenul,

    atunci matricea In -tzz

    z, z< >este pozitiv semidefinită. Într-adevăr este simetrică şi

    pentru orice v∈Rn avem

    v> = - v> = -

    t tv zz v

    z, z< > =

    = - ( )

    2tz v

    z, z< > =

    ( )2z, z v, v z, vz, z

    < >< > − < >

    < >≥0

    Dacă H este matrice pozitiv definită şi dacă y ∈Rn este un vector nenul, atunci

    H - tHyy H

    y,Hy< > =

    1

    2H

    1 1t2 2

    nH yy H

    Iy,Hy

    − < >

    1

    2H

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    32

    este pozitiv semidefinită, deoarece

    1 1t2 2

    nH yy H

    Iy,Hy

    − < >

    = In -tzz

    z, z< > cu z =

    1

    2H y.

    În plus, y este vector propriu asociat matricei H = H - tHyy H

    y,Hy< > asociat valorii

    proprii λ = 0, iar dimensiunea subspaţiului corespunzător este 1. Atunci pentru

    orice θ > 0 şi orice s cu proprietatea că ≠ 0, rezultă că H +θsst este pozitiv

    definită. Înlocuind H prin Hk, y prin yk, s prin sk şi θ prin

    k k

    1

    s , y< > se obţine că

    Hk -( )

    tk kk k

    k kk

    H y y H

    y , H y< > +

    ( )tk k

    k k

    s s

    s , y< > este pozitiv definită.

    Avem

    Hk+1yk = (Hk + Dk)y

    k = (Hk + ( )

    tk k

    k k

    s s

    s , y< >-

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >)yk

    =Hkyk +

    ( )

    ( )

    tk k k

    tk k

    s s y

    s y-

    ( )

    ( )

    tk k kk k

    tk kk

    H y y H y

    y H y

    =Hkyk + sk – Hky

    k = sk

    Lema 41. Fie f:Rn→R o funcţie definită prin f(x) = 1

    2 + , cu

    C∈Mn,n(R) o matrice pozitiv definită şi d∈Rn un vector fixat, şi fie x0∈Rn. Fie

    (xk)k şirul definit prin xk+1 = xk - tkHk∇f(x

    k), unde

    - şirul de matrice (Hk)k este definit prin H0 = In şi Hk+1 = Hk + Dk, cu

    Dk = ( )

    tk k

    k k

    s s

    s , y< >-

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >, sk = xk+1 – xk şi yk = ∇f(xk+1) - ∇f(xk)

    - tk este pasul optimal asociat direcţiei vk = - Hk∇f(x

    k).

    Atunci pentru orice k≥0, si = Hk+1yi pentru orice i ∈{0, 1, …,k}.

    Demonstraţie. Observăm că pentru orice k

  • Metode de Optimizare – Curs 14

    33

    sk = xk+1 – xk = tkvk = -tkHk∇f(x

    k)

    iar din faptul că ∇f(x) = Cx+d deducem că

    yk = ∇f(xk+1) - ∇f(xk) = Csk = tkCvk = -tkCHk∇f(x

    k).

    Ca urmare = > 0 pentru orice sk ≠ 0. Deci conform lemei 40,

    matricele Hk sunt pozitiv definite pentru orice k cu sk ≠ 0 (evident dacă sk = 0,

    atunci şi yk = 0; mai mult, în acest caz si=yi =0 pentru orice i ≥ k) .

    Vom face demonstraţia prin inducţie după k. Pentru k = 0, obţinem

    s0=H1y0, egalitate adevărată conform lemei 40. Presupunem că pentru orice 1≤j ≤k

    si = Hjyi pentru orice i ∈{0, 1, …,j-1}

    şi demonstrăm că

    si = Hk+1yi pentru orice i ∈{0, 1, …,k}.

    Conform lemei 39 vectorii s0, s1, ..., sk sunt conjugaţi în raport cu C doi câte doi.

    Deoarece pentru orice i∈{0,1, ..., k-1}

    = = 0,

    = = 0,

    obţinem

    Hk+1yi = (Hk + Dk)y

    i = (Hk + ( )

    tk k

    k k

    s s

    s , y< >-

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >)yi

    = Hkyi +

    ( )tk k

    k k

    s s

    s , y< >yi -

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >yi

    k is ,y 0< >=

    = Hkyi -

    ( )tk k

    k k

    k kk

    H y y H

    y , H y< >yi

    i iH y sk =

    = si -( )

    tk k ik

    k kk

    H y y s

    y , H y< >

    k iy ,s 0< >=

    = si.

    Faptul că Hk+1yk = sk rezultă din lema 40.

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    34

    Ca o consecinţă a lemei 41 (şi lemei 39) rezultă că pentru o funcţie

    pătratică f strict convexă algoritmul Davidon-Fletcher–Powell ( DFP) converge la

    punctul de minim al lui f după cel mult n+1 iteraţii. Convergenţa algoritmului

    pentru clase de funcţii mai generale este o problemă deschisă.

    Până acum am optat pentru aproximarea a inversei hessianei Hf(xk) cu o

    matrice pozitiv definită Hk verificând condiţiile Hkyi = si pentru orice i ∈{0, 1, ...,

    k-1} unde

    si = xi+1 – xi şi yi = ∇f(xi+1) - ∇f(xi) , i ≥ 0.

    Similar putem opta pentru aproximarea hessianei Hf(xk) cu o matrice

    pozitiv definită Bk verificând condiţiile (Bk)-1yi = si (sau echivalent, Bks

    i = yi)

    pentru orice i ∈{0, 1, ..., k-1}. Se observă că în relaţiile Bksi = yi faţă de relaţiile

    Hkyi = si se schimbă rolul lui si cu yi. Schimbând în formula de corecţie de rang 2

    Davidon-Fletcher–Powell (formula DFP) rolul lui sk cu yk se obţine formula de

    corecţie de rang 2 Broyden-Fletcher–Goldfarb-Shanno (formula BFGS)

    Bk+1 = Bk + ( )

    tk k

    k k

    y y

    y ,s< >-

    ( )tk k

    k k

    k kk

    B s s B

    s ,B s< >

    Similar cu lema 40, dacă sk yk∈Rn astfel încât > 0, atunci

    Bk+1 = Bk + ( )

    tk k

    k k

    y y

    y ,s< >-

    ( )tk k

    k k

    k kk

    B s s B

    s ,B s< >

    este pozitiv definită. În plus, Bk+1sk = yk. Dacă se folosesc actualizarea matricei Bk

    atunci direcţia de deplasare se calculează că vk = - (Bk)-1∇f(xk). Pentru a inversa

    matricea Bk putem recurge la aşa numita formulă Sherman-Morrison: pentru o

    matrice inversabilă A∈Mn,n(R) şi doi vectori u, v∈Rn cu proprietatea că 1 +

    ≠0, matricea A + uvt este inversabilă şi

    (A+uvt)-1 = A-1 - 1 t 1

    t 1

    A uv A

    1 v A u

    − −

    −+.

    Notăm (Bk)-1 = Hk şi aplicând formula Sherman-Morrison obţinem

  • Metode de Optimizare – Curs 14

    35

    ( )1tk k

    k k k

    y yB

    y ,s

    + < >

    = Hk -( )

    tk kk k

    k k k kk

    H y y H

    y ,s y , H y< > + < >

    Aplicând încă o dată formula Sherman-Morrison obţinem

    Hk+1 = (Bk+1)-1

    = Hk -( )

    tk kk

    k k

    y H y1

    y ,s

    + < >

    ( )tk k

    k k

    s s

    y ,s< >-

    ( ) ( )t tk k k k

    k k

    k k

    H y s s y H

    y ,s

    +

    < >

    sau echivalent

    Hk+1 = Hk + Dk cu

    Dk = ( ) ( ) ( )

    t t tk k k k k kk k k

    k k

    s s H y s s y H

    y ,s

    τ − −

    < >

    τk = ( )

    tk kk

    k k

    y H y1

    y ,s+

    < >.

    Dacă Hk este matrice pozitiv definită şi dacă > 0, atunci Hk+1 = Hk

    + Dk este pozitiv definită. În plus, Hk+1yk = sk. Condiţia > 0 este

    echivalentă cu > sau, deoarece sk = tkvk (tk pasul de

    deplasare iar vk direcţia de deplasare) ,

    > .

    Această inegalitate este adevărată dacă pasul tk satisface condiţia Wolfe (17b).

    Convergenţa algoritmului Broyden-Fletcher–Goldfarb-Shanno (BFGS) a

    fost demonstrată de Powell în 1976.

    Algoritmul Broyden-Fletcher–Goldfarb-Shanno (BFGS) (x0 dat)

    k: = 0;

    H0 := In;

  • Mădălina Roxana Buneci Metode de Optimizare – Curs - 2007

    36

    cât timp ||∇f(xk)|| ≠0 execută

    pasul 1: vk = - Hk∇f(xk)

    pasul 2: *se determină pasul de deplasare tk suboptimal îndeplinind

    condiţiile Wolfe (tk asociat direcţiei de deplasare vk)

    pasul 3: xk+1 : = xk + tkvk ;

    pasul 4: sk: = xk+1 – xk; yk : = ∇f(xk+1) - ∇f(xk);

    τk := ( )

    tk kk

    k k

    y H y1

    y ,s+

    < >.

    Dk := ( ) ( ) ( )

    t t tk k k k k kk k k

    k k

    s s H y s s y H

    y ,s

    τ − −

    < >

    Hk+1 : = Hk + Dk;

    k: = k+1;