Установите максимальное количество поколений и сваливных поколений

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.

Figure Genetic Algorithm contains an axes. The axes with title Best: 1.45396 Mean: 4.52748 contains 2 objects of type line. 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

Как 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.

Figure Genetic Algorithm contains an axes. The axes with title Best: -3.14667 Mean: -1.31642 contains 2 objects of type line. 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

На этот раз решатель приближается к истинному минимуму гораздо ближе.

Похожие темы