A voir également:
- [matlab] minimum fonction
- Fonction si et - Guide
- Âge minimum salle de sport ✓ - Forum Loisirs / Divertissements
- Fonction si avec date ✓ - Forum Excel
- Méthode de gauss matlab ✓ - Forum Matlab
- Boucle for matlab ✓ - Forum Matlab
5 réponses
damlegone32
Messages postés
74
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
31 mai 2011
29
1 mai 2008 à 14:03
1 mai 2008 à 14:03
Salut a toi,
La fonction fmincon peut le faire mais il faut avoir la toolbox optimisation.
Voir l'aide pour l'utilisation ou :
https://www.mathworks.com/help/optim/ug/fmincon.html;jsessionid=87108c0b5820b7a3cf175543e484
N'hésite pas a demander si tu as besoin.
A+
La fonction fmincon peut le faire mais il faut avoir la toolbox optimisation.
Voir l'aide pour l'utilisation ou :
https://www.mathworks.com/help/optim/ug/fmincon.html;jsessionid=87108c0b5820b7a3cf175543e484
N'hésite pas a demander si tu as besoin.
A+
salut,
le problème avec la fonction fmincon c'est que la fonction f(x) à minimiser doit répondre aux conditions suivantes :
c(x)<=0
ceq(x)=0
A.x<=b
Aeq.x=beq
lb<=x<=ub
on a alors x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
le problème c'est que dans mon problème je n'ai pas les conditions 2 3 et 4. Est-ce que je peux encore utilisé cette fonction ? Car j'ai essayé mais je ne sais pas quoi mettre pour mes inconues...
le problème avec la fonction fmincon c'est que la fonction f(x) à minimiser doit répondre aux conditions suivantes :
c(x)<=0
ceq(x)=0
A.x<=b
Aeq.x=beq
lb<=x<=ub
on a alors x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
le problème c'est que dans mon problème je n'ai pas les conditions 2 3 et 4. Est-ce que je peux encore utilisé cette fonction ? Car j'ai essayé mais je ne sais pas quoi mettre pour mes inconues...
Je viens de refaire un essai avec A=[0 0] b=0 et Aeq=[0 0] et beq=0 ensuite g mis lb et ub et j'ai un problème avec ma fonction nonlcon.
je tappe
function[c,ceq]=nonlcon (x)
c= sqrt(x(1)^2+x(2)^2)-10
ceq = sqrt(x(1)^2+x(2)^2)-10
matlab me sort :
"??? function [c,ceq]=nonlcon (x)
|
Error: Function definitions are not permitted at the prompt or in scripts."
pourquoi ??
je tappe
function[c,ceq]=nonlcon (x)
c= sqrt(x(1)^2+x(2)^2)-10
ceq = sqrt(x(1)^2+x(2)^2)-10
matlab me sort :
"??? function [c,ceq]=nonlcon (x)
|
Error: Function definitions are not permitted at the prompt or in scripts."
pourquoi ??
damlegone32
Messages postés
74
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
31 mai 2011
29
2 mai 2008 à 13:04
2 mai 2008 à 13:04
Salut,
As-tu bien enregistré la fonction nonlcon dans un fichier .m à part et du même nom que la fonction (cad nonlcon.m) ?
De plus comme tu n'as pas de contraintes égalitée il faut écrire ceq = 0 (ou ceq = zeros(1,length(c)) ).
Sinon je te conseille de mettre A=[], b=[], Aeq=[], beq=[], lb=[], ub=[] pour que ces paramètres ne soit pas pris en compte (sauf si bien sur tu en as besoin).
Voilou. A+
As-tu bien enregistré la fonction nonlcon dans un fichier .m à part et du même nom que la fonction (cad nonlcon.m) ?
De plus comme tu n'as pas de contraintes égalitée il faut écrire ceq = 0 (ou ceq = zeros(1,length(c)) ).
Sinon je te conseille de mettre A=[], b=[], Aeq=[], beq=[], lb=[], ub=[] pour que ces paramètres ne soit pas pris en compte (sauf si bien sur tu en as besoin).
Voilou. A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
damlegone32
Messages postés
74
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
31 mai 2011
29
2 mai 2008 à 15:37
2 mai 2008 à 15:37
Alors,
0<fval<1 rajoute 2 contraintes en plus : -g(x) < 0 et g(x)-1 < 0.
Donc nonlcon va maintenant s'écrire comme ceci :
function[c,ceq]=nonlcon (x)
load 'constantes.mat';
c(1)= sqrt(x(1)^2+x(2)^2)-10;
c(2)= -(1-A*(x(2)-B-C*x(1))/(R1*x(1)^2+R1*x(2)^2-D*x(2)-E*x(1)));
c(3)= (1-A*(x(2)-B-C*x(1))/(R1*x(1)^2+R1*x(2)^2-D*x(2)-E*x(1)))-1;
ceq = [];
et dans le programme principal :
save 'constantes.mat' 'A' 'B' 'C' 'D' 'E' 'R1', pour que la fonction nonlcon est accès aux constantes.
Voilà mé cé pa sur ke ca marche.
A+
0<fval<1 rajoute 2 contraintes en plus : -g(x) < 0 et g(x)-1 < 0.
Donc nonlcon va maintenant s'écrire comme ceci :
function[c,ceq]=nonlcon (x)
load 'constantes.mat';
c(1)= sqrt(x(1)^2+x(2)^2)-10;
c(2)= -(1-A*(x(2)-B-C*x(1))/(R1*x(1)^2+R1*x(2)^2-D*x(2)-E*x(1)));
c(3)= (1-A*(x(2)-B-C*x(1))/(R1*x(1)^2+R1*x(2)^2-D*x(2)-E*x(1)))-1;
ceq = [];
et dans le programme principal :
save 'constantes.mat' 'A' 'B' 'C' 'D' 'E' 'R1', pour que la fonction nonlcon est accès aux constantes.
Voilà mé cé pa sur ke ca marche.
A+