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