Set Maximum Number of Generations and Stall Generations
MaxGenerations option determines the maximum number of generations the genetic algorithm takes; see Stopping Conditions for the Algorithm. Increasing
MaxGenerations can improve the final result. The related
MaxStallGenerations option controls the number of steps
ga looks over to see whether it is making progress. Increasing
MaxStallGenerations can enable
ga to continue when the algorithm needs more function evaluations to find a better solution.
For example, optimize
rastriginsfcn using 10 variables with default parameters. To observe the solver's progress as it approaches the minimum value of 0, optimize the logarithm of the function.
rng default % For reproducibility fun = @(x)log(rastriginsfcn(x)); nvar = 10; options = optimoptions('ga','PlotFcn',"gaplotbestf"); [x,fval] = ga(fun,nvar,,,,,,,,options)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×10 -0.0495 -0.0670 -0.0485 0.0174 -0.0087 0.0275 -0.0383 0.0620 -1.0047 -0.0298
fval = 1.4540
ga approaches the optimal point at the origin, it stalls. To obtain a better solution, set the stall generation limit to 500 and the generation limit to 1000.
options = optimoptions(options,'MaxStallGenerations',500,'MaxGenerations',1000); rng default % For reproducibility [x,fval] = ga(fun,nvar,,,,,,,,options)
ga stopped because it exceeded options.MaxGenerations.
x = 1×10 0.0025 -0.0039 0.0021 -0.0030 -0.0053 0.0033 0.0080 0.0012 0.0006 0.0088
fval = -3.1467
This time the solver approaches the true minimum much more closely.