MATLAB: Fmincon objective function problem

fminconoptimization

I need to maximize the following objective function in Matlab:
mean (a*I'*x1+b*(ones(1,24)-I)'*x1)-mean((a*(ones(1,24)-I)'*y1)+(b*I'*y1))
I made two .m file: 1) In the objfun.m file I defined the objective function as:
function f = objfun(x)
f = mean (a*I'*x1+b*(ones(1,24)-I)'*x1)-mean((a*(ones(1,24)-I)'*y1)+(b*I'*y1));
2) In the second (main) .m file I have my parameters and calculations for a, b and I and also below constraints and fmincon:
lb = [0,0];
ub = [10,10];
x0 = [1,2];
[x,fval] = fmincon(@objfun,x0,[],[],[],[],lb,ub)
When I run the program I get below error for fmincon:
''Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.'' Would you please advise how can I fix this problem? Is there anything wrong with my objective function, as it is a function of x1 and y1 but I have objfun(x) only? Or do I call the function wrongly? Any help is appreciated!

Best Answer

Guessing about what a, b, x1, y1 are for:
First make sure x1 and y1 are defined.
Then
f = @(ab) mean (ab(1)*I'*x1+ab(2)*(ones(1,24)-I)'*x1)-mean((ab(1)*(ones(1,24)-I)'*y1)+(ab*2)*I'*y1));
lb = [0,0];
ub = [10,10];
x0 = [1,2];
[ab,fval] = fmincon(@objfun,x0,[],[],[],[],lb,ub)
a = ab(1); b = ab(2);
Related Question