Recherche linéaire Armijo

Le principe de la recherche linéaire Armijo est de tester comme valeur candidate de $t$ les puissances successives d'un paramètre $\tau$ jusqu'à ce que le critère soit respecté. Ce critère utilise l'évalution de la fonction en plus de l'évaluation de son gradient.

Contents

function[t] = armijo(f,x,d,to,sigma)

Initialisation

$0<\tau<1$

$0<\sigma<0.5$

if nargin==3
    to = 0.5;
    sigma = 0.25;
end
[grad,fonc] = feval(f,x);
k = 0;
dif = 1;
while (dif>0) && (k<100)

Mise à jour de t

    t = to^k;

Calcul du critère

On accepte $t$ si il vérifie $f(x+td)-f(x) < t \sigma \bigl \langle \nabla f(x),d \bigr \rangle$

    [grad2,fonc2] = feval(f,x+t*d);
    dif = (fonc2-fonc - t*sigma*grad*d');
    k = k+1;
end
end

Retour au sujet