Опция Generations в Stopping criteria определяет максимальное количество поколений, запуски генетического алгоритма для — видят Останавливающиеся Условия для Алгоритма. Увеличение опции Generations часто улучшает конечный результат.
Как пример, измените настройки в приложении Оптимизации можно следующим образом:
Установите Fitness function на @rastriginsfcn
.
Установите Number of variables на 10
.
Выберите Best fitness в панели Plot functions.
Установите Generations на Inf
.
Установите Stall generations на Inf
.
Установите Stall time limit на Inf
.
Запустите генетический алгоритм приблизительно для 300 поколений и нажмите Stop. Следующий рисунок показывает получившийся лучший график фитнеса после 300 поколений.
Обратите внимание на то, что остановы алгоритма приблизительно при генерации номер 170 — то есть, нет никакого мгновенного улучшения функции фитнеса после генерации 170. Если вы восстанавливаете Stall generations к его значению по умолчанию 50
, алгоритм мог остановиться приблизительно при генерации номер 220. Если генетический алгоритм неоднократно останавливается с текущей установкой для Generations, можно попытаться увеличить и Generations и опции Stall generations, чтобы улучшить результаты. Однако изменение других опций может быть более эффективным.
Параметрами командной строки, относящимися к Generations и Stall generations, является MaxGenerations
и MaxStallGenerations
, соответственно. Запускать этот пример в командной строке:
options = optimoptions('ga','MaxGenerations',300,... 'MaxStallGenerations',Inf,'PlotFcn',@gaplotbestf); x = ga(@rastriginsfcn,10,[],[],[],[],[],[],[],options);
Когда Mutation function установлен в Gaussian
, увеличение значения Generations может на самом деле ухудшить конечный результат. Это может произойти, потому что Гауссова функция мутации уменьшает средний объем мутации в каждой генерации фактором, который зависит от значения, заданного в Generations. Следовательно, установка для Generations влияет на поведение алгоритма.