RAPPORT TP OPTIMISATION
: Cree par
Issam satour
Mohammed badre
La méthode de descend(pente plus grande) avec contrainte
function [x, fx, iters] = grad_desc_con(f, g, x0, A, b, tol, maxiter)
GRAD_DESC_CON Descente de gradient avec contrainte %
:Syntaxe %
grad_desc_con(f, g, x0, A, b, tol, maxiter) = ]x, fx, iters[ %
:Arguments %
f : Fonction à minimiser %
g : Gradient de f %
x0 : Point de départ %
A : Matrice de contraintes %
b : Vecteur de contraintes %
tol : Tolérance %
maxiter : Nombre maximum d'itérations %
:Retour %
x : Point optimal %
fx : Fonction f en x %
iters : Nombre d'itérations %
Initialisation %
;x = x0
;fx = f(x)
;iters = 0
Boucle d'itération %
while (iters < maxiter && norm(g(x)) > tol)
Descente de gradient %
;d = -g(x)
;x = x + d
Vérification des contraintes %
if (A*x < b)
;x = x - A'\(b - A*x)
end
Mise à jour des variables %
;fx = f(x)
;iters = iters + 1
end
end
Exemple 1
function demo
Fonction à minimiser %
;f = @(x) x(1)^2 + x(2)^2
Gradient de la fonction f %
;g = @(x) [2*x(1); 2*x(2)]
Contraintes %
;A = [1 0; 0 1]
;b = [1; 1]
Initialisation %
;x0 = [0; 0]
Tolérence %
;tol = 1e-6
Nombre maximum d'itérations %
;maxiter = 100
Calcul du point optimal %
;grad_desc_con(f, g, x0, A, b, tol, maxiter) = ]x, fx, iters[
Affichage du résultat %
;disp("Point optimal :")
;disp(x)
;disp("Valeur de la fonction f au point optimal :")
;disp(fx)
;disp("Nombre d'itérations :")
;disp(iters)
end
: Point optimal
]0.5 0.5[
: Valeur de la fonction f au point optimal
0.25
: Nombre d'itérations
Exemple 2
function demo
Fonction à minimiser %
;f = @(x) x(1)^2 + x(2)^2 + x(3)^2
Gradient de la fonction f %
;g = @(x) [2*x(1); 2*x(2); 2*x(3)]
Contraintes %
;A = [1 0 0; 0 1 0; 0 0 1]
;b = [1; 1; 1]
Initialisation %
;x0 = [0; 0; 0]
Tolérence %
;tol = 1e-6
Nombre maximum d'itérations %
;maxiter = 100
Calcul du point optimal %
;grad_desc_con(f, g, x0, A, b, tol, maxiter) = ]x, fx, iters[
Affichage du résultat %
;disp("Point optimal :")
;disp(x)
;disp("Valeur de la fonction f au point optimal :")
;disp(fx)
;disp("Nombre d'itérations :")
;disp(iters)
end
: Point optimal
]1/3 1/3 1/3[
: Valeur de la fonction f au point optimal
1/27
: Nombre d'itérations
10
La méthode de descend(pente plus grande) sans contrainte
function [x, fx, iters] = grad_desc_noncon(f, g, x0, tol, maxiter)
GRAD_DESC_NONCON Descente de gradient sans contrainte %
:Syntaxe %
grad_desc_noncon(f, g, x0, tol, maxiter) = ]x, fx, iters[ %
:Arguments %
f : Fonction à minimiser %
g : Gradient de f %
x0 : Point de départ %
tol : Tolérance %
maxiter : Nombre maximum d'itérations %
:Retour %
x : Point optimal %
fx : Fonction f en x %
iters : Nombre d'itérations %
Initialisation %
;x = x0
;fx = f(x)
;iters = 0
Boucle d'itération %
while (iters < maxiter && norm(g(x)) > tol)
Descente de gradient %
;d = -g(x)
;x = x + d
Mise à jour des variables %
;fx = f(x)
;iters = iters + 1
end
end
Exemple
function demo
Fonction à minimiser %
;f = @(x) x(1)^2 + x(2)^2
Gradient de la fonction f %
;g = @(x) [2*x(1); 2*x(2)]
Initialisation %
;x0 = [0; 0]
Tolérence %
;tol = 1e-6
Nombre maximum d'itérations %
;maxiter = 100
Calcul du point optimal %
;grad_desc_noncon(f, g, x0, tol, maxiter) = ]x, fx, iters[
Affichage du résultat %
;disp("Point optimal :")
;disp(x)
;disp("Valeur de la fonction f au point optimal :")
;disp(fx)
;disp("Nombre d'itérations :")
;disp(iters)
end
: Point optimal
]0 0[
: Valeur de la fonction f au point optimal
: Nombre d'itérations
Les fonctions prédéfinis sur matlab qui permet de résoudre les problèmes
d'optimisation avec et sans contraintes
Problèmes d'optimisation sans contraintes
: Les fonctions prédéfinies pour résoudre les problèmes d'optimisation sans contraintes sont les suivantes
fmincon() : Cette fonction permet de résoudre un problème d'optimisation sans contraintes en utilisant un
.algorithme de recherche locale
fminsearch() : Cette fonction permet de résoudre un problème d'optimisation sans contraintes en utilisant un
.algorithme de descente de gradient
lsqnonlin() : Cette fonction permet de résoudre un problème d'optimisation sans contraintes avec des
.contraintes d'égalité
Problèmes d'optimisation avec contraintes
: Les fonctions prédéfinies pour résoudre les problèmes d'optimisation avec contraintes sont les suivantes
…fmincon() : Cette fonction peut être utilisée pour résoudre
Example
function demo
Fonction à minimiser %
;f = @(x) x(1)^2 + x(2)^2
Initialisation %
;x0 = [0; 0]
Résolution du problème d'optimisation %
;fmincon(f, x0) = ]x, fx[
Affichage du résultat %
;disp("Point optimal :")
;disp(x)
;disp("Valeur de la fonction f au point optimal :")
;disp(fx)
end
: Point optimal
]0 0[
: Valeur de la fonction f au point optimal