using genetic algorithm for optimization
4 views (last 30 days)
i have this error message
??? Subscripted assignment dimension mismatch.
Error in ==> fcnvectorizer at 14
y(i,:) = feval(fun,(pop(i,:)));
Error in ==> makeState at 47
Error in ==> gaunc at 41
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
Error in ==> ga at 279
[x,fval,exitFlag,output,population,scores] = gaunc(FitnessFcn,nvars, ...
Error in ==> main at 11
Failure in user-supplied fitness function evaluation. GA cannot continue.
Alan Weiss on 29 Mar 2013
Apparently there is an error in your fitness function. If it isn't too long, please post it so we can see what might be the problem.
And please include your gaoptimset calls and your function call to ga (e.g., x = ga(@main,4,A,b) )
MATLAB mathematical toolbox documentation
More Answers (3)
Walter Roberson on 29 Mar 2013
Your fitness function is returning your input values x_pop as its first return value. It should not be doing that. The documentation indicates,
Handle to the fitness function. The fitness function should accept a row vector of length nvars and return a scalar value.
When the 'Vectorized' option is 'on', fitnessfcn should accept a pop-by-nvars matrix, where pop is the current population size. In this case fitnessfcn should return a vector the same length as pop containing the fitness function values. fitnessfcn should not assume any particular size for pop, since ga can pass a single member of a population even in a vectorized calculation.
So your fitnessfcn should only be returning a single variable, not two variables, and (unless you have Vectorized turned on) return a scalar such as fx_val .