gamultiobj output function error
Afficher commentaires plus anciens
Hi,
I have a multiobjective opimization problem and want to solve it with gamultiobj. I want to save the optimized values of my objective functions after every iteration in an array. I found the example code for the output function here: http://de.mathworks.com/help/optim/ug/output-functions.html . But when I apply the example code to my problem, like this:
function [history,searchdir] = runfmincon
FitnessFunction = @needfunction;
numberOfVariables = 8;
lb = zeros(1,8);
ub = [];
% Set up shared variables with OUTFUN
history.x = [];
history.fval = [];
searchdir = [];
options = gaoptimset('PlotFcns',@gaplotpareto,'UseParallel',true,'OutputFcns', @outfun,'PopulationSize',5);
xsol = gamultiobj(FitnessFunction,numberOfVariables,[],[],[],[],lb,[],options);
function stop = outfun(x,optimValues,state)
stop = false;
switch state
case 'init'
hold on
case 'iter'
% Concatenate current point and objective function
% value with history. x must be a row vector.
history.fval = [history.fval; optimValues.fval];
history.x = [history.x; x];
% Concatenate current search direction with
% searchdir.
searchdir = [searchdir;...
optimValues.searchdirection'];
plot(x(1),x(2),'o');
% Label points with iteration number and add title.
% Add .15 to x(1) to separate label from plotted 'o'
text(x(1)+.15,x(2),...
num2str(optimValues.iteration));
title('Sequence of Points Computed by fmincon');
case 'done'
hold off
otherwise
end
end
end
I get the following error:
Error using runfmincon/outfun
Too many output arguments.
Error in gaoutput (line 39)
[state,optnew,changed] = feval(functions{i},options.OutputPlotFcnOptions,state,flag,args{i}{:});
Error in gamultiobjsolve (line 13)
[state,options] = gaoutput(FitnessFcn,options,state,currentState);
Error in gamultiobj (line 274)
[x,fval,exitFlag,output,population,scores] = gamultiobjsolve(FitnessFcn,nvars, ...
Error in runfmincon (line 16)
xsol = gamultiobj(FitnessFunction,numberOfVariables,[],[],[],[],lb,[],options);
It would be great, if someone could help me out
Réponse acceptée
Plus de réponses (2)
Walter Roberson
le 1 Sep 2016
0 votes
1 commentaire
Maximilian Ernst
le 1 Sep 2016
Modifié(e) : Maximilian Ernst
le 1 Sep 2016
Modess Seyednezhad
le 31 Mai 2020
Modifié(e) : Modess Seyednezhad
le 31 Mai 2020
0 votes
Hi,
I have the same issue. The syntaxt page was not useful for me. I could not find my error.
function [history,searchdir] = runmultiobjfunc
% Set up shared variables with OUTFUN
history.x = [];
history.fval = [];
searchdir = [];
% call optimization
nvar = 2;
Lb = [1, 3];
Ub = [19.2, 6.27];
options = optimoptions(@gamultiobj,'OutputFcn',@outfun,...
'Display','iter', 'MaxGenerations',200,'PopulationSize',50);
xsol = gamultiobj(@objfun,nvar,[],[],[],[],Lb,Ub,options);
% Set up output function
function stop = outfun(x,optimValues,state)
stop = false;
switch state
case 'init'
hold on
case 'iter'
% Concatenate current point and objective function
% value with history. x must be a row vector.
history.fval = [history.fval; optimValues.fval];
history.x = [history.x; x];
% Concatenate current search direction with searchdir.
searchdir = [searchdir;...
optimValues.searchdirection'];
plot(x(1),x(2),'o');
% Label points with iteration number and add title.
% Add .15 to x(1) to separate label from plotted 'o'
text(x(1)+.15,x(2),...
num2str(optimValues.iteration));
title('Sequence of Points Computed by gamultiobj');
case 'done'
hold off
otherwise
end
end
end
The error is:
Error using runmultiobjfunc/outfun
Too many output arguments.
Error in gaoutput (line 39)
[state,optnew,changed] = feval(functions{i},options.OutputPlotFcnOptions,state,flag,args{i}{:});
Error in gamultiobjsolve (line 13)
[state,options] = gaoutput(FitnessFcn,options,state,currentState);
Error in gamultiobj (line 303)
[x,fval,exitFlag,output,population,scores] = gamultiobjsolve(FitnessFcn,nvars, ...
Error in runmultiobjfunc (line 15)
xsol = gamultiobj(@objfun,nvar,[],[],[],[],Lb,Ub,options);
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!