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