Определите максимальный номер поколений

Опция 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 влияет на поведение алгоритма.

Похожие темы