Méthodes mathématiques de l`optimisation : méthode
Transcription
Méthodes mathématiques de l`optimisation : méthode
Méthodes d'Optimisation 3HY option MSN Méthodes mathématiques de l'optimisation : méthode du gradient conjugué Rapport Collin-Bastiani Nicolas Verdin Felix Octobre 2013 Table des matières 1 Description de la méthode 1 2 Description de l'algorithme 1 3 Résultats et observations 2 3.1 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Observations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conclusion 2 7 8 1 Description de la méthode La méthode de gradient conjugué est un algorithme de résolution des systèmes linéaires, de type A.x = b, pour lesquels la matrice A est symétrique dénie positive. Cete méthode itérative converge en un nombre ni d'itérations, au maximum égal à la taille N de la matrice carrée A. Pour résoudre ce système, on résoud le problème équivalent qui consiste à minimiser la fonction : 1 f (x) = (xT Ax − bT x) 2 En eet, si on souhaite minimiser f, on a ∇.f = A.x − b = 0. L'idée principale de cette méthode est de trouver le minimum xk d'une fonction selon une première direction dk puis chercher le suivant xk+1 selon la direction dk+1 , perpendiculaire à dk . De par les hypothèses de directions conjugués, on itère le processus grâce à la relation : xk+1 = xk + αk .dk (1) k variant de 0 à n-1 et αk étant la longueur de descente. 2 Description de l'algorithme On initialise tout d'abord l'algorithme avec un vecteur x0 arbitraire et on choisit comme première direction d0 l'opposé du gradient en x0 : d0 = −g 0 = −(A.x0 − b) On On On On dénit une boucle pour k variant de 0 à n-1. calcule la première longueur de descente α0 , calcule x1 à l'aide de x0 et d0 ((1)), calcule la nouvelle direction de descente d1 à l'aide du coecient β1 : d1 = −g 1 + β1 d0 Ainsi de suite jusqu'à k = n − 1 Avec, g 1 = A.x1 − b Dans la boucle sur k, on impose une condition d'arrêt lorsque || A.xk − b ||< avec une valeur proche de 0 correspondant à la précision souhaité sur le gradient. Nous avons utilisé Matlab pour simuler cet algorithme. En entrée, il faut dénir la matrice A, le vecteur b, l'estimation initiale x0 et le paramètre . On récupère, en sortie, le vecteur xk et le vecteur x∗ calculé grâce à la résolution de x∗ = A−1 .b Trois programmes ont été écrit : un pour une matrice A de taile 2 ∗ 2, un autre pour une matrice 3 ∗ 3 et un dernier pour une matrice de taille N ∗ N . 1 3 Résultats et observations 3.1 Résultats Algorithme 2D : Dans ce script, nous avons utilisé la méthode du gradient conjuguée sous sa forme matricielle pour l'appliquer à une fonction quadratique à deux paramètres. La première partie du script permet de dénir la matrice A et le vecteur b des coecients de l'équation. La solution exacte du problème de minimisation simple dans notre cas est x0 et le paramètre . On récupère, en sortie, le vecteur xk et le vecteur x∗ calculé grâce à la résolution de x∗ = A−1 .b. Avant de passer à la méthode du gradient conjuguée, nous avons codé une méthode rudimentaire pour trouver le minimum de la fonction, en discrétisant les variables x et y. A l'aide d'un jeu entre vecteurs et matrices et en manipulant les indices du minimum, on en déduit le couple (x,y) minimisant la fonction coût, avec une certaine erreur, directement liée au pas d'espace de discrétisation. Cette méthode, bien qu'approximée, permet d'avoir accès assez rapidement à la solution. Dors et déjà, on retrouve bien la solution exacte avec cette méthode au pas près. Figure 1 Fonction de référence déni dans l'algorithme 2D grâce à la matrice A Enn, nous avons codé la méthode du gradient conjuguée comme décrit ci-dessus. On retrouve grâce à cette méthode la solution exacte avec une précision machine, en seulement 2 itérations (comme le nombre d'inconnues) et en bien moins de temps que la première méthode rudimentaire : 2 Figure 2 Iso-contour de la fonction Algorithme 3D : Nous avons également adapté le script du gradient conjugué pour deux paramètres à 3 paramètres. (script3D). Nous avons ainsi pu vérier que 3 itérations maximum sont nécessaires pour trouver le minimum. De plus, la solution trouvée est exactement égale à la solution théorique à la précision machine près. Malheureusement, en 3D, il n'est pas possible de représenter la fonction comme nous avons pu le faire dans le cas 2D. Ainsi, nous pouvons juste comparer la solution trouvée avec la solution donnée par x∗ Algorithme ND : Enn, nous avons augmenté le nombre de paramètres en le xant à 8. La méthode du gradient conjuguée n'étant valable que dans le cas de matrices symétriques, dénies positives, nous avons tout d'abord déni une matrice A symétrique sans se soucier de son caractère déni et positif. Il sut alors 0 d'utiliser la matrice A = At .A pour se garantir du caractère déni positif de la matrice tout en gardant sa symétrie. Une nouvelle fois, nous avons vérié que le nombre d'itérations nécessaire pour converger est égal à la dimension de la matrice (8 ici) avec la méthode du gradient conjugué. La solution trouvée est également exactement égale à la solution réelle x∗ . Gradient simple appliqué à la fonction "Banana" : Nous avons également essayé dans le script ba- nana.m d'utiliser la méthode de plus forte descente ou descente par gradient. Cette méthode bien que plus simpliste que celle du gradient conjuguée, permet de minimiser des fonctions non quadratiques. Nous nous sommes ainsi intéressé à la fonction de Rosenbrock, appelé aussi "fonction banane", qui est ! une fonction d'ordre 4 et dont le minimum est connu pour être en x∗ = 3 1 1 . Figure 3 Fonction de Rosenbrock Par la méthode du gradient simple, on constate de manière générale que le nombre d'itérations nécessaires est bien plus grand qu'avec la méthode du gradient conjuguée et dépend comme nous le verrons, ci-après, de plusieurs paramètres. Figure 4 Diérents xk calculé pour trouver le minimum Avec cette méthode, le coecient α (ou coecient de longueur de descente) est xé par l'utilisateur (il n'est plus calculé à chaque itération). Un mauvais choix de ce pas peut faire diverger le calcul. Cette méthode n'est donc pas robuste et plus lente. C'est pour ces raisons que la méthode du gradient conjuguée lui est souvent préférée ! 4 On cherche désormais à observer l'inuence des diérents paramètres sur la convergence et la précision des résultats : Inuence de l'estimation initiale x0 On fait varier la position du point x!0 pour = 0.001 et α = 0.001, xés. On sait que le minimum global analytique est en x∗ = 1 1 . On obtient les résultats suivants : Figure 5 Inuence de la position initiale sur le nombre d'itérations On remarque que plus on s'éloigne des coordonées du minimum analytique, plus il faut d'itérations au code pour obtenir le résultat, ce qui est logique. On remarque aussi que lorsque || x0 − x∗ ||> 2 les calculs ne convergent plus. Inuence du paramètre α On remarque tout d'abord que si le α est trop grand (α > 0.002), le calcul ne converge pas. Ensuite pour α < 0.002, plus le pas d'avancement α est petit, plus on est long à converger ce qui est conforme à la théorie. Il y a ainsi un optimal pour α à déterminer. Dans notre cas, avec nos jeux de paramètres, il s'agissait de α = 0.002 où le nombre d'itération est de 4016. 5 Figure 6 Nombre d'itérations en fonction α Inuence du paramètre On fait varier tout en gardant x0 = 0 0 ! et α = 0.001 On obtient les résultats suivants : 6 Figure 7 Nombre d'itérations nécessaires pour atteindre la valeur Ici, plus on diminue , plus il faut d'itérations au code pour converger, ce qui est normal une fois de plus. Figure 8 Norme de l'erreur entre xk et x∗ en fonction L'augmentation de a aussi pour eet de d'augmenter la précision des résultats et rapprocher la solution obtenue de la solution analytique. On observe une évolution linéaire de || xk − x∗ || en fonction de . 7 3.2 Observations En théorie la méthode des gradients conjugués une méthode directe. En pratique à cause des erreurs d'arrondi on la considère comme une méthode itérative. L'intérêt principal de cette méthode est qu'elle converge plus vite que la méthode de plus grande descente : Figure 9 Comparaison résolution par méthode de descente par gradient (vert) et méthode gradients conjugués (rouge) Le problème liée à cette méthode est qu'elle nécessite le stockage en mémoire des xk+1 et xk à l'itération k+1. On estime que le coût de la méthode, pour n grand, est de 2.n3 ops (opérations à virgules ottantes par seconde). Ce coût de calcul peut être diminué plus l'estimation initiale x0 est proche de la solution à l'état nal. ⇒ D'où l'intérêt de recourir à un pré-conditionneur. 8 Conclusion Cette étude nous a fait découvrir quelques méthodes d'optimisation classiques. La méthode du plus fort gradient est une méthode très rudimentaire et peu robuste alors que la méthode du gradient conjugué est déjà une méthode plus évoluée qui peut être utilisée dans des codes industriels d'optimisation. De manière plus générale, l'optimisation est un domaine qui s'étend de plus en plus à l'industrie, trouvant notamment des applications dans l'optimisation de forme en aéronautique. Avoir pu découvrir des méthodes d'optimisation et d'assimilation de données est ainsi intéressant avant de rentrer dans le monde de l'ingénierie. 9