Минимизируйте функцию Рэстриджина

Функция Рэстриджина

Этот раздел представляет пример, который показывает, как найти минимум функции Рэстриджина, функция, которая часто используется, чтобы протестировать генетический алгоритм.

Для двух независимых переменных функция Рэстриджина задана как

Ras(x)=20+x12+x2210(cos2πx1+cos2πx2).

Программное обеспечение Global Optimization Toolbox содержит rastriginsfcn.m файл, который вычисляет значения функции Рэстриджина. Следующий рисунок показывает график функции Рэстриджина.

Когда график показывает, функция Рэстриджина имеет много локальных минимумов — “овраги” в графике. Однако функция имеет всего один глобальный минимум, который происходит в точке [0 0] в x-y плоскости, как обозначено вертикальной линией в графике, где значение функции 0. В любом локальном минимуме кроме [0 0], значение функции Рэстриджина больше 0. Чем дальше локальный минимум от источника, тем больше значение функции в той точке.

Функция Рэстриджина часто используется, чтобы протестировать генетический алгоритм, потому что его много локальных минимумов мешают стандартным, основанным на градиенте методам находить глобальный минимум.

Следующий контурный график функции Рэстриджина показывает переменные максимумы и минимумы.

Нахождение минимума функции Рэстриджина

Этот раздел объясняет, как найти минимум функционального использования Рэстриджина генетического алгоритма.

Примечание

Поскольку генетический алгоритм использует генераторы случайных чисел, алгоритм возвращает немного отличающиеся результаты каждый раз, когда вы запускаете его.

Чтобы найти минимум, сделайте следующие шаги:

  1. Введите optimtool('ga') в командной строке, чтобы открыть приложение Оптимизации.

  2. Введите следующее в приложение Оптимизации:

    • В поле Fitness function введите @rastriginsfcn.

    • В поле Number of variables введите 2, количество независимых переменных для функции Рэстриджина.

      Поля Fitness function и Number of variables должны появиться как показано в следующем рисунке.

  3. Нажмите кнопку Start в панели Run solver and view results как показано в следующем рисунке.

    В то время как алгоритм запускается, поле Current iteration отображает количество текущего поколения. Можно временно приостановить алгоритм путем нажатия кнопки Pause. Когда вы делаете так, смены имени кнопки к Resume. Чтобы возобновить алгоритм от точки, в которой вы приостановили его, нажмите Resume.

    Когда алгоритм закончен, панель Run solver and view results появляется как показано в следующем рисунке. Ваши числовые результаты могут отличаться от тех по фигуре, начиная с ga является стохастическим.

    Отображение показывает:

    • Окончательное значение фитнеса функционирует когда отключенный алгоритм:

      Objective function value: 5.550533778020394E-4

      Обратите внимание на то, что показанное значение очень близко к фактическому минимальному значению функции Рэстриджина, которая является 0. Установка Начальной Области значений, Устанавливая Объем Мутации и Определенный Максимальный номер Поколений описывает некоторые способы получить результат, который ближе к фактическому минимуму.

    • Причина завершения алгоритма.

      Optimization terminated: maximum number of generations exceeded.
    • Конечная точка, которая в этом примере является [-0.002 -0.001].

Нахождение минимума из командной строки

Чтобы найти минимум функции Рэстриджина из командной строки, войти

rng(1,'twister') % for reproducibility
[x,fval,exitflag] = ga(@rastriginsfcn,2)

Это возвращается

Optimization terminated:
average change in the fitness value less than options.FunctionTolerance.

x =
   -1.0421   -1.0018

fval =
    2.4385

exitflag =
     1
  • x конечная точка, возвращенная алгоритмом.

  • fval значение функции фитнеса в конечной точке.

  • exitflag целочисленное значение, соответствующее причине что отключенный алгоритм.

Примечание

Поскольку генетический алгоритм использует генераторы случайных чисел, алгоритм возвращает немного отличающиеся результаты каждый раз, когда вы запускаете его.

Отображение графиков

Панель Plot functions приложения Оптимизации позволяет вам отобразить различные графики, которые предоставляют информацию о генетическом алгоритме, в то время как это запускается. Эта информация может помочь вам изменить опции, чтобы улучшать производительность алгоритма. Например, чтобы построить оптимальные и средние значения функции фитнеса при каждой генерации, выберите поле рядом с Best fitness как показано в следующем рисунке.

Когда вы нажимаете Start, отображения приложения Оптимизации, график оптимальных и средних значений фитнеса функционирует при каждой генерации.

Примерьте это Минимизирует Функцию Рэстриджина:

Когда алгоритм останавливается, график появляется как показано в следующем рисунке.

Точки в нижней части графика обозначают лучшие значения фитнеса, в то время как точки выше их обозначают средние значения значений фитнеса в каждой генерации. График также отображает оптимальные и средние значения в текущем поколении численно наверху.

Чтобы получить лучшее изображение того, сколько уменьшают лучшие значения фитнеса, можно изменить масштабирование y - ось в графике к логарифмическому масштабированию. Для этого

  1. Выберите Axes Properties из меню Edit в окне графика, чтобы открыть Property Editor, присоединенный к вашему окну рисунка как показано ниже.

  2. Кликните по вкладке Y Axis.

  3. В панели Y Scale выберите Log.

    График теперь появляется как показано в следующем рисунке.

    Как правило, лучшее значение фитнеса улучшается быстро в ранних поколениях, когда индивидуумы более далеки от оптимума. Лучшее значение фитнеса улучшается более медленно в более поздних поколениях, популяции которых ближе к оптимальной точке.

Примечание

Когда вы отображаете больше чем один график, можно открыть увеличенную версию графика в отдельном окне. Щелкните правой кнопкой (Ctrl - щелкают для macOS) на пустой области в графике, в то время как ga запускается, или после того, как это остановилось и выбирает единственный пункт меню.

Постройте Опции, описывает типы графиков, которые можно создать.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте