Vous êtes sur la page 1sur 17
Université de Carthage Ecole polytechnique de tunisie Travaux paratique: Optimisation Compte rendu du TP °1: Méthodes de gradient pour le probléme de minimisation quadratique Encadréé M. Moker.Maher & Mm.Chouaieb Nadia Elaborée par Chiha.wissem & Welha.MELK : étudiants ingénieur en 1 ere année Année universitaire 2021/2022 Ecole polytechnique de tunisie Année universitaire 2021/2022 1. Préliminaire: On se propose dans ce TP de résondre numériquement le probleme de minimisation suivant: min J(u) @ avec: J:V OR ee ws f Se)? — sle).u(adde 2) on: {uw € H¥((JO, 1[) : w(0) = u(1) = 0} et f € £7()0.1[") une fonetion donnée On rappelle que: 2(J0,1[) est espace d’ Hilbert des fonction de carré intégrable sur J0,1[ H¥(J0, 1f) Vespace de Sobolev dordre 1 Afin d’avoir ne approximation numérique de u, noté w, on remplace espace fonctionnel V qui est de dimension infinie par un nouvel sous espace vectoriel Vj, de dimension finie qui sera constrnit a partir d'une discrétisation du domaine ]0, 1[.Le probleme se raméne ainsi a Ja résolution d’un systéme linéaire de dimension n?. et on obtient la fonctionnelle In(un) qui approche J(u) sur Vj, visualiser dans le cas ou n 2. Etude théorique: 1.Montrer que ’équation d’Euler Lagrange associée ace probléme est: sul(x) = f(x)? On définie le lagrangien de la fonction J comme suit :L(u,w, f) la condition doptimalité s'écrit: ce qui donne ait f(a) — Fw@)) =0 Ye el. 1 Ecole polytechnique de tunisie Année universitaire 2021/2022 => -f(e)-w(e)=0 Ye €]0,1[ Yer €}0,1[ (3) 2.Donner la solution de cette equation différentielle qui satisfait les conditions aux limites suivantes: (0) = u(1) = 0 pour le cas oft f(x) = 1?.Dans la suite on notera u, cette solution (3) + wu" (2) = -1 > u(x) = -2 + cte: = u(x) u(0) = u(1) = 0 = ete, = } et eter =0 + cteyx + ctep uel) = 3 (1-2) we)o,1, 3.Montrer que le probleme de minimisation (1) peut étre approche par le probléme de minimisation quadratique dans R": mi Jn() Inu) = 5 2 et déterminer A et b? On awe Vian € Vatelquew, = 5) ui.dy (i? [ seasloiae 1m on 1 = [ rd .0,(2).) (x)dn = [x (e)de [Somsne = [10m at =i Yu [ a oH sande f ” pa bi(a)dr ist jan Ecole polytechnique de tunisie Re uy Ww uy 1 Auu> =5< Aw 2 ott et Or on a ailleurs: (re Année universitaire 2021/2022 OF ode GG a 11 62 hich um hol tn u)-f f bdh a oe On bn Be Gnd my F(a) F(a) f(tn) — OF GD oe GG A= f OF oy. Ob, | Re Gnd Gud f(a) 5_ | fe) S00) 2 : i [soso ata Lo i=j+1 0 sinon Ecole polytechnique de tunisie Année universitaire 2021/2022 oii on aura finalement: 0 0 -1 0 2 0 0 2-1 0 1 2 et F(a) 5- | fe) Fle) 3.Implémentation numérique: 4.programmer en python la fonctionnelle JJ,et la représenter dans le cas n=2 sur Ie pavé [—10, 10].|=10, 10] On commence tout d’abord par la définition de notre matrice A d’ordre n : [ ] def matrice_A(n): # definir la matrice A a l’ordre n A = np.zeros((n,n)) for i in range(@,n): ALL. i}=2 for i in range(@,n-1): alit1,4] = -1.0 for 4 in range(®,n-1): ALL,i41] = -1.0 return A On définie ensuite la fonctionnelle J, [1 definition de 1a fonction 3 dans le cas 9 def 3(0, aematrice_A(n) benp.array(n) return (@.5%np.vdot(np.dot(a,u),u)-np.vdot(b,u)) On procéde ainsi a la représentation de J dans le eas n = 2: 4 Ecole polytechnique de tunisie Année universitaire 20: /2022 © import matplotlib.pyplot as plt import numpy as np def z function(x, y): # c"est la fonction J a l*ordre 2 return x*#2-x*y+y"#2-x-y # question 4 X = np.linspace(-10, 18, 100) y = np.linspace(-10, 10, 100) X. ¥ = ap-machgrid(x. y) Z = 2 function(K, Y) #la representation de J en 3D ax = plt.axes(projection="3d") ax.plot_wirefrane(X, Y, Z, color="blue") ax.set_xlabel (‘axe ox") ax.set_ylabel( ‘axe oy") ax.set_zlabel( ‘axe 02") pit. shou() Vexécution du code précédant nous fournis le graphique suivant: “10045, *92500 35 a me 2550 7599 08 Figure 1: représentation graphique de J, 5.Montrer que pour tout 1 > la matrice A est symétrique définie positive ct le vérifie numériqnement pour certaine valeur de n.calculer la solution théorique du probléme (2) dans le cas n=2? il est évidant que la matrice A est symétrique. Montrons quelle est délinie positive? Ecole polytechnique de tunisie Année universitaire 2021/2022 vy m2 soit un vecteur x = de R™n>1 t 2a, - 22 —a + 202-23 % wity + Dats — ty < a n-2 + 2.0 n—1 or sachant que T+ hy Stearn alors = a a a a ' Sota, 29 Venn ee 2a S20) a a ma a 20) 2? - Laisa) 2 ah taf 20 4< Ase >20 Montrons que < Ar, >> 0? at ome oa 2 < Ave >=05 2t422 0 m1 =0et tm =0=< Aria >=F()) i. yr) de méme: a2 a ee Sorte, > 2. Vora $2.0 2D earn) > 22 0} > 04< Are >= 0> 22 +03 >0 7 el Sm=0 ee tH 1=0 Par itérations on montze que x = 22 =... =z, =02=0. Ainsi A est symétrique définie positive. Caleul de la solution théorique dans le cas of n=2: Ecole polytechnique de tunisie Année universitaire 2021/2022 la solution vérifie le syst#me suivant: Au =b re 21 9 Vérifions le résultat précédant numériquement pour le cas n 01 ‘at vérifia si see valoure propres sont tone strictament positives au non implémente done la fonction verif(A) qui prend en paramétre la matrice A objet [1 def verif(a): vps = np. linalg.eigvals(A) keo for vp in vps : if vp ce print ("vp not positive”) ket break if kaso print ("=->(tous les vps sont positive)") print ("==> matrice A est def et pos”) print (“les vps sont : “,vps) dans le cas: n= 2 on a Vexécution suivante [1 m2 figener 1a matrice A avec des fonctionn predefines A = matrice A(n) print (a) verification si A est def pos verif(a) ([ 2. -1.] (a2) ==>(tous les vps sont positive) > matrice A est def et pos les vps sont: [3. 1.] 6.Afficher sur une méme figure les courbes de niveau de J2, et son gradient sur le pavée [~10, 10],[—10, 10]: Ecole polytechnique de tunisie Année universitaire 2021/2022 Une ligne de niveau de Ia fonction a deux variable J, est l'ensemble des points (x,y) du plan ou Jp garde une valenr constante Pimplémentation des lignes de niveanx s'opere avec la fonction contour du module matplotlib comme suit: #ligne de niveau la representation de 3 en 20 ZAsplt..contour(X,¥,2) fig = plt-figure() wo 15 50 2s oo -100 ‘00 75 30 25 00 25 50 75 100
Figure 2: représentation des lignes de niveaux de J on peut également tracer a l'aide de la fonction “quiver’ le gradient de Jy dans le plan(er, yet superposer les deux graphiques [ ] x= np.linspace(-10, 10, 10) y = np.linspace(-18, 10, 18) X, Y = np.meshgrid(x, y) $=3(np.array([X,¥])) PX ry - X-1 01 ax ay [ ] Fig , ax = plt.subplots(Figsize=(14,7)) ax. quiver(X,Y, 8x, 8Y) cs = ax.contour(x, Y, 4) ax.clabel(cs,inline=True,fontsize = 10) Ce qui donne la figure ci dessous: Ecole polytechnique de tunisie Année universitaire 2021/2022 Figure 3: lignes de niveaux et gradient de J 3.L.la méthode du gradient a pas fixe: La méthode de descente de gradient & pas constant, consiste, comme son nom indique, & choisir comme direction de descente dy = —V.J(ug), et comme pas de descente p > Oune constante fixe, Autrement dit, on a: tks = Ug + pd 4) On définie dabord Ja fonction norme qui retourne le norme d'un vecteur donné [1 det norme (x; norme = np.sqrt(np.vdot(x,x)) return norne avec 's initiation suivantes: ne2 e041 tot = 16**(-6) ‘A= matrice_A(n) ueenp.array([-1,2]) b =np.array([1 for i in range(n)]) Ecole polytechnique de tunisie Année universitaire 2021/2022 def 3(u): xeu[o] yeu[1] return x**2-x*ysy*#2-x-y On écrit Palgorithme suivant: [1 def grod_pas_fixe(n,uo) + Aamatrice_A(n) b = np.array([1 for 4 in range(n)]) ‘#8 = np.array([10,7]) D,Veeig(A) ret p02 ko 11-[u0[e)] 12-[ue1}] while ( (m>=ze"*(-6)) & (ke200) ) : d= b - Aue #le gradient ue-ue +p td r=ptnorme(d) 11. append(vo[2]) 12. append(ve[1]) 1 append(ve) kee Vexécution de ce programme pour les valeurs suivantes des paramétres: w= ( 12 ) p=01 tol=10- maz-iter = 10 [.] us np.array([1¢,7]) u,1,11,12 = grad_pas_fixe(2,u) Px .py=np.meshgrid(11,12) plt.plot(11,12,"blue”) plt.plot(1,1,"ro") # c'est la solution de probleme de min pit. show() Px ,py=np.meshgrid(11, 12) plt.plot(px,py,"blue”) pit. shou() 10 Ecole polytechnique de tunisie Année universitaire 2021/2022 7 7 = 7 Figure 4: méthode du gradient a pas fixe v1 % 3.2.Méthode du gradient a pas optimal: ‘On commence par défirie la fonction pas-optimal qui prend comme variable un entier n et quatre vecteurs a, b, uet d et retourne le pas optimale qui sera utilise ultérieurement [) det pas optimal(nyaytyuyd): x Lonp.sart(s) errs bea winlte(eres20"*(-0)): ceratere/(x""2) enaterr/x F3(ure"e) aurea) i Pp): elit (Fg): return b ul Ecole polytechnique de tunisie Année universitaire 2021/2022 On exéeute ainsi le programme suivant: [1 def grad_pas_optimal(n,u): #u = np.array([5 for i in range(n)}) Aematrice_A(n) b = np.array([1 for 4 in range(n)]) kao a0 DV = eig(a) bb=1/np.max(D) errp=0.5 rae.1 1-[] while (r>1@**(-6)): L.append(u) d=b- Agu p= pas_optimal(n,a,errp,u,d) usu + pd rep*norne(d) heed return u.l ce qui donne le résu‘tat suivant : [w= mp-array(t5,71) 1) w, 1 = grad_pas_optiml(2,u) print(*la solution du problene de min est : “) print(u) print("le nosbre "iteration est rént(k) 1a solution du problene de min est [1.e0e00072 1.e0e0eeas} Je nonbre °iteration fet : 2 2 Ecole polytechnique de tunisie Année universitaire 2021/2022 ©) eeters1e002) yefo}*ten(2) en) for f tn range(len(2)): atieatiyte) yatiel xtoatt) Px.py.pz~ np.array(1x),np.areay(ly),np-array(12) print (2) pit.plotpx.py) plt-plot(1,,"ro") # c'est 1a solution de problene de ain Pie thowt) Larvay(t5s 7104 array(l4ee 3-De array(2s » 2-51)» array((A.75, 1.5 Iq anray((.25 » 1.37! Remarques et commentaires: Noue remarquone que la méthode de gradient & pas fixe converge plus rapidement quo Ja méthode de gradient & pas optimal pour les valeurs faibles den, Cela est dit au calcul du pas optimal p dans la deuxiéme méthode. 3.3.Méthode de la section doré La méthode de la section dorée consiste A s’arrange pour que la taille de Vintervalle soit, divisée d'un facteur constant A chaque étape. On s‘apercoit alors que cela contraint ce facteur a étre y = }.(1+ V5) le nombre d'or cry Ecole polytechnique de tunisie Valgorithine qui implémente cette méthode s*écrit alors: [] #algorithme 3 : section dorée [1 eF doree(): a-10 beso k tole10"*-3 erreb-a phin(145**0.5)/2 while (ere> tol): al,bieat(b-2)/phi**2 , at(b-a)/phi Af 3(ue attd) > 2(ue bi*d): eat elif 3(us at) < 3(us bite): be bi else: aad bebt errs bea ake return a Yexecution donne : [.] a doree() Cla 0.623671832725663 3.4.Méthode du gradient conjugué : u “Année universitaire 2021/2022 Ecole polytechnique de tunisie Année universitaire 2021/2022 © 665 grad_conginyu): Aenatrice_A(n) farray([i for 4 An range(n)]) steratdoneo raie*"(-6) raptrorne(¢) kee print("2a solution est :*) print(u print("le nonbre d°iteration est :°) print (ke) 2 append(u) return uyl On teste le programme ci dessus avec les instructions suivantes [ ] Usl= grad_conj(n,u) Ix-[e]*1en(1) ly-[e]*1en(1) Iz=[e}*1en(1) for 4 in range(len(1)): Ix[4]=1[4] [6] dy[4)}=104] 0] 22[4]-30[4)) Px,pyspz= np.array(1x),np.array(1y) :np.array (1z) print (1) plt.plot(px, py) plt.plot(1,1,"ro") # c’est la solution de probleme de min plt.show() 6 Ecole polytechnique de tunisie Année universitaire 2021/2022 alors on obtient a solution est : (a. 1.) G10) Le nombre d'iteration est : 3 [Larray([5. 5])» array([1.. 1.])]+ array({[2.14285714, 2.14285714], [2.42857i43, 2.42857143]]), array({[1-» 4.1, f., 1.11 2 Fy 2 10 Figure 5: méthode du gradient conjugue 4, Comparaison des méthodes Nous constatons que la méthode de gradient conjugué est la meilleure du caleul Elle converge trés rapidement vers la solution exacte du probleme au bout de quelque itération, Pour les n donnés, elle converge pendant: la moitié des n. Le temps d’ exécution est trés petit ce qui montre la convergence rapide de la méthode. Alors que les méthodes de gradient & pas optimal et & pas fixe sont tres lentes. 5. Conclusion En guise de conclusion ,on peut tirer que le choix du pas est primordial pour la convergence de Ia méthode ainsi que le temps de caleul 16

Vous aimerez peut-être aussi