exponenta event banner

Задача оптимизации интерактивного редактора

Что такое задача «Оптимизировать интерактивный редактор»?

Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для fminbnd, fminsearch, fzero, и lsqnonneg решатели. Чтобы запустить задачу, нажмите кнопку Создать сценарий в реальном времени. Затем перейдите на вкладку Вставка и выберите Задача > Оптимизировать.

Optimize Live Editor task.

Минимизация нелинейной функции нескольких переменных

В этом примере показано, как минимизировать функцию f (x, y) = 100 (y x2) 2 + (a − x) 2, где переменная a = δ с помощью задачи Оптимизировать живой редактор (Optimize Live Editor).

Видеоролик, описывающий аналогичную проблему оптимизации, см. в разделе Как использовать задачу «Оптимизировать интерактивный редактор».

  1. На вкладке Главная в разделе Файл нажмите кнопку Создать сценарий.

  2. Вставка задачи «Оптимизировать интерактивный редактор». Перейдите на вкладку Вставка, а затем в разделе Код выберите Задача > Оптимизировать.

    Insert task Optimize

  3. Для использования при вводе данных о проблемах нажмите кнопку «Разрыв раздела». Новые разделы появляются над и под задачей.

  4. В разделе над задачей «Оптимизация» введите следующий код.

    a = pi;
    x0 = [-1 2];
  5. Чтобы поместить эти переменные в рабочее пространство, нажмите клавиши CTRL + ENTER.

  6. В разделе «Указание типа проблемы» задачи нажмите кнопку «Цель» > «Нелинейный» и кнопку «Ограничения» > «Без ограничений». Задача показывает, что рекомендуемый решатель fminsearch.

    Примечание

    При наличии Toolbox™ оптимизации рекомендуемый решатель отличается. Выбирать fminsearch для продолжения работы с примером.

  7. В разделе Выбор данных проблемы выберите Целевая функция > Локальная функция и нажмите кнопку Создать. Сценарий функции появляется в новом разделе под задачей. Отредактируйте результирующий код, чтобы он содержал следующие незафиксированные строки.

    function f = objectiveFcn(optimInput,a)
    x = optimInput(1);
    y = optimInput(2);
    f = 100*(y - x^2)^2 + (a - x)^2;
    end
  8. В разделе Выбор данных проблемы выберите objectiveFcn в качестве локальной функции.

  9. В разделе Select problem data в разделе Function inputs выберите Optimization input > optimInput и Fixed input: a > a.

    Local function objectiveFcn, optimization input optimInput, fixed input a

  10. Выберите Начальная точка (x0) > x0.

  11. В разделе Ход показа (Display progress) выберите Целевое значение (Objective value) для графика.

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

    Run Section

    Появится следующий график.

    Plot showing values decreasing from 120 to 4e-11 in fewer than 150 iterations

  13. Чтобы просмотреть точку решения, посмотрите в верхней части задачи Оптимизировать.

    Variables solution and objectiveValue are returned

    solution и objectiveValue переменные возвращаются в рабочую область. Чтобы просмотреть их значения, вставьте разрыв раздела под задачей и введите этот код.

    disp(solution)
    disp(objectiveValue)
  14. Запустите раздел, нажав Ctrl + Enter.

    disp(solution)
        3.1416    9.8696
    disp(objectiveValue)
       3.9946e-11

Решение скалярного уравнения

В этом примере показано, как с помощью задачи «Оптимизировать интерактивный редактор» найти точку x, где cos (x) = x.

  1. На вкладке Главная в разделе Файл нажмите кнопку Создать сценарий. Введите эти строки кода в сценарий в реальном времени.

    fun = @(x)cos(x) - x;
    x0 = 0;

    Первая строка определяет анонимную функцию fun, которое принимает значение 0 в точке x, где cos (x) = x. Вторая строка определяет начальную точкуx0 = 0, где fzero начинает поиск решения.

  2. Поместите эти переменные в рабочую область MATLAB ®, нажав Ctrl + Enter.

  3. Вставка задачи «Оптимизировать интерактивный редактор». Перейдите на вкладку Вставка, а затем в разделе Код выберите Задача > Оптимизировать.

  4. В разделе Задание типа задачи выберите Решатель > fzero.

  5. В разделе Выбор данных проблемы выберите Целевая функция > Дескриптор функции, а затем выберите fun. Выберите Начальная точка (x0) > x0.

    fzero with choices made

  6. В разделе Ход показа (Display progress) выберите Целевое значение (Objective value) для графика.

    Plot function is Objective value.

  7. Запустите решатель, нажав Ctrl + Enter.

    Plot of solution process, seven iterations with final five all nearly zero.

  8. Чтобы увидеть значение решения, вставьте новый раздел под задачей, нажав кнопку Разрыв раздела (Section Break) на вкладке Вставить (Insert). В новом разделе введите solution и нажмите Ctrl + Enter.

    solution
    solution = 0.7391

См. также

| |

Связанные темы