Genetic algorithm giving errors - reg

I implemented a flow shop scheduling problem in MATLAB R 2009b. But the same m-file and same data when i want to run in MATLAB R 2013a. It is giving error messages.
I tried to run genetic algorithm with the following line:
[x,fval,reason,output] = ga(fitnessfcn1,numberOfVariables,options)
Error messages are given below:
Error using feval
Undefined function 'gaoutputgen' for input
arguments of type 'struct'.
Error in gaoutput (line 29)
[state,optnew,changed] =
feval(functions{i},options,state,flag,args{i}{:});
Error in gaunc (line 55)
[state,options] =
gaoutput(FitnessFcn,options,state,currentState);
Error in ga (line 348)
[x,fval,exitFlag,output,population,scores]
= gaunc(FitnessFcn,nvars, ...
Error in mainHGA (line 58)
[x,fval,reason,output] =
ga(fitnessfcn1,numberOfVariables,options)
But the same program worked well in MATLAB R 2009b.
How can i run it in MATLAB R 2013a.
Thanks

2 Comments

What options did you pass in?
I used the following options for running the Genetic Algorithm
options = gaoptimset('PopulationType', 'custom');
options = gaoptimset(options,'CreationFcn',inpop, ...
'CrossoverFcn',@mycrossoverOrder, ...
'MutationFcn',@mymutate_RX, ...
'PlotFcns',@gaplotbestf, ...
'Generations',2000,'PopulationSize',200, ...
'OutputFcn',@gaoutputgen,...
'StallGenLimit',2000,'TimeLimit',100,...
'StallTimeLimit',1000,'Vectorized','on');
This program run well in MATLAB R 2009b. But it is showing error messages in MATLAB R 2013a.

Sign in to comment.

 Accepted Answer

According to the 2013a documentation found here, the signature for the output function is
[state,options,optchanged] = myfun(options,state,flag)
with the input arguments are defined as
  • options — Options structure
  • state — Structure containing information about the current generation. The State Structure describes the fields of state.
  • flag — String indicating the current status of the algorithm
Given the error message, Undefined function 'gaoutputgen' for input arguments of type 'struct', I suspect that this function signature changed from R2009b to R2013a to include a struct input (this would be the options). You will need to modify your gaoutputgen to conform to the (new) expected signature.

More Answers (0)

Asked:

on 29 Jan 2017

Answered:

on 31 Jan 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!