MaxGenerations параметр определяет максимальное количество поколений, которое занимает генетический алгоритм; см. раздел Условия остановки алгоритма. Увеличение MaxGenerations может улучшить конечный результат. Связанное MaxStallGenerations опция управляет количеством шагов ga смотрит на то, добивается ли она прогресса. Увеличение MaxStallGenerations может включить ga для продолжения, когда алгоритму требуется больше оценок функций, чтобы найти лучшее решение.
Например, оптимизировать rastriginsfcn с использованием 10 переменных с параметрами по умолчанию. Чтобы наблюдать за ходом выполнения решателя по мере приближения к минимальному значению 0, оптимизируйте логарифм функции.
rng default % For reproducibility fun = @(x)log(rastriginsfcn(x)); nvar = 10; options = optimoptions('ga','PlotFcn',"gaplotbestf"); [x,fval] = ga(fun,nvar,[],[],[],[],[],[],[],options)
Optimization terminated: average change in the fitness value 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 подходит к оптимальной точке в начале координат, она останавливается. Чтобы получить лучшее решение, установите предел генерации stall 500, а предел генерации 1000.
options = optimoptions(options,'MaxStallGenerations',500,'MaxGenerations',1000); rng default % For reproducibility [x,fval] = ga(fun,nvar,[],[],[],[],[],[],[],options)
Optimization terminated: maximum number of generations exceeded.

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
На этот раз решатель приближается к истинному минимуму гораздо ближе.