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