Programmation en matlab

Fermé
Anne-Laure - 26 mai 2005 à 21:39
 amiedz - 6 juil. 2010 à 19:34
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!!!
A voir également:

6 réponses

essai
3
aryam Messages postés 8 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 15 septembre 2007 8
8 déc. 2006 à 13:15
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
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
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
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
aryam Messages postés 8 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 15 septembre 2007 8
22 déc. 2006 à 13:28
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
Letof Messages postés 4 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 24 décembre 2006 3 > aryam Messages postés 8 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 15 septembre 2007
22 déc. 2006 à 18:15
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Bonjour,

Peux-tu poster ton programme...

Merci
0