Effacer les filtres
Effacer les filtres

Problems with fmincon constraints

3 vues (au cours des 30 derniers jours)
Edgard El Cham
Edgard El Cham le 25 Oct 2017
Commenté : Edgard El Cham le 25 Oct 2017
Hello,
I am writing an algorithm for a project of mine, and at some point I need to find the value of alpha that will minimize a function subject to constraints.
This is what I have
x1=xi(1)+gammai(1)*alpha;
x2=xi(2)+gammai(2)*alpha;
x3=xd(1)+deltad(1)*alpha;
x4=xd(2)+deltad(1)*alpha;
falpha =matlabFunction((exp(x1))*(4*(x1).^2 + 2*(x2).^2 + 4*(x1)*(x2) + 2*(x2) + 1) + 0*x3 + 0*x4);
c=matlabFunction([-10-x1; x1+9; -x2+1;x2-1.5;-x3;x3-1;-x4;x4-1]);
ceq=matlabFunction([x1*x2-x1-x2+x3+1.5;x1*x2-x4+10]);
const=[c, ceq];
[alpha]=fmincon(falpha,0,[],[],[],[],[],[],const);
This is the error I get: Error using horzcat Nonscalar arrays of function handles are not allowed; use cell arrays instead.

Réponse acceptée

Walter Roberson
Walter Roberson le 25 Oct 2017
const = @(alpha) deal(c(alpha), ceq(alpha));
  1 commentaire
Edgard El Cham
Edgard El Cham le 25 Oct 2017
Thank you, it worked!

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 25 Oct 2017
Modifié(e) : Matt J le 25 Oct 2017
As the error says, your const argument must be a single function handle returning two arguments [c,ceq]. You instead have passed two separate function handles.
  4 commentaires
Edgard El Cham
Edgard El Cham le 25 Oct 2017
Thing is I need to run it in a loop, with changing constraints.
Matt J
Matt J le 25 Oct 2017
That can be done by passing fixed parameters to the constraints.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by