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

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

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

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

Ras(x)=20+x12+x2210(потому что2πx1+потому что2π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 запускается, или после того, как это остановилось и выбирает единственный пункт меню.

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

Похожие темы