Algoritmul Broyden-Fletcher-Goldfarb-Shanno (BFGS) este o metodă de optimizare numerică iterativă concepută pentru a găsi maximul/minimul local al unei funcționale neliniare fără restricții.
BFGS este una dintre cele mai utilizate metode cvasi-newtoniene . În metodele cvasi-newtoniene, Hessianul funcției nu este calculat direct . În schimb, Hessianul este estimat aproximativ, pe baza demersurilor întreprinse până acum. Există, de asemenea, o modificare limitată de memorie a acestei metode ( L-BFGS ), care este concepută pentru a rezolva probleme neliniare cu un număr mare de necunoscute, precum și o modificare limitată de memorie într-un cub multidimensional ( L-BFGS-B ) .
Această metodă găsește minimul oricărei funcții convexe diferențiabile de două ori continuu. În ciuda acestor limitări teoretice, experiența a arătat că BFGS gestionează bine și funcțiile neconvexe.
Să fie rezolvată sarcina de optimizare a funcționalului:
Metodele de ordinul doi rezolvă această problemă în mod iterativ, prin extinderea funcției într-un polinom de gradul doi:
unde este Hessianul funcționalului în punctul . Adesea, calculul Hessianului este laborios, astfel încât algoritmul BFGS în loc de valoarea reală calculează valoarea aproximativă a lui , după care găsește minimul problemei pătratice obținute:
De regulă, după aceasta, se efectuează o căutare pe o direcție dată pentru un punct pentru care sunt îndeplinite condițiile Wolfe .
Orice matrice nedegenerată, bine condiționată poate fi luată ca aproximare inițială a Hessianului. Adesea este luată matricea de identitate . Valoarea aproximativă a Hessianului în pasul următor este calculată prin formula:
unde este matricea de identitate, este pasul algoritmului pe iterație, este modificarea gradientului pe iterație.
Deoarece calcularea matricei inverse este dificilă din punct de vedere computațional, în loc să se calculeze , matricea inversă este actualizată :
unde .
dat
initialize while
find direction
compute , satisface conditiile lui Wolfe
designate si
compute end
de optimizare | Metode|
---|---|
Unidimensional |
|
Comanda zero | |
Prima comanda | |
a doua comanda | |
Stochastic | |
Metode de programare liniară | |
Metode de programare neliniară |