Main Content

Set Maximum Number of Generations and Stall Generations

The 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.

Figure Genetic Algorithm contains an axes object. The axes object with title Best: 1.45396 Mean: 4.52748, xlabel Generation, ylabel Fitness value contains 2 objects of type scatter. These objects represent Best fitness, Mean fitness.

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

As 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.

Figure Genetic Algorithm contains an axes object. The axes object with title Best: -3.14667 Mean: -1.31642, xlabel Generation, ylabel Fitness value contains 2 objects of type scatter. These objects represent Best fitness, Mean fitness.

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.

Related Topics