TD2 - Espace d`authentification univ

publicité
TP 2
Optimisation
L3 EURIA
22 novembre 2016
Exercice 1
L'objectif de ce TP est de tester diérents algorithmes de descente sur la fonction
f (u, v) = 1 −
1
1 + au2 + v 2
avec a > 0 un paramètre qu'on fera varier. On pourra prendre la valeur a = 0.5 par défaut.
Le principe général des algorithmes de descente pour minimiser une fonction f est le suivant. A
partir d'une valeur initiale x1 (on pourra prendre la valeur par défaut x1 = (2.5, 2.5)), l'itération
k ∈ {1, 2, ...} de l'algorithme consiste à
1. choisir une direction de descente dk
2. choisir un pas αk
3. calculer xk+1 = xk + αk dk .
Lorsque αk = α est une constante on parle d'algorithme à pas xe. Lorsque αk est choisie de
telle manière à minimiser la fonction à une variable α 7→ f (xk + αdk ) on parle d'algorithme à
pas optimal. On arrêtera l'algorithme lorsque kf 0 (xk )k < tol avec tol une tolérance choisie (on
pourra prendre tol = 10−5 par défaut) et f 0 le gradient de f .
1. Tracer les lignes de niveau de la fonction f avec la fonction contour. On produira une
gure similaire à la Figure 1 ci-dessous (sans la courbe qui représente la trajectoire de
l'algorithme de la question 3). Pourquoi obtient-on des ellipses ? Que se passe-t-il pour
a = 1 ? Est-ce que la fonction possède un minimum local ? Un minimum global ? Refaire
la gure en remplaçant contour par image puis persp.
2. Ecrire une fonction qui calcule une valeur approchée du gradient f 0 (x) de f en un point
x par diérence nie. Quel est le gradient de f au point où f atteint son minimum ?
3. Vérier que l'algorithme de gradient vu dans le cours est un algorithme de descente
pas xe et expliciter la direction de descente.
à
(a) Ecrire une fonction R qui implémente cet algorithme et représenter les diérentes
itération sous la forme de la Figure 1.
(b) Faire varier la valeur de α. Est-ce que l'algorithme converge peu importe la valeur de
α ? Quelle valeur proposez-vous d'utiliser pour que l'algorithme converge rapidement ?
1
3
2
1
−1 0
−3
−3
−1
0
1
2
3
Figure 1 Lignes de niveau de f et positions successives de xk pour l'algorithme de gradient à
pas xe avec α = 1 (courbe othogonale aux lignes de niveau qui part de x0 = (2.5, 2.5) et qui se
rapproche du minimum local (0, 0)).
4. Implémenter un algorithme de gradient à pas optimal (la direction de descente est la
même que dans l'algorithme précédent). On pourra utiliser un algorithme vu dans le TP
précédent (nombre d'or par exemple) pour optimiser le pas.
(a) L'algorithme converge-t'il plus rapidement que celui de la question précédente ? On
pourra comparer le nombre d'itérations mais aussi les temps de calcul avec la fonction
system.time.
(b) Représenter la trajectoire de l'algorithme comme sur la gure 1 et vérier que dk est
tangente à la ligne de niveau qui passe par xk+1 .
5. L'algorithme de Newton à pas xe correspond au choix dk = −(f 00 (xk ))−1 f 0 (xk ) avec
f 00 la matrice hessienne et α = 1.
(a) Ecrire une fonction qui calcule une valeur approchée de la matrice hessienne f 00 (x) de
f en un point x par diérence nie. Quel est la hessienne de f au point où f atteint
son minimum ? Quelles sont les valeurs propres de cette matrice ? Interprétation ?
(b) Implémenter l'algorithme de Newton à pas xe et tester la convergence en fonction de
la valeur initiale : l'algorithme converge-t-il pour x1 = (2.5, 2.5) et x1 = (0.1, 0.1) ?
6. L'algorithme de Newton à pas optimal utilise la même direction de descente que l'algorithme de la question précédente. Implémenter cet algorithme et tester sa convergence
en fonction de la valeur initiale.
7. Comparer numériquement la vitesse de convergence des diérents algorithmes vu dans les
questions précédentes ainsi que ceux implémentés dans la fonction optim. Représenter les
trajectoires des diérents algorithmes sur une même gure (cf Figure 1).
8. Tester vos algorithmes sur la fonction de Rosenbrock dénie par
f (u, v) = (1 − u)2 + 100(v − u2 )2 .
2
Téléchargement