MATLAB: How to use fmincon solver for optimising a continuously varying function

non linear optimisationoptimisation toolsolvers

Hi
I need to optimize a function of the form
y(i)= exp(-a(i)/x(1)) + 1.285 + ((b(i)^2)*x(2)) - (x(3)*c(i)*(1-exp(-c(i)/(x(3)*x(2))));
a(i) and c(i) are inputs. b(i) is dependant on a(i). The matrices a,b,c are obtained first. x(1),x(2),x(3) are the coefficients to be optimized. x>=0 .
When I try to use fmincon solver, it returns an error ::
Error using fmincon (line 607)
User supplied objective function must return a scalar value.
How do I rectify this?
Thanks
Nadia

Best Answer

function y = obj(x, a, b, c)
y = sum( ( exp(-a./x(1)) + 1.285 + ((b.^2).*x(2)) - (x(3).*c.*(1-exp(-c./(x(3).*x(2))))) ).^2 );
You need to recheck your equation as you have a missing ")" in it. I put it at the end.
To use the above:
fmincon( @(x) obj(x, a, b, c), x0, .....)
What will be minimized is the sum of squares. This is, in other words, a least squared minimimization.