Clear Filters
Clear Filters

Problems with fmincon constraints

3 views (last 30 days)
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.

Accepted Answer

Walter Roberson
Walter Roberson on 25 Oct 2017
const = @(alpha) deal(c(alpha), ceq(alpha));

More Answers (1)

Matt J
Matt J on 25 Oct 2017
Edited: Matt J on 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 Comments
Edgard El Cham
Edgard El Cham on 25 Oct 2017
Thing is I need to run it in a loop, with changing constraints.
Matt J
Matt J on 25 Oct 2017
That can be done by passing fixed parameters to the constraints.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!