Оптимизация задачи Live Editor

Что такое задача оптимизации Live Editor?

Задача Optimize Live Editor обеспечивает визуальный интерфейс для fminbnd, fminsearch, fzero, и lsqnonneg решатели. Чтобы запустить задачу, нажмите кнопку New Live Script. Затем щелкните вкладку Insert и выберите Task > Optimize.

Optimize Live Editor task.

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

Этот пример показывает, как минимизировать функцию f(x,y)=100(yx2)2+(ax)2 где переменная a = π с помощью задачи Оптимизации Live Editor.

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

  1. На вкладке Home, в разделе File, нажмите кнопку New Live Script.

  2. Вставьте задачу Optimize Live Editor. Щелкните вкладку Insert, а затем в разделе Code выберите Task > Optimize.

    Insert task Optimize

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

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

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

  6. В Specify problem type разделе задачи нажмите кнопку Objective > Nonlinear и кнопку Constraints > Unconstrained. Задача показывает, что рекомендуемый решатель fminsearch.

    Примечание

    Если у вас есть Optimization Toolbox™, ваш рекомендуемый решатель на этой точке отличается. Выбирать fminsearch для продолжения работы с примером.

  7. В разделе Select problem data выберите Objective function > Local function и нажмите кнопку New. Скрипт функции появляется в новом разделе под задачей. Отредактируйте полученный код так, чтобы он содержал следующие незащищенные линии.

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

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

    Local function objectiveFcn, optimization input optimInput, fixed input a

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

  11. В Display progress разделе выберите Objective value для графика.

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

    Run Section

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

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

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

    Variables solution and objectiveValue are returned

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

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

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

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

В этом примере показано, как использовать задачу Optimize Live Editor для поиска x точек, где cos (x) = x.

  1. На вкладке Home, в разделе File, нажмите кнопку New Live Script. Введите эти строки кода в live скрипте.

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

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

  2. Поместите эти переменные в MATLAB® рабочей области путем нажатия клавиши Ctrl+Enter.

  3. Вставьте задачу Optimize Live Editor. Щелкните вкладку Insert, а затем в разделе Code выберите Task > Optimize.

  4. В Specify problem type разделе задачи выберите Solver > fzero.

  5. В Select problem data разделе выберите Objective function > Function handle и затем fun. Выберите Initial point (x0) > x0.

    fzero with choices made

  6. В разделе «прогресс отображения» выберите 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

См. также

| |

Похожие темы