Hallo, everyone, I am using fmincon to solve an optimization problem. The main code is shown as below:
x = fmincon(@(x)e1_funcOptimal(x), x_0,[], [], [], [], -10, 10, @(x)e1_consOptimal(x), options);
where e1_funcOptimal(x) is the function provided the objective function for the optimization, and e1_consOptimal(x) is the constraint conditions which x need to satisfy.
The e1_funcOptimal(x) function is shown as below:
tol = 1.0E-13;options = optimset( ... 'Display', 'off', ... 'GradObj', 'on', ... 'GradConstr', 'on', ... 'DerivativeCheck', 'off', ... 'FinDiffType', 'central', ... 'TolFun', tol, ... 'TolX', tol, ... 'TolCon', tol, ... 'algorithm', 'active-set', ... 'MaxFunEvals', inf, ... 'MaxIter', 5000);function obj = e1_funcOptimal(x)obj = -x(1,10);% or obj = -x(10)
% end
It means that I choose the negative value of one of the inputs as objective function.
The error messsage is that
Error using e1_funcOptimalToo many output arguments.Error in @(x)e1_funcOptimal(x)Error in fmincon (line 561) [initVals.f,initVals.g] = feval(funfcn{3},X,varargin{:});Caused by: Failure in initial objective function evaluation. FMINCON cannot continue.
How could I fix the problem. Thanks for reading.
Best Answer