Azzera filtri
Azzera filtri

Genetic algorithm giving errors - reg

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
Walter Roberson
Walter Roberson il 29 Gen 2017
What options did you pass in?
Kallam Haranadha Reddy
Kallam Haranadha Reddy il 31 Gen 2017
Modificato: Geoff Hayes il 31 Gen 2017
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.

Accedi per commentare.

Risposta accettata

Geoff Hayes
Geoff Hayes il 31 Gen 2017
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.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by