Problems with fmincon constraints

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

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

How can I fix const so that the fmincon works? I do not want you to solve it for me, maybe give me an example, if possible. Thanks
function [c,ceq]=myConstraints(alpha)
....
Thing is I need to run it in a loop, with changing constraints.
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!