Оптимизируйте с помощью алгоритма GPS

Этот пример показывает, как решить задачу оптимизации с помощью алгоритма GPS, который является по умолчанию для patternsearch решатель. Пример использует задачу Optimize Live Editor, чтобы завершить оптимизацию с помощью визуального подхода.

Целевая функция

Этот пример использует целевую функцию ps_example, в комплекте с программным обеспечением Global Optimization Toolbox. Просмотрите код функции путем ввода следующей команды.

type ps_example

Этот рисунок показывает график функции.

2-D plot of a nonsmooth function

 Код для создания рисунка

Нахождение минимума функции

Чтобы найти минимум ps_example используя задачу Оптимизации Live Editor, выполните следующие шаги.

  1. Создайте новый live скрипт, нажав кнопку New Live Script в разделе File на вкладке Home.

    New Live Script button

  2. Вставьте задачу Optimize Live Editor. Перейдите на вкладку Insert и в секции кода выберите Task > Optimize.

    Insert Optimize button

    Optimize Live Editor task

  3. Для использования при вводе данных о задаче вставьте новый раздел, нажав кнопку Section Break на вкладке Insert. Новые разделы появляются выше и ниже задачи.

  4. В новом разделе над задачей введите следующий код, чтобы определить начальную точку и целевую функцию.

    x0 = [2.1 1.7];
    fun = @ps_example;
  5. Чтобы поместить эти переменные в рабочую область, запустите раздел, нажав Ctrl + Enter.

  6. В Specify problem type разделе задачи нажмите кнопку Objective > Nonsmooth.

  7. Убедитесь, что выбранный решатель patternsearch.

  8. В Select problem data разделе задачи выберите Objective function > Function handle и затем fun.

  9. Выберите Initial point (x0) > x0.

  10. В разделе «Отображение прогресса задачи» выберите графики «Лучшее значение» и «Размер сетки».

    Solver, objective function, initial point, and plots specified

  11. Чтобы запустить решатель, нажмите кнопку options в верхней части окна задачи и выберите Run Section. Графики появляются в отдельном окне рисунка и в области выхода задачи.

    Function values decrease to -2, and the mesh size oscillates but converges to 9.53e-7.

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

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

Оптимизация остановлена, потому что размер сетки стал меньше значения допуска размера сетки, заданного MeshTolerance опция. Минимальное значение функции составляет приблизительно -2.

Чтобы увидеть решение и значение целевой функции, смотрите в верхней части задачи.

Optimize returns solution and objectiveValue variables to the workspace

Задача Optimize помещает переменные solution и objectiveValue в рабочей области. Просмотрите эти значения, поместив новый раздел под задачей и включив этот код.

disp(solution)
disp(objectiveValue)

Запустите раздел нажатием Ctrl+Enter.

disp(solution)
   -4.7124   -0.0000
disp(objectiveValue)
   -2.0000

См. также

|

Похожие темы