Optimisation TP 2 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+v2
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 fonctionf est le suivant. A partir d'une valeur initialex1 (on pourra prendre la valeur par défautx1 = (2.5,2.5)), l'itération k∈ {1,2, ...}de l'algorithme consiste à
1. choisir une direction de descentedk
2. choisir un pas αk
3. calculerxk+1=xk+αkdk .
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 lorsquekf0(xk)k< tol avec tolune tolérance choisie (on pourra prendre tol= 10−5 par défaut) et f0 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 gradientf0(x) de f en un point x par diérence nie. Quel est le gradient def 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 −1 0 1 2 3
−3−10123
Figure 1 Lignes de niveau def 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 =−(f00(xk))−1f0(xk) avec f00 la matrice hessienne etα= 1.
(a) Ecrire une fonction qui calcule une valeur approchée de la matrice hessiennef00(x)de f en un pointx par diérence nie. Quel est la hessienne def 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 pourx1= (2.5,2.5)etx1 = (0.1,0.1)? 6. L'algorithme de Newton à pas optimal utilise la même direction de descente que l'al-
gorithme 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