Documentation des fonctions
Documentation de toute les fonctions du package Optinum
Optinum.Algorithme_De_Newton
Optinum.Gradient_Conjugue_Tronque
Optinum.Lagrangien_Augmente
Optinum.Pas_De_Cauchy
Optinum.Regions_De_Confiance
Optinum.Algorithme_De_Newton
— MethodApproximation de la solution du problème $\min_{x \in \mathbb{R}^{n}} f(x)$ en utilisant l'algorithme de Newton
Syntaxe
xk,f_min,flag,nb_iters = Algorithme_de_Newton(f,gradf,hessf,x0,option)
Entrées :
- f : (Function) la fonction à minimiser
- gradf : (Function) le gradient de la fonction f
- hessf : (Function) la Hessienne de la fonction f
- x0 : (Array{Float,1}) première approximation de la solution cherchée
- options : (Array{Float,1})
- max_iter : le nombre maximal d'iterations
- Tol_abs : la tolérence absolue
- Tol_rel : la tolérence relative
Sorties:
- xmin : (Array{Float,1}) une approximation de la solution du problème : $\min_{x \in \mathbb{R}^{n}} f(x)$
- f_min : (Float) $f(x_{min})$
- flag : (Integer) indique le critère sur lequel le programme à arrêter
- 0 : Convergence
- 1 : stagnation du xk
- 2 : stagnation du f
- 3 : nombre maximal d'itération dépassé
- nb_iters : (Integer) le nombre d'itérations faites par le programme
Exemple d'appel
using Optinum
f(x)=100*(x[2]-x[1]^2)^2+(1-x[1])^2
gradf(x)=[-400*x[1]*(x[2]-x[1]^2)-2*(1-x[1]) ; 200*(x[2]-x[1]^2)]
hessf(x)=[-400*(x[2]-3*x[1]^2)+2 -400*x[1];-400*x[1] 200]
x0 = [1; 0]
options = []
xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f,gradf,hessf,x0,options)
Optinum.Gradient_Conjugue_Tronque
— MethodMinimise le problème : $min_{||s||< \delta_{k}} q_k(s) = s^{t}g + (1/2)s^{t}Hs$ pour la $k^{ème}$ itération de l'algorithme des régions de confiance
Syntaxe
sk = Gradient_Conjugue_Tronque(fk,gradfk,hessfk,option)
Entrées :
- gradfk : (Array{Float,1}) le gradient de la fonction f appliqué au point xk
- hessfk : (Array{Float,2}) la Hessienne de la fonction f appliqué au point xk
- options : (Array{Float,1})
- delta : le rayon de la région de confiance
- max_iter : le nombre maximal d'iterations
- tol : la tolérance pour la condition d'arrêt sur le gradient
Sorties:
- s : (Array{Float,1}) le pas s qui approche la solution du problème : $min_{||s||< \delta_{k}} q(s)$
Exemple d'appel:
gradf(x)=[-400*x[1]*(x[2]-x[1]^2)-2*(1-x[1]) ; 200*(x[2]-x[1]^2)]
hessf(x)=[-400*(x[2]-3*x[1]^2)+2 -400*x[1];-400*x[1] 200]
xk = [1; 0]
options = []
s = Gradient_Conjugue_Tronque(gradf(xk),hessf(xk),options)
Optinum.Lagrangien_Augmente
— MethodRésolution des problèmes de minimisation sous contraintes d'égalités
Syntaxe
Lagrangien_Augmente(algo,fonc,contrainte,gradfonc,hessfonc,grad_contrainte,
hess_contrainte,x0,options)
Entrées
- algo : (String) l'algorithme sans contraintes à utiliser:
- "newton" : pour l'algorithme de Newton
- "cauchy" : pour le pas de Cauchy
- "gct" : pour le gradient conjugué tronqué
- fonc : (Function) la fonction à minimiser
- contrainte : (Function) la contrainte [x est dans le domaine des contraintes ssi $c(x)=0$]
- gradfonc : (Function) le gradient de la fonction
- hessfonc : (Function) la hessienne de la fonction
- grad_contrainte : (Function) le gradient de la contrainte
- hess_contrainte : (Function) la hessienne de la contrainte
- x0 : (Array{Float,1}) la première composante du point de départ du Lagrangien
- options : (Array{Float,1})
- epsilon : utilisé dans les critères d'arrêt
- tol : la tolérance utilisée dans les critères d'arrêt
- itermax : nombre maximal d'itération dans la boucle principale
- lambda0 : la deuxième composante du point de départ du Lagrangien
- mu0,tho : valeurs initiales des variables de l'algorithme
Sorties
- xmin : (Array{Float,1}) une approximation de la solution du problème avec contraintes
- fxmin : (Float) $f(x_{min})$
- flag : (Integer) indicateur du déroulement de l'algorithme
- 0 : convergence
- 1 : nombre maximal d'itération atteint
- (-1) : une erreur s'est produite
- niters : (Integer) nombre d'itérations réalisées
Exemple d'appel
using LinearAlgebra
f(x)=100*(x[2]-x[1]^2)^2+(1-x[1])^2
gradf(x)=[-400*x[1]*(x[2]-x[1]^2)-2*(1-x[1]) ; 200*(x[2]-x[1]^2)]
hessf(x)=[-400*(x[2]-3*x[1]^2)+2 -400*x[1];-400*x[1] 200]
algo = "gct" # ou newton|gct
x0 = [1; 0]
options = []
contrainte(x) = (x[1]^2) + (x[2]^2) -1.5
grad_contrainte(x) = [2*x[1] ;2*x[2]]
hess_contrainte(x) = [2 0;0 2]
output = Lagrangien_Augmente(algo,f,contrainte,gradf,hessf,grad_contrainte,hess_contrainte,x0,options)
Optinum.Pas_De_Cauchy
— MethodApproximation de la solution du sous-problème $q_k(s) = s^{t}g + (1/2)s^{t}Hs$ avec $s=-t g_k,t > 0,||s||< \delta_k$
Syntaxe
s1, e1 = Pas_De_Cauchy(gradient,Hessienne,delta)
Entrées
- gradfk : (Array{Float,1}) le gradient de la fonction f appliqué au point $x_k$
- hessfk : (Array{Float,2}) la Hessienne de la fonction f appliqué au point $x_k$
- delta : (Float) le rayon de la région de confiance
Sorties
- s : (Array{Float,1}) une approximation de la solution du sous-problème
- e : (Integer) indice indiquant l'état de sortie: si g != 0 si on ne sature pas la boule e <- 1 sinon e <- -1 sinon e <- 0
Exemple d'appel
g1 = [0; 0]
H1 = [7 0 ; 0 2]
delta1 = 1
s1, e1 = Pas_De_Cauchy(g1,H1,delta1)
Optinum.Regions_De_Confiance
— MethodMinimise une fonction en utilisant l'algorithme des régions de confiance avec - le pas de Cauchy ou - le pas issu de l'algorithme du gradient conjugue tronqué
Syntaxe
xk, nb_iters, f(xk), flag = Regions_De_Confiance(algo,f,gradf,hessf,x0,option)
Entrées :
- algo : (String) string indicant la méthode à utiliser pour calculer le pas
- "gct" : pour l'algorithme du gradient conjugué tronqué
- "cauchy": pour le pas de Cauchy
- f : (Function) la fonction à minimiser
- gradf : (Function) le gradient de la fonction f
- hessf : (Function) la hessiene de la fonction à minimiser
- x0 : (Array{Float,1}) point de départ
- options : (Array{Float,1})
- deltaMax : utile pour les m-à-j de la région de confiance $R_{k}=\left\{x_{k}+s ;\|s\| \leq \Delta_{k}\right\}$
- gamma1,gamma2 : $0 < \gamma_{1} < 1 < \gamma_{2}$ pour les m-à-j de $R_{k}$
- eta1,eta2 : $0 < \eta_{1} < \eta_{2} < 1$ pour les m-à-j de $R_{k}$
- delta0 : le rayon de départ de la région de confiance
- max_iter : le nombre maximale d'iterations
- Tol_abs : la tolérence absolue
- Tol_rel : la tolérence relative
Sorties:
- xmin : (Array{Float,1}) une approximation de la solution du problème : $min_{x \in \mathbb{R}^{n}} f(x)$
- fxmin : (Float) $f(x_{min})$
- flag : (Integer) un entier indiquant le critère sur lequel le programme à arrêter
- 0 : Convergence
- 1 : stagnation du $x$
- 2 : stagnation du $f$
- 3 : nombre maximal d'itération dépassé
- nb_iters : (Integer)le nombre d'iteration qu'à fait le programme
Exemple d'appel
algo="gct"
f(x)=100*(x[2]-x[1]^2)^2+(1-x[1])^2
gradf(x)=[-400*x[1]*(x[2]-x[1]^2)-2*(1-x[1]) ; 200*(x[2]-x[1]^2)]
hessf(x)=[-400*(x[2]-3*x[1]^2)+2 -400*x[1];-400*x[1] 200]
x0 = [1; 0]
options = []
xmin, fxmin, flag,nb_iters = Regions_De_Confiance(algo,f,gradf,hessf,x0,options)