Université Paris-Dauphine Optimisation numérique
Département MIDO Gérard Lebourg
DUMI2E troisième année année /
Examen d’appel
On cherche à minimiser, sur le cône positif C={xRN|xi0, i = 1..N }de RN, une fonction
F:RN7→ R, convexe et de classe C1sur C, problème que l’on désigne dans la suite par (P). On se propose
de résoudre numériquement ce problème à l’aide de la procédure GUMP utilisée en TPs. On rappelle que GUMP
se présente comme une fonction Matlab prenant trois arguments :
1. une structure pb contenant la donnée du problème à résoudre
2. une structure algo précisant l’algorithme de descente utilisé
3. un entier itermax limitant - éventuellement - le nombre d’itérations : la valeur : itermax =inf
(+en Matlab) est possible.
GUMP utilise une structure trial, actualisée à chaque passage dans la boucle de l’algorithme, dont les
« champs » contiennent toute l’information attachée au point courant, en particulier :
1. le champ trial.x contient la valeur du point courant
2. les champs trial.f et trial.g contiennent respectivement les valeurs du critère et de son gradient au
point trial.x
3. le champ trial.d contiendra la direction de recherche calculée par l’algorithme au point trial.x
1. (4 pts) La structure pb, passée pour argument à GUMP, ne comportera que deux champs :
1. le champ pb.init contiendra l’initialisation de l’algorithme. On utilisera pb.init=zeros(N,1).
2. le champ pb.crit contiendra une « poignée » @myfun sur une fonction myfun (un « oracle ») prenant
pour argument un point xde RN, et retournant, en fonction du nombre d’arguments avec lesquels elle
est appelée, la valeur du critère Fau point xdans une variable f, ainsi, éventuellement, que celle de
son gradient dans une variable g.
Donner le code Matlab de myfun en supposant : A M ×Nmatrice réelle donnée, bvecteur donné de RM,
et : F(x) = kA?xbk2. Déclarer Aet bcomme variables globales.
function [f,g] = myfun(x)
global A,b
z=A?x-b ; f=z?z ;
if nargout>1
g=2?A’?z ;
end ;
2. (3 pts) Le champ algo.searchdir de la structure algo, qui sera passée pour argument à GUMP, devra
contenir une « poignée » @mydir sur une fonction mydir.GUMP passera pour argument la structure trial à
cette fonction, qui devra retourner la direction de recherche mydir(trial) au point courant trial.x. On
utilisera le code :
function d= mydir(trial)
x= trial.x; g=trial.g;
d=trictrac(x,g);
function d= trictrac(x,g)
d=x-g;
I=find(d<0); % retourne l’ensemble I[1, N]des indices itels que: di<0
d(I)=0; % di= 0 si: iI
d=d-x;
On s’intéresse dans cette question à la sous-fonction trictrac apparaissant dans le code de mydir. Prouver
que : xC,gRN, et : d=trictrac(x, g)impliquent :
a. x+dC
b. g0? d ≤ −kdk2
c. d= 0 (g0)&(g0? x = 0)
(indication : calculer dipour iIet i6∈ IIest défini comme dans le corps de trictrac)
En sortie de la procédure trictrac :di=xisi xi< gi(iI)
gisinon .
a. xi+di=0si xi< gi
xigisinon donc : x+dC.
b. g0? d =PiIgidi+Pi6∈Igidi=PiIgixiPi6∈Ig2
i
or : iI, x C0xi< gix2
ixigi, donc : g0? d PiIx2
iPi6∈Ig2
i=−kdk2.
c. Si : d= 0,xi= 0 < giou : gi= 0 pour tout indice i, donc g0et : g0? x =Pgixi= 0.
3. (5 pts) Le champ algo.stoppingtest de la structure algo devra contenir une « poignée » @mystop sur
une fonction booléenne mystop.GUMP passera pour argument la structure trial à cette fonction, une fois
la direction de recherche mydir(trial) calculée. La valeur mystop(trial)=1 permettra éventuellement
de générer un break : l’algorithme s’arretera - même si le nombre maximal itermax d’itérations n’est pas
atteint - et retournera la valeur du point courant trial.x. On utilisera le code :
function bool=mystop(trial)
bool=(trial.d==0)
a. Ecrire les KKT associées au problème (P)(on notera µun vecteur de multiplicateurs associé aux
contraintes).
F(x) + µ= 0,µ0,µ0? x = 0
b. Déduire que x0est solution de (P)si et seulement si : F(x)0et F(x)0? x = 0 .
Si : x0est solution de (P):F(x) = µ0, et : F(x)? x =µ?x= 0. Réciproquemment, si :
F(x)0et : F(x)? x = 0,xvérifie les KKT avec : µ=−∇F(x). Or le problème est convexe, donc
les KKT sont sufisantes et xest solution de (P).
c. En utilisant 2.c, conclure que l’algorithme ne s’arretera avant itermax iterations que si il trouve aupa-
ravant une solution de (P).
L’algorithme ne s’arretera avant itermax itérations que si, à une certaine étape : d= 0. Mais 2.c implique
alors : g0et g0? x = 0 avec : g=F(x), et le point xretourne par l’algorithme sera, d’après la
question précédente, solution de (P).
4. (4 pts) Le champ algo.stepsize de la structure algo devra également contenir une « poignée » sur
une fonction Matlab à laquelle sera passée pour argument dans GUMP la structure trial. Cette fonction
devra retourner le pas calculé par l’algorithme au point trial.x dans la direction trial.d. On définira :
algo.stepsize=@backtrack. On rappelle que backtrack teste d’abord le pas : t= 1. Si ce pas vérifie la
condition d’Armijo avec la valeur fixée du paramètre : α= 0.1, le pas : t= 1 est accepté et backtrack
retourne la valeur 1. Sinon, backtrack réduit le pas en remplaçant tpar l’abscisse du sommet de la parabole
tangente au graphe de la fonction de ligne ϕdéfinie par : ϕ(t) = F(trial.x +t ? trial.d)passant par le point
(t, ϕ(t)) jusqu’à ce que la condition d’Armijo soit vérifiée. Montrer que :
a. la suite xkdes points calculés par l’algorithme, initialisée par x0=pb.init=zeros(N,1), restera toujours
dans le cône positif Cde RN.
Notons dkla direction de descente et tkle pas calculés par l’algorithme au point xk. D’après 2.a :
xkCxk+dkC, et, puisque Cest convexe et 0tk1:
xkCxk+1 =xk+tkdk= (1 tk)xk+tk(xk+dk)C
Puisque : x0C, la suite xktoute entière restera dans C.
b. la suite F(xk)des valeurs correspondantes du critère sera décroissante.
Posons : gk=F(xk). La décroissance de la suite F(xk)est conséquence directe de la règle d’Armijo
et de 2.b :
F(xk+1)F(xk) + α tkg0
k? dkF(xk)α tkkdkk2< F (xk)
5. (5 pts) On suppose en fait Fde classe C2sur le cône positif Cde RN, et la norme spectrale de sa Hessienne
majorée, en tout point de C, par une constante K. Prouver que le pas calculé, à chaque étape, par backtrack
sera toujours supérieur à min(1,1/K).
Il suffit de prouver que l’abscisse du sommet de toute parabole passant par le point (0, ϕ(0)), tangente en
ce point au graphe de ϕ, et passant par un point de la forme (t, ϕ(t)) (t > 0), est supérieure à 1/K. Mais
toute parabole passant par le point (0, ϕ(0)), et tangente en ce point au graphe de ϕ, est le graphe d’une
fonction de la forme : ψa(t) = ϕ(0) + ϕ0(0) t+a
2t2, et l’abscisse ϕ0(0)/a de son sommet est d’autant plus
proche de zéro que aest grand (ϕ0(0) <0). Si elle passe également par un point de la forme (t, ϕ(t)) (t > 0),
il résulte de la formule de Taylor :
ϕ(0) + ϕ0(0) t+a
2t2=ϕa(t) = ϕ(t)ϕ(0) + t ϕ0(0) + K
2t2kdk2=ϕKkdk2(t)
donc t : aKkdk2, et l’abscisse ϕ0(0)/a de son sommet est au moins ègale à : ϕ0(0)/Kkdk2. Mais,
d’après 2. b : ϕ0(0) = −∇F(x)0? d ≥ kdk2, d’où le résultat.
6. (5 pts) On suppose en outre vérifiée l’hypothèse :
(H)xkC, kxkk → +∞ ⇒ F(xk)+
Prouver que :
a. la suite xkdes points calculés par l’algorithme avec itermax=inf aura au moins un point d’adhérence.
D’après 4, la suite xkreste dans l’ensemble fermé : S0={xC|F(x)F(x0)}. Lorsque la fonction
Fest coercive sur C(hypothèse (H)), S0est compact, et xka nécessairement des points d’adhérence.
b. tout point d’adhérence de la suite xksera solution du problème (P).
(utiliser 2.b)
Fétant coercive sur le fermé C, elle y est minorée, et la règle d’Armijo, combinée avec 2.b, im-
plique : dk=trictrac(xk, gk)0(voir la réponse de 4.b). Si la sous-suite xξ(k)converge vers
xC,gξ(k)=F(xξ(k))g=F(x), et, en supposant la fonction trictrac continue, on dé-
duira : 0 = trictrac(x, g), donc g0et g0? x = 0 (2.c), c’est à dire : xsolution de (P)(3.b). Le
résultat valant quelque soit la sous-suite extraite de xk, on conclura que tout point d’adhèrence de xk
est bien solution de (P). Reste à vérifier la continuité de trictrac en observant que sa ième fonction
composante est, pour tout indice ide 1 à N, la fonction continue : (x, g)7→ di=min(xi, gi).
c. la distance de xka l’ensemble des solutions de (P)tendra nécessairement vers zéro.
(raisonner par l’absurde)
Par l’absurde : sinon il existe une sous-suite xξ(k)de xket un réel ε > 0tels que : d(xξ(k), S)ε, où S
désigne l’ensemble des solutions de (P). Mais la suite xξ(k)restant dans le compact S0, elle admettrait
alors nécéssairement une sous-suite xζ(k)qui devrait converger vers une solution de (P)tout en vérifiant :
d(xζ(k), S)ε: une contradiction.
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !