Documentation des fonctions

Documentation de toute les fonctions du package Optinum

Optinum.Algorithme_De_NewtonMethod

Approximation 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_TronqueMethod

Minimise 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_AugmenteMethod

Ré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})
    1. epsilon : utilisé dans les critères d'arrêt
    2. tol : la tolérance utilisée dans les critères d'arrêt
    3. itermax : nombre maximal d'itération dans la boucle principale
    4. lambda0 : la deuxième composante du point de départ du Lagrangien
    5. 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_CauchyMethod

Approximation 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_ConfianceMethod

Minimise 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)