Sunteți pe pagina 1din 8

L10.

Metode de căutare pentru rezolvarea problemelor de


optimizare fără restricţii - II
Metoda Newton_Raphson, Marquardt, Metode cvasi-Newton: DFP, BFGS

1. Metoda Newton-Raphson
În cazul metodei Newton-Raphson relația de recurență este:
x k 1  x k - H k 1f ( x k ) , (1)

unde x k reprezintă punctul stabilit în cadrul iteraţiei k, x k 1 este punctul care se calculează la
noua iteraţie k  1 și -H k 1f ( x k ) este direcția de deplasare ( H k fiind matricea Hessian în
punctul x k ).
Observații:
 În cazul funcţiilor pătratice, din orice punct s-ar porni, se ajunge în punctul de minim
dintr-un singur pas (dacă, evident, funcția este convexă). În cazul altor funcţii obiectiv minimul
nu este atins dintr-un singur pas, însă convergenţa este rapidă – convergență pătratică.
 În cazul funcțiilor obiectiv oarecare, metoda poate fi divergentă sau poate converge
spre un punct șa sau un punct de minim relativ (convergenţa nu este asigurată decât în cazurile în
care H ( x k )  0 , iar aceasta se întâmplă în general în apropierea punctului de minim). Acest
dezavantaj poate fi eliminat prin deplasarea cu pas optim pe direcția -H k 1f ( x k ) , relația de
recurență devenind:
x k 1  x k - *k H k 1f ( x k ) (2)
Punctul de minim este găsit într-un număr mai mic de pași decât în cazul metodei
originale și metoda este convergentă.
 Metoda pare a fi cea mai puternică metodă de minimizare a funcțiilor fără restricții,
dar nu este foarte folositoare în practică deoarece:
 necesită memorarea unei matrice n  n la fiecare iterație;
 există situații când elementele matricei hessian nu se pot calcula;
 necesită calcularea inversei matricei hessian la fiecare pas;
 necesită evaluarea produsului H k 1f ( x k ) la fiecare pas.
Astfel, în cazul funcțiilor obiectiv cu număr foarte mare de variabile, metoda Newton-
Raphson este impracticabilă.

Exemplul 1. Să se stabilească prin metoda Newton-Raphson punctul de minim pentru


funcţia f ( x )  x1  x2  2 x12  2 x1 x2  x22 . Punctul de start este x 0   0 0 .
T

 4 x  2 x2  1 4 2
Gradientul funcției este f ( x )   1  , iar matricea hessian H   .
 2 x1  2 x2  1 2 2
 1 / 2 1 / 2  1
Se calculează H 1    . Gradientul în punctul x 0 este f ( x 0 )    .
 1 / 2 1   1
Punctul următor va fi:
 0   1 / 2 1 / 2   1   1 
x1  x 0  H 1f ( x 0 )       .
 0   1 / 2 1   1 3 / 2 

0
Deoarece f ( x1 )     minimul se atinge într-un pas.
0
Exemplul 2. Să se studieze convergența metodei Newton-Raphson pentru funcţia
1
f ( x)   .
x12  x22  1
Se observă că x*  0 și f ( x*)  1. Gradientul și matricea Hessian ale funcției sunt:

 x1 
 ( x 2  x 2  1) 2   3 x12  x22  1 4 x1 x2 
2
f ( x )  2   , H ( x) 
1 2
  (e1)
 x2  ( x12  x22  1)3  4 x1 x2 x12  3x22  1
 2 2 2
 ( x1  x2  1) 

Considerăm un punct de start x 0 apropiat de x * , de exemplu: x10  1 , x20  1 .


Gradientul și matricea Hessian ale funcției în x 0 pot fi aproximate cu:
 2 x0  2 0
f ( x 0 )   1  , H ( x 0 )   .
0
 2 x2  0 2

Punctul următor va fi:


 x 0  1 / 2 0   2 x10   0 
x1  x 0  H ( x 0 ) 1 f ( x 0 )   1          x*
 x20   0 1 / 2   2 x20   0 

și se observă că metoda converge.


Să considerăm un punct de start depărtat de x* , spre exemplu x10  1 , x20  0 .
Gradientul și matricea Hessian ale funcției în x 0 pot fi aproximate cu:

 2 / ( x10 )3   6 / ( x10 ) 4 0 
f ( x 0 )   0
 , H(x )   .
 0   0 2 / ( x10 )4 

Punctul următor va fi:


 x 0   ( x 0 ) 4 / 6 0   2 / ( x10 )3   4 x10 / 3
x1   1    1   .
0
 x2   0 ( x10 )4 / 2   0   0 

Se observă că prima componentă a vectorului x1 crește, ceea ce ne arată că


procedura este divergentă.
Pentru a stabili domeniul de convergență căutăm punctele pentru care matricea
Hessian dată de (e1) este pozitiv definită.
a )  3 x12  x22  1  0
H ( x)  0  
2 2 2 2 2 2
b) (3 x1  x2  1)( x1  3x2  1)  16 x1 x2  0

Din b) se obține 3( x12  x22 ) 2  2( x12  x22 )  1  0 

1
0  x12  x22  . (e2)
3
Din a) rezultă 3( x12  x22 )  4 x22  1  0 . Această condiție este satisfăcută de toate
punctele ce satisfac (e2).
Domeniul de convergență este interiorul cercului definit de (e2). Dacă punctul de
start este în interiorul acestui cerc, procedura este convergentă. În caz contrar procedura
este divergentă.
2. Metoda Marquardt
Metoda Marquardt combină avantajele metodei gradientului optimal (convergență sigură
și scăderea rapidă a valorii funcției când punctul de start este departe de punctul de minim) și ale
metodei Newton-Raphson (convergență rapidă dacă punctul de start se află în apropierea
punctului de minim).
Principiul metodei constă în modificarea elementelor diagonale ale matricei Hessian
astfel încât:
H k  H k   k I , (3)

unde  k este o constantă pozitivă ce asigură pozitivitatea matricei H k .


4
Pentru  k suficient de mare (de ordinul 10 ) se poate scrie:
1
H k 1   H k   k I     k I  
1 1
I. (4)
k
Relația de recurență este

x k 1  x k - H k 1f ( x k )  x k -  H k   k I  f ( x k ) ,
1
(5)
1
unde -  H k   k I  f ( x k ) este direcția de deplasare.
Pentru valori mari ale lui  k direcția de căutare este cea din metoda gradientului optimal.
Valoarea lui  k se va reduce de la o valoare mare la zero pe măsură ce evoluează procesul de
căutare; astfel, metoda se schimbă pe parcursul căutării de la cea a celei mai abrupte coborâri la
o metodă de tip Newton-Raphson.
Algoritm – Metoda Marquardt
4
1. Se alege un punct iniţial x 0 şi constantele  0 (de ordinul 10 ), c1 ( 0  c1  1 ), c2
( c2  1 ) și  ; k  0 .
2. Se calculează f ( x k ) .
3. Se testează condiția de stop: dacă || f ( x k ) ||  , STOP - x k este punctul de minim;
altfel se trece la pasul 4.
1
4. Se calculează noul punct cu relația x k 1  x k -  H k   k I  f ( x k ) .
5. Dacă f ( x k 1 )  f ( x k ) , se merge la 6; altfel, se merge la 7.
6.  k 1  c1 k , k  k  1 ; se merge la 2.
7.  k 1  c2  k ; se merge la 4.

Observație. Algoritmul poate fi modificat introducând și pasul optim (care se obține printr-o
metodă de extremizare unidimensională) pe direcția de căutare, relația de recurență devenind:
1
x k 1  x k - *k  H k   k I  f ( x k ) (6)

Exemplul 3. Să se minimizeze funcția f ( x )  x1  x2  2 x12  2 x1 x2  x22 folosind metoda


Marquardt, cu x 0   0 0 ,  0  104 , c1  1 / 4 , c2  2 ,   102 .
T

Valoarea funcției în punctul de start este f ( x 0 )  0 . Gradientul funcției este


 4 x  2 x2  1 4 2
f ( x )   1  , iar matricea hessian H   2 2  .
2
 1 x  2 x2  1  
1
Iterația 1. k  0 . f ( x 0 )    ; || f ( x 0 ) || 1.4142    se continuă algoritmul.
 1
Punctul următor va fi:
1
0   4  10   1   0.9998 4
4
1 0 1 0 2
x  x  ( H   0 I ) f ( x )          10 .
0   2 2  10   1  1.0000 
4

f ( x1 )  1.9997  104  f ( x 0 )  1  c1 0  2500 .

 0.9998 
 ; || f ( x ) || 1.4142    se continuă algoritmul.
1
Iterația 2. k  1 . f ( x1 )  
 1.0000 
1
 0.9998  4  2504 2   0.9998   4.9958  4
x 2  x1  ( H  1 I ) 1 f ( x1 )    10   2   1.0000    5.0000  10
 1.0000   2502     

f ( x 2 )  0.9993  103  f ( x1 )   2  c11  625


......
Se continuă algoritmul până la îndeplinirea unei condiții de stop.

3. Metode cvasi-Newton
Ideea care stă la baza metodelor cvasi-Newton constă în aproximarea matricei Hessian
sau a inversei acesteia utilizând doar derivatele de ordinul I ale funcției f, asigurându-se în
același timp și pozitivitatea acestor aproximaţii.
În cazul în care Bk este aproximarea la iterația k pentru inversa H k1 , formula de căutare
a punctului de minim devine:
x k 1  x k  k Bk r k , r k  f ( x k ) (7)

unde k este pasul optim pe direcția hk = -Bk r k .


În continuare vor fi prezentate două metode cvasi-Newton: Davidon-Fletcher-Powell
(DFP) și Broyden, Fletcher, Goldfarb, Shanno (BFGS).
Algoritmul DFP
1. Se alege un punct iniţial x 0 şi B0  0 simetrică (se recomandă B0  I ); k  0 .
2. Se calculează r k și pasul optim *k pe direcția hk = -Bk r k și apoi punctul următor cu
x k 1  x k  *k hk .
3. Dacă criteriul de stop este satisfăcut, STOP; dacă nu se trece la 4.
4. Se actualizează Bk cu Bk 1 =Bk +M k +N k unde
T
hk hk ( Bk y k )( Bk y k )T
M k  *k , Nk   , y k = r k +1 - r k , hk   Bk r k
kT k kT k
h y y Bk y
5. Se incrementează k; se merge la 2.

Observații:
 Matricea Bk 1 va rămâne pozitiv definită doar dacă pasul optim este determinat cu
precizie; în caz contrar:
- se calculează o valoare mai bună a pasului optim prin utilizarea unui număr mai
mare de ajustări în cadrul procedurii de extremizare unidimensională (până cînd
hkT r k devine suficient de mic);
- se specifică un număr de ajustări în metoda de extremizare unidimensională și se
sare peste actualizarea Bk dacă pasul nu poate fi determinat cu acuratețe;
- se continuă actualizarea matricei Bk cu valoarea aproximativă a pasului optim, dar
se reinițializează procedura după un număr de iterații
 Metoda DFP este o metodă de gradienți conjugați în cazul funcțiilor obiectiv pătratice.

Exemplul 4. Să se minimizeze funcția f ( x )  x1  x2  2 x12  2 x1 x2  x22 , plecând de la


punctul de start x 0   0 0 , folosind metoda DFP, cu precizia   102 .
T

Valoarea funcției în punctul de start este f ( x 0 )  0 . Gradientul funcției este


 4 x  2 x2  1
f ( x )   1 .
 2 x1  2 x2  1
1 0  1
Iterația 1. k  0 . B0    , r 0  f ( x 0 )    ; || r 0 || 1.4142    se continuă
0 1   1
algoritmul. Direcția de căutare este:
1 0   1   1
h0 = -B0 r 0        .
 0 1   1  1 
Pentru a găsi pasul optim pe direcția h0 , minimizăm funcția:
 0  1 
f ( x1 )  f ( x 0  0 h0 )  f     0     f ( 0 , 0 )  02  20  *0  1 .
 0  1 

0  1  1


Punctul următor va fi: x1  x 0  *0 h0     1       . Gradientul în x1 este
0 1 1

 1
r 1  f ( x1 )    ; se verifică criteriul de stop: || r1 || 1.4142    se continuă
 1
algoritmul.
Iterația 2. k  1 . Se actualizează matricea B cu: B1 =B0 +M 0 +N 0 , unde
T
h0 h0 ( B0 y 0 )( B0 y 0 )T
M 0  0 T
, N0   T
h0 y 0 y 0 B0 y 0

 1  1   2 
și y 0 = r1 - r 0          .
 1  1  0 
 1
 1   1 1
 1 / 2 1 / 2
Deci M 0  1    ,
 2   1 / 2 1 / 2 
 1 1  
0

T
 1 0   2   1 0   2  
       
 0 1   0   0 1   0    1 0 
N0     .
 1 0 
 
2  0 0 
 2 0    
0 1  0 
Se poate calcula acum:
1 0   1 / 2 1 / 2   1 0   1 / 2 1 / 2 
B1     .
 0 1   1 / 2 1 / 2   0 0   1 / 2 3 / 2 
Noua direcție de căutare va fi:
 1 / 2 1 / 2   1 0 
h1 = -B1r1         .
 1 / 2 3 / 2   1 1 
Pentru a găsi pasul optim pe direcția h1 , minimizăm funcția:
  1 0  
f ( x 2 )  f ( x1  1h1 )  f     1     f ( 1,1  1 )  12  1  1  1*  1 / 2 .
 1 1  
Punctul următor va fi:
 1 1  0   1 
x 2  x1  1*h1         .
 1  2 1   3 / 2 

0
Deoarece r 2     x 2 este punctul de minim.
0
S-a ajuns la punctul de minim în n  2 pași (deoarece funcția este pătratică).

În cazul metodei BFGS, se actualizează matricea hessian, nu inversa acesteia.


Algoritmul BFGS
1. Se alege un punct iniţial x 0 şi B0  0 simetrică (se recomandă B0  I ); k  0 .
2. Se calculează r k și pasul optim *k pe direcția hk = -Bk r k și apoi punctul următor cu
x k 1  x k  *k hk .
3. Dacă criteriul de stop este satisfăcut, STOP; dacă nu se trece la 4.
4. Se actualizează Bk cu
 T
y k Bk y k  p k p kT pk y kT B Bk y k p k
T

Bk 1 =Bk  1    k

 T
pk y k  pkT y k T
pk y k
T
pk y k
 

unde p k = x k +1 - x k  k *hk , y k = r k +1 - r k
5. Se incrementează k; se merge la 2.

Observații:
 Dacă pasul optim este determinat cu exactitate, matricea Bk rămâne pozitiv definită.
Totuși, în aplicațiile practice, matricea Bk poate fi nedefinită sau chiar singulară dacă pasul nu
este determinat cu exactitate. În acest caz se reinițializează periodic matricea cu matricea unitate.
 Algoritmul BFGS este mai puțin sensibil decât algoritmul DFP la erorile în
determinarea pasului optim.
 Convergența este supraliniară în apropierea punctului de minim.

Exemplul 5. Să se minimizeze funcția f ( x )  x1  x2  2 x12  2 x1 x2  x22 plecând de la


punctul de start x 0   0 0 folosind metoda BFGS, cu precizia   102 .
T

Valoarea funcției în punctul de start este f ( x 0 )  0 . Gradientul funcției este


 4 x  2 x2  1
f ( x )   1 .
 2 x1  2 x2  1
1 0  1
Iterația 1. k  0 . B0    , r 0  f ( x 0 )    ; || r 0 || 1.4142    se
0 1   1
continuă algoritmul. Direcția de căutare este:
1 0   1   1
h0 = -B0 r 0        .
 0 1   1  1 
Pentru a găsi pasul optim pe direcția h0 , minimizăm funcția:
 0  1 
f ( x1 )  f ( x 0  0 h0 )  f     0     f ( 0 , 0 )  02  20  *0  1 .
 0  1 
Punctul următor va fi:
0   1  1
x1  x 0  *0 h0     1       .
0  1 1

 1
r 1  f ( x1 )    ; se verifică criteriul de stop: || r1 || 1.4142    se continuă
 1
algoritmul.
Iterația 2. k  1 . Se actualizează matricea B cu
 y 0 B0 y 0  p0 p 0
T T T
p 0 y 0 B0 B0 y 0 p0
T

B1 =B0  1    ,
 p 0 y 0  p0 y 0
T T T
p0 y 0
T
p0 y 0

 1  0   1  1  1   2 


unde p 0 = x1 - x 0          , y 0 = r 1 - r 0          .
 1  0  1   1  1  0 

 1 0   2    1  1 1 0 
  2 0    0    1   1 1  1   2 0  0 1 
 1 0    0 1     
B1 =    1     
 0 1   2    2   2 
  1 1     1 1    1 1  
 0  0 0
 1 0   2 
 0 1   0   1 1
 1 / 2 1 / 2
    
 2   1 / 2 5 / 2 
 1 1  
0
Noua direcție de căutare va fi:
 1 / 2 1 / 2   1  0 
h1 = -B1r1        
 1 / 2 5 / 2   1  2 
Pentru a găsi pasul optim pe direcția h1 , minimizăm funcția:
  1 0 
f ( x 2 )  f ( x1  1h1 )  f     1     f (1,1  21 )  412  21  1  1*  1 / 4 .
 1   2 
Punctul următor va fi:
 1 1  0   1 
x 2  x1  1*h1         .
 1  4  2  3 / 2 

0
Deoarece r 2     x 2 este punctul de minim.
0
S- ajuns la punctul de minim în n  2 pași (deoarece funcția este pătratică).

Teme de laborator
Să se realizeze programe în Matlab care să găsească punctul de minim al unei funcții de
2 variabile prin metodele Marquardt, DFP, BFGS.
Să se generalizeze programele pentru funcții de n variabile.

S-ar putea să vă placă și