Programmation en matlab

Anne-Laure -  
 amiedz -
Bonjour,
je débute en programmation en matlab et j'ai beaucoup de mal alors je viens vous demander votre aide!
En fait je dois minimiser une fonction:
exp(x-2)+y^4+(95-x-y)^2
sachant que x+y appartient à [1,100] et que ce st des entiers.
je dois représenter le graphe: je n'y arrive pas! j'ai eu beau lire un certain nombre de docs, rien ne marche!
je dois aussi programmer l'algorithme du gradient à pas optimal: je l'ai bien compris ms je n'arrive pas à l'implémenter sur matlab.
y aurait il une bonne âme pour m'aider?
merci beaucoup!!!

6 réponses

  1. Letof
     
    essai
    3
  2. aryam Messages postés 8 Statut Membre 8
     
    ok anne
    essayes 2 m'envoyer l'algo & j ferais mon possible pr t'aider
    pr la min essayes la commande QP . & sert toi surtt du help il est en englais c vrai mais il est très intérressent.

    mon @e-mail est: aryam_ach@hotmail.com

    à+
    1
    1. amiedz
       
      bonsoir j'ai lu votre message, ca m'interesse la commande prédictive svp si vous avez des programmes sur la commande prédictive, est ce que vous pouvez biien me leq envoiyez à mon email amiedz2003@yahoo.fr et merci.
      0
  3. abdou
     
    Programmer une fonction MATLAB Y=f(x) calculant la valeur f(x) pour f(x)=x tan(x)-1 par la méthode de point fixe et dichotomie
    1
  4. Cris
     
    Bonjour, URGENT
    J'e n'arrive pas à utiliser Matlab concernant un algorithme ex

    function ObjVal=crit2(dat)
    %variables
    k1=dat(:,1);
    k2=dat(:,2);
    k3=dat(:,3);
    k4=dat(:,4);

    for i=1:length(k1),
    ObjVal(i)=(k4(l)-6)^2+(2*k2(j)-k1(i)-3+k4(l)-2*k3(k)-11)^2+(3*k3(k)-k3(k)*k2(j)+3*k1(i)+k1(i)*k4(l)-6)^2;%critère
    end

    J'ai programmé cette fonction avec un seul inconnu X donc F(X)= 3X² + 5X +21 ..... Donc jusque là c'est bon.

    Maintenant je souhaiterais pouvoir programmer la fonction ci-dessus avec comme inconnues K1, K2, K3, et K4 sans toucher à ObjVal(i) ???????
    0
    1. aryam Messages postés 8 Statut Membre 8
       
      slt Cris

      si tu veux m'envoyer l'algorithme comme ça je peux comprndre ce que tu veux et je peux mieux t'aider.

      à+
      0
      1. Letof Messages postés 4 Statut Membre 3 > aryam Messages postés 8 Statut Membre
         
        Bonjour,

        avant tout je me suis planté cris et Letof c'est moi....

        auditeur au Conservatoire National des Arts et Métiers de St Etienne, je prépare un diplôme d'ingénieur en Automatisme Industriel.
        Dans le cursus de cette formation, je dois réaliser un exposé sur un sujet que le professeur, responsable de la filiaire, m'a attribué. J'ai six semaines pour rédiger un compte-rendu avec soutenance à l'oral. (date de l'oral le 03/01/2007)


        Le sujet qui m'a été attribué sont : Les Algorithmes Génétiques (principe et application à l'automatique)

        J'ai récupéré des fichiers.m utilisant les Algorithmes Génétiques.
        En revanche j'ai du mal à paramétrer l'algorithme :



        J'ai fai un premier essai sur une fonction F(X) avec comme critère la minimisation de cette fonction ça marche....

        function algogen(NIND,MAXGEN,NVAR)

        PRECI = 20;
        GGAP = 0.9;

        FieldD = [rep([PRECI],[1, NVAR]); rep([0;3],[1, NVAR]);...
        rep([1; 0; 1 ;1], [1, NVAR])];

        Chrom = crtbp(NIND, NVAR*PRECI);
        Best = NaN*ones(MAXGEN,1);
        gen = 0;
        ObjV = crit3(bs2rv(Chrom,FieldD));
        Best(gen+1) = min(ObjV);
        plot(log10(Best),'ro');xlabel('generation'); ylabel('log10(f(x))');
        text(0.5,0.95,['Best = ', num2str(Best(gen+1))],'Units','normalized');
        drawnow;

        while gen < MAXGEN,
        FitnV = ranking(ObjV);
        SelCh = select('sus', Chrom, FitnV, GGAP);
        SelCh = recombin('xovsp',SelCh,0.7);
        SelCh = mut(SelCh);
        ObjVSel = crit3(bs2rv(SelCh,FieldD));
        [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
        gen = gen+1;
        Best(gen+1) = min(ObjV);
        plot(log10(Best),'ro'); xlabel('generation'); ylabel('log10(f(x))');
        text(0.5,0.95,['Best = ', num2str(Best(gen+1))],'Units','normalized');
        drawnow;
        Dat=bs2rv(Chrom,FieldD);
        Crit=crit2(bs2rv(Chrom,FieldD));
        [Dat Crit]
        [MinCrit Indice]=min(Crit);
        [Dat(Indice,:) Crit2(Indice)]
        pause
        end


        avec la fonction crit3 :


        function ObjVal=crit3(dat)
        %variables
        x=dat(:,1);
        for i=1:length(x),
        ObjVal(i)=-(1/((x(i)-0.3)^2+0.1)+1/((x(i)-1.5)^2+0.2));%critère
        end
        ObjVal=ObjVal';

        ************************************************************************************


        Par la suite je souhaite faire la même chose mais avec une équation à 4 inconnues


        function algogen3(NIND,MAXGEN,NVAR)

        PRECI = 20;
        GGAP = 0.9;

        FieldD = [rep([PRECI],[1, NVAR]); rep([0;3],[1, NVAR]);...
        rep([1; 0; 1 ;1], [1, NVAR])];

        Chrom = crtbp(NIND, NVAR*PRECI);
        Best = NaN*ones(MAXGEN,1);
        gen = 0;
        ObjV = crit2(bs2rv(Chrom,FieldD));
        Best(gen+1) = min(ObjV);
        plot(log10(Best),'ro');xlabel('generation'); ylabel('log10(f(x))');
        text(0.5,0.95,['Best = ', num2str(Best(gen+1))],'Units','normalized');
        drawnow;

        while gen < MAXGEN,
        FitnV = ranking(ObjV);
        SelCh = select('sus', Chrom, FitnV, GGAP);
        SelCh = recombin('xovsp',SelCh,0.7);
        SelCh = mut(SelCh);
        ObjVSel = crit2(bs2rv(SelCh,FieldD));
        [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
        gen = gen+1;
        Best(gen+1) = -min(ObjV);
        plot(log10(Best),'ro'); xlabel('generation'); ylabel('log10(f(x))');
        text(0.5,0.95,['Best = ', num2str(Best(gen+1))],'Units','normalized');
        drawnow;
        Dat=bs2rv(Chrom,FieldD);
        Crit=crit2(bs2rv(Chrom,FieldD));
        [Dat Crit]
        [MinCrit Indice]=min(Crit);
        [Dat(Indice,:) Crit3(Indice)]
        pause
        end


        function ObjVal=crit2(dat)
        %variables
        k1=dat(:,1);
        k2=dat(:,2);
        k3=dat(:,3);
        k4=dat(:,4);
        for i=1:length(k1),
        ObjVal(i)=(k4(i)-6)^2+(2*k2(i)-k1(i)-3+k4(i)-2*k3(i)-11)^2+(3*k3(i)-k3(i)*k2(i)+3*k1(i)+k1(i)*k4(i)-6)^2;%critère
        end
        ObjVal=ObjVal';



        Problème je ne sais pas comment on fait pour trouver les coefficients K1, K2, K3 et K4 , mon algorithme fait un tour pour la valeur K1 et il m'affiche un message d'erreur :




        ??? Index exceeds matrix dimensions.

        Error in ==> C:\matlabR12\toolbox\ag\SRC\crit2.m
        On line 4 ==> k2=dat(:,2);

        Error in ==> C:\matlabR12\toolbox\ag\SRC\algogen.m
        On line 34 ==> [Dat(Indice,:) Crit2(Indice)]




        Please help me.........


        j'ai eut votre email dans le forum, c'est pour cela que je me suis permis de vous contacter

        Mon email :
        Letof38@free.fr

        Cordialement....
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Kantor
     
    Bonjour,
    j'ai un probleme similaire, je parcours un fichier texte (csv) et je remplis ma mes matrices avec les données qui s'y trouvent. Quand je ne m'intéresse qu'aux premieres colonnes tout va bien; par contre, quand je dépasse la colonne 10 il me dit "index exceeds matrice dimensions" :-/

    Est-ce que quelqu'un peut m'aider svp?
    0
  7. Gwen
     
    Bonjour,

    Peux-tu poster ton programme...

    Merci
    0