Vous êtes sur la page 1sur 6

Département E.E.

A – Filière Automatique
4ème année Automatique – Semestre 2
TRAVAUX PRATIQUE – Optimisation et Recherche Opérationnelle

TP 4
Méthode de gradient à pas
optimal

Réalisé par

Leulmi Mohammed Islam


E-mail : islamfcb.enpc@gmail.com

Encadré par

Pr. Samir Ladaci

Année universitaire 2018/2019


1. Analyse du problème :

On veut trouvez le minimum d’une fonction à l’aide de la


méthode du gradient à pas optimal.
Les méthodes de gradient sont définies par les relations
𝑢(𝑘+1) = 𝑢(𝑘) − 𝜌𝑘 ∇J(𝑢(𝑘) )
Où les facteurs de descente ρk ∈ IR sont à choisir. Il y a
plusieurs méthodes de gradient suivant le choix que nous
faisons pour ρ.
Pour la méthode du gradient à pas optimal on choisit 𝜌𝑘 ∈ ℝ tel
que :

𝐽 (𝑢(𝑘) − 𝜌𝑘 ∇J(𝑢(𝑘) )) = min 𝐽 (𝑢(𝑘) − 𝜌𝑘 ∇J(𝑢(𝑘) ))


𝜌𝑘 ∈ℝ

Dans notre cas la fonction J est quadratique :


1
𝐽(𝑥) = < 𝐴𝑥 , 𝑥 > − < 𝑏 , 𝑥 > + 𝑐
2
Avec 𝐴 ∈ 𝑀𝑛 (ℝ) matrice symétrique et définie positive, 𝑏 ∈ ℝ𝑛
𝑐 ∈ ℝ (donc c’est une forme quadratique associée à une matrice
SDP).
Dans ce cas le facteur de descente 𝜌𝑘 est :
2
‖𝐴𝑢(𝑘) − 𝑏‖
𝜌𝑘 =
〈 𝐴 (𝐴𝑢(𝑘) − 𝑏) , 𝐴𝑢(𝑘) − 𝑏 〉
Donc la méthode de gradient à pas optimal dans le cas J
quadratique est :
𝑢(𝑘+1) = 𝑢(𝑘) − 𝜌𝑘 (𝐴𝑢(𝑘) − 𝑏)

Étant donné 𝐴 ∈ 𝑀𝑛 (ℝ) matrice symétrique et définie positive, ∈


ℝ𝑛 , 𝑐 ∈ ℝ , On veut réaliser un programme, basé sur la méthode
du gradient à pas optimal permettant de retrouver u* qui
minimise J
2. L’organigramme de l’algorithme :
3. Programme Réalisé :

clear all; close all; clc

% Entrée des données ________________________________________

A=input('Entrez la matrice A symétrique et définie


positive\n');
b=input('Entrez le vecteur colonne b\n');
c=input('Entrez le scalaire c\n');
u=input('entrez le vecteur colonne initial\n');
epsilon=input('Entrez epsilon\n');
itmax=input('Entrez le nobmre d''iteration maximal\n');

% Calcul des itérations _____________________________________

j=0; % initialisation de compteur d'itérations

while norm(A*u-b)>epsilon && j<itmax % Test d'arrêt de la


boucle
p=((norm(A*u-b))^2)/sum((A*(A*u-b)).*(A*u-b)); %calcul de
rho
u=u-p*(A*u-b); %calcul du vecteur u future
j=j+1; %incrémentation du nombre d'itération
end
min=0.5*dot(A*u,u)-dot(b,u)+c; % calcul du minimum

%Affichage des résultats_____________________________________

disp('---------------------------------------------');
disp('Le vecteur u* qui minimise la fontion J est');
disp(u)
disp('La valeur de minimum de la fonction J est');
disp(min)
disp('---------------------------------------------');
4. Exemples d’exécution :

Exemple 1 :

2 1 1 0
𝐴=[ ] 𝑏=[ ] 𝑐=5 𝑢(0) = [ ] ℰ = 10−6
0 3 −1 0
Exemple 2 :

1 0 0 1 −10
𝐴 = [0 2 0] 𝑏 = [−1] 𝑐=5 𝑢(0) = [ 13 ] ℰ = 10−6
0 0 3 1 40

Vous aimerez peut-être aussi