Outils de visualisation

Contents

function VisualisationTP()

clear all;
close all;

Choix de la fonction à minimiser

f = @f5;

Comparaison des méthodes selon différents points de départ.

for iter=1:5

Initialisation du point de départ de la recherche La dimension est restreinte à 2 pour la visualisation

    n = 2;
    x = 3*randn(1,n);

Initialisation des paramètres

    epsilon = 0.00001;
    maxiter = 10;

Initialisation des compteurs d'évaluation de la fonction et se son gradient

    global NB_EVAL_FONC;
    global NB_EVAL_GRAD;
    NB_EVAL_FONC = 0;
    NB_EVAL_GRAD = 0;

Lancement avec recherche Dichotomique

    hold off;
    disp('Avec recherche dichotomique');
    lineaire = @dichotomic;
    tau = 0.1:0.4:0.9;
    for i=1:length(tau)
        tic;
        [xD,kc,xsuite] = bfgsVisu(f,x,epsilon,maxiter,lineaire,tau(i));
        toc
        disp(['Nombre d''évaluations de la fonction : ',num2str(NB_EVAL_FONC), ' et de son gradient : ', num2str(NB_EVAL_GRAD)]);

        [t,v] = feval(f,x);
        plot3(x(:,1),x(:,2),v,'ko','MarkerSize',8,'Linewidth',2);
        hold on;
        v = zeros(1,size(xsuite,1));
        for k=1:size(xsuite,1)
            [t,v(k)] = feval(f,xsuite(k,:));
        end
        if (kc==maxiter)
            plot3(xsuite(:,1),xsuite(:,2),v,'gx-','MarkerSize',6,'Linewidth',2);
            disp('pas de convergence');
        else
            plot3(xsuite(:,1),xsuite(:,2),v,'rx-','MarkerSize',6,'Linewidth',2);
        end
        NB_EVAL_FONC = 0;
        NB_EVAL_GRAD = 0;
    end
    visualiser2Db(f,xlim,ylim);
Avec recherche dichotomique
Elapsed time is 0.026160 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 36
Elapsed time is 0.005930 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 35
pas de convergence
Elapsed time is 0.002025 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 30
Avec recherche dichotomique
Elapsed time is 0.003703 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 59
Elapsed time is 0.002937 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 42
pas de convergence
Elapsed time is 0.003078 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 47
Avec recherche dichotomique
Elapsed time is 0.004269 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 69
Elapsed time is 0.002625 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 36
pas de convergence
Elapsed time is 0.002748 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 41
Avec recherche dichotomique
Elapsed time is 0.003680 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 59
Elapsed time is 0.002989 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 43
pas de convergence
Elapsed time is 0.003255 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 49
pas de convergence
Avec recherche dichotomique
Elapsed time is 0.003079 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 48
Elapsed time is 0.002707 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 37
pas de convergence
Elapsed time is 0.002874 seconds.
Nombre d'évaluations de la fonction : 0 et de son gradient : 43

Lancement avec recherche Armijo

    hold off;
    disp('Avec recherche Armijo');
    NB_EVAL_FONC = 0;
    NB_EVAL_GRAD = 0;
    lineaire = @armijo;
    sigma = 0.05:0.2:0.45;
    for i=1:length(tau)
        for j=1:length(sigma)
            tic;
            [xA,kc,xsuite] = bfgsVisu(f,x,epsilon,maxiter,lineaire,tau(i),sigma(j));
            toc
            disp(['Nombre d''évaluations de la fonction : ',num2str(NB_EVAL_FONC), ' et de son gradient : ', num2str(NB_EVAL_GRAD)]);
            [t,v] = feval(f,x);
            plot3(x(:,1),x(:,2),v,'ko','MarkerSize',8,'Linewidth',2);
            hold on;
            v = zeros(1,size(xsuite,1));
            for k=1:size(xsuite,1)
                [t,v(k)] = feval(f,xsuite(k,:));
            end
            if (kc==maxiter)
                plot3(xsuite(:,1),xsuite(:,2),v,'gx-','MarkerSize',6,'Linewidth',2);
                disp('pas de convergence');
            else
                plot3(xsuite(:,1),xsuite(:,2),v,'rx-','MarkerSize',6,'Linewidth',2);
            end

            NB_EVAL_FONC = 0;
            NB_EVAL_GRAD = 0;
        end
    end
    visualiser2Db(f,xlim,ylim);
Avec recherche Armijo
Elapsed time is 0.013869 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 19
Elapsed time is 0.005049 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 19
Elapsed time is 0.001371 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 19
Elapsed time is 0.000883 seconds.
Nombre d'évaluations de la fonction : 8 et de son gradient : 12
Elapsed time is 0.000852 seconds.
Nombre d'évaluations de la fonction : 8 et de son gradient : 12
Elapsed time is 0.001295 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 18
Elapsed time is 0.001545 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 22
Elapsed time is 0.001865 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 28
Elapsed time is 0.001578 seconds.
Nombre d'évaluations de la fonction : 20 et de son gradient : 24
Avec recherche Armijo
Elapsed time is 0.001889 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.001770 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.002321 seconds.
Nombre d'évaluations de la fonction : 23 et de son gradient : 33
Elapsed time is 0.001755 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.001725 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.002043 seconds.
Nombre d'évaluations de la fonction : 21 et de son gradient : 29
Elapsed time is 0.001845 seconds.
Nombre d'évaluations de la fonction : 18 et de son gradient : 26
Elapsed time is 0.002086 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 30
Elapsed time is 0.001866 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 28
Avec recherche Armijo
Elapsed time is 0.001907 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.001765 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.002785 seconds.
Nombre d'évaluations de la fonction : 28 et de son gradient : 39
pas de convergence
Elapsed time is 0.001722 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.001749 seconds.
Nombre d'évaluations de la fonction : 16 et de son gradient : 24
Elapsed time is 0.002121 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 30
Elapsed time is 0.001865 seconds.
Nombre d'évaluations de la fonction : 18 et de son gradient : 26
Elapsed time is 0.002075 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 30
Elapsed time is 0.002482 seconds.
Nombre d'évaluations de la fonction : 30 et de son gradient : 37
Avec recherche Armijo
Elapsed time is 0.002447 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 32
Elapsed time is 0.002334 seconds.
Nombre d'évaluations de la fonction : 22 et de son gradient : 32
Elapsed time is 0.002749 seconds.
Nombre d'évaluations de la fonction : 28 et de son gradient : 39
pas de convergence
Elapsed time is 0.001851 seconds.
Nombre d'évaluations de la fonction : 18 et de son gradient : 26
Elapsed time is 0.001896 seconds.
Nombre d'évaluations de la fonction : 19 et de son gradient : 27
Elapsed time is 0.002670 seconds.
Nombre d'évaluations de la fonction : 29 et de son gradient : 39
Elapsed time is 0.002185 seconds.
Nombre d'évaluations de la fonction : 24 et de son gradient : 32
Elapsed time is 0.002538 seconds.
Nombre d'évaluations de la fonction : 30 et de son gradient : 38
Elapsed time is 0.004344 seconds.
Nombre d'évaluations de la fonction : 61 et de son gradient : 69
Avec recherche Armijo
Elapsed time is 0.001964 seconds.
Nombre d'évaluations de la fonction : 17 et de son gradient : 25
Elapsed time is 0.001823 seconds.
Nombre d'évaluations de la fonction : 17 et de son gradient : 25
Elapsed time is 0.002392 seconds.
Nombre d'évaluations de la fonction : 24 et de son gradient : 34
Elapsed time is 0.001357 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 19
Elapsed time is 0.001353 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 19
Elapsed time is 0.001502 seconds.
Nombre d'évaluations de la fonction : 15 et de son gradient : 21
Elapsed time is 0.001347 seconds.
Nombre d'évaluations de la fonction : 13 et de son gradient : 19
Elapsed time is 0.001601 seconds.
Nombre d'évaluations de la fonction : 17 et de son gradient : 23
Elapsed time is 0.001991 seconds.
Nombre d'évaluations de la fonction : 24 et de son gradient : 30
end
end

Retour au sujet