Rapport méthode d`optimisation n°2 : Gradient conjugué

Transcription

Rapport méthode d`optimisation n°2 : Gradient conjugué
Rapport méthode d'optimisation n°2 :
Gradient conjugué
par Billon Florian
3°Hy msn
3 novembre 2015
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
Table des matières
Introduction.......................................................................................................................................... 3
I.Méthode du gradient conjugué...................................................................................................... 4
I.1.Présentation............................................................................................................................4
I.2.Algorithme............................................................................................................................. 4
I.3.Variante.................................................................................................................................. 5
II.Test............................................................................................................................................... 6
II.1.Test 1.................................................................................................................................... 6
II.2.Test 2.................................................................................................................................... 6
III.Comparaison des variantes......................................................................................................... 7
III.1.Temps de calcul...................................................................................................................8
III.2.Nombre d'itération...............................................................................................................9
Conclusion.......................................................................................................................................... 10
2
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
Introduction
Ce rapport a pour objectifs de coder et de comparer les différentes méthodes de gradient
conjugués utilisés dans l'analyse numérique. Cette méthode inventée dans les années 1950 par
Cornelius Lanczos et Magnus Hestenes est une méthode itérative qui converge en un nombre fini
d'itérations. Toutefois, son grand intérêt pratique du point de vue du temps de calcul vient de ce
qu’une initialisation astucieuse (dite « préconditionnement ») permet d'aboutir en seulement
quelques passages à une estimation très proche de la solution exacte, c'est pourquoi en pratique on
se borne à un nombre d'itérations bien inférieur au nombre d'inconnues.
Tout d'abord, je vais présenter l'algorithme du gradient conjugué, ainsi que les différentes
variantes qui existent. Puis, je vais essayer les gradients codés à l'aide de deux fonctions tests.
Enfin, je vais comparer les temps de calculs et les nombres d'itérations de chacune de ces méthodes
grâce à la bibliothèque de Matlab.
3
Billon Florian
3°Hy msn
I.
Rapport optimisation :
Gradient conjugué
Méthode du gradient conjugué
I.1. Présentation
La méthode des gradients conjugués est un procédé en n itérations pour résoudre un système
d'équations linéaires N. Cette méthode implique une matrice symétrique définie positive. Elle est
donc pertinente pour la minimisation de fonctions quadratiques. Dans le cas général ces fonctions
s'écrivent de la forme suivante :
1 T
T
f ( X )= X A X−B X
2
où A est la matrice quadratique de taille N*N
B est la matrice linéaire de la fonction quadratique de taille N*1
X est un vecteur de taille N*1
Il existe plusieurs méthodes de directions conjuguées. Celles étudiées ici sont les méthodes de
Fletcher-Reeves, Polak-Rebiere, Hestenes-Stiefel et Dai-Yuan. Ainsi le but est d'étudier le temps et
le nombre d'itérations que ces différentes variantes mettent pour obtenir le minimum d'une fonction.
I.2. Algorithme
L'algorithme du gradient conjugué est la même pour les différentes variantes. La seule
différence réside dans le calcul d'une variable. Ainsi l'algorithme est le suivant :
A l'étape initiale :
On part d'un point initial X0 et on définit la première direction r 0=−∇ f (x 0)=B− AX 0 .
Si r0 est nulle on s'arrête car on se trouve déjà au minimum de la fonction.
T
r r
Si r0 est non nulle on pose α0= T 0 0 et on calcule le point suivant de la manière suivante :
r0 A r 0
x 1=x 0 +α0 r 0
r1=−∇ f (x 1 ) et la nouvelle pente est définie
Ensuite on calcule le gradient à ce nouveau point
de la manière suivante : d 1=r1−βr 0 où β est la variable qui change en fonction de la méthode.
Ensuite on répète cette méthode pour calculer le point suivant. L'étape k se résume de la manière
suivante.
A l'étape k :
Si ∇ f (x k )=0 le point xk est le minimum.
Si ∇ f (x k )≠0 on pose r k =−∇ f (x k ) et αk =
T
dk r k
T
dk A dk
.
4
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
Dans ce cas le nouveau point xk+1 est calculé par la formule suivante :
x k+ 1=x k +αk d k .
La nouvelle pente pour le point suivant est
d k+1=r k +1−β k+1 d k . Puis on recommence cette
algorithme jusqu'à obtenir le minimum de la fonction.
En pratique l'algorithme s'arrête dès que r k+1 est inférieur à une valeur de tolérance définie par
l'utilisateur qui est souvent de l'ordre de 10 -5. L'avantage du gradient conjugué par rapport à d'autre
méthode est la rapidité de la convergence du résultat en un minimum d'itération.
I.3. Variante
Il existe plusieurs variantes du gradient conjugué. Ces méthodes permettent de définir des
pentes différentes pour passer d'une itération k à k+1. En particulier, elle diffère sur le nombre
Les méthodes que j'ai étudié son au nombre de 4.
β.
Méthode de Fletcher-Reeves :
T
β k+ 1=
∇ f ( x k+ 1) ∇ f (x k +1)
T
∇ f (x k ) ∇ f (x k )
Méthode de Polak-Rebiere :
T
β k+ 1=
∇ f ( x k+ 1) (∇ f ( x k+1 )− ∇ f (x k ))
T
∇ f ( xk ) ∇ f ( xk )
Méthode de Hestenes-Stiefel :
T
β k+ 1=
∇ f ( x k+ 1) (∇ f ( x k+1 )−∇ f (x k ))
T
d k (∇ f (x k +1)−∇ f ( x k ))
Méthode de Dai-Yuan :
T
β k+ 1=
−∇ f ( xk +1) ∇ f (x k+1 )
T
d k (∇ f ( x k+ 1)− ∇ f (x k ))
Une fois toutes ces méthodes implémentés dans un code Matlab, je peux étudier le temps de
convergence et le nombre d'itération pour chacune de ces méthodes avec des fonctions tests.
5
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
II. Test
II.1. Test 1
Le premier test effectué est fait avec la fonction suivante :
2
2
f ( X , Y )=2 X +Y +2 XY + X + Y
Le tracé de cette fonction est la courbe suivante :
Illustration 1: Tracé de la fonction test 1
Grâce au gradient conjugué programmé, le minimum de cette fonction obtenu est (-1;3/2) (qui
est celui obtenu théoriquement) avec seulement 2 itérations.
II.2. Test 2
Le deuxième test effectué est fait avec la fonction suivante :
2
2
f ( X , Y )=0.26( X +Y )−0.48 XY
6
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
Le tracé de cette fonction est la courbe suivante :
Illustration 2: Tracé de la fonction test 2
Grâce au gradient conjugué programmé, le minimum de cette fonction obtenu est (0;0) (qui
est celui obtenu théoriquement) avec seulement 3 itérations.
III. Comparaison des variantes
Pour pouvoir étudier le temps de calcul et le nombre d'itérations, il faut prendre une matrice
symétrique plus grande que pour les fonctions tests. Donc pour pouvoir regarder les paramètres, une
matrice de référence de Matlab est utilisée. C'est la matrice qui correspond à l'équation de résolution
de Poisson. Sa taille est une puissance de 2. Ainsi le nombre d'inconnues augmentent rapidement.
7
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
III.1. Temps de calcul
Illustration 3: Temps de calcul en fonction du nombre d'inconnue
On peut voir que 3 des 4 méthodes de gradient conjugué ont la même évolution du temps de
calcul en fonction du nombre d'inconnues. Ces méthodes de Fletcher-reeves, Polak-Rebiere et
Hestenes-Stiefel commencent à avoir un temps de calcul différent pour un nombre d'inconnue 6*10 5.
Cependant, la méthode de Dai-Yuan a un temps de calcul qui est grand par rapport aux autres. Pour
un nombre d'inconnues de l'ordre de 10*105 le temps de calcul est multiplié par 3.
Pour toutes ces variantes le temps de calcul a une évolution linéaire par rapport au nombre
d'inconnues.
8
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
III.2. Nombre d'itération
Illustration 4: Nombre d'itération en fonction du nombre d'inconnue
Pour toutes ces méthodes, le nombre d'itérations est exactement le même sauf pour la variante
de Dai-Yuan. On peut voir que les courbes sont bien superposées car on en voit qu'une. Le gradient
de Dai-Yuan quant à lui semble diverger.
9
Billon Florian
3°Hy msn
Rapport optimisation :
Gradient conjugué
Conclusion
Le gradient conjugué a l'avantage d'avoir un temps de calcul et un nombre d'itérations peu
élevés par rapport aux nombre d'inconnues que peut lui demander de résoudre. Ainsi, ces 2
avantages font de lui un outil très pratique dans la recherche du minimum d'une fonction.
Néanmoins, le gradient conjugué que j'ai implémentée ne s'applique qu'à des fonctions
quadratiques ou à des matrices symétriques. Dès qu'on passe à des fonctions non linéaire ou des
matrices quelconque, il faut utiliser une autre méthode.
10