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