exponenta event banner

Эффективное использование задачи оптимизации интерактивного редактора

Эффективная организация задачи

Поместите задачу «Оптимизировать интерактивный редактор» в интерактивный сценарий с разделом выше и двумя или более разделами под задачей. Чтобы открыть задачу «Оптимизировать» в интерактивном редакторе, перейдите на вкладку «Вставка» и выберите команду «Задача» > «Оптимизировать». Используйте кнопку «Разрыв сечения» на вкладке «Вставка» для вставки нового сечения.

Live Script with section for data on top, then Optimize Live Editor task, then section for output, then section for functions.

По умолчанию справа от окна задания выбрана кнопка Вывод справа.

Output on right button

При этом выводимые данные помещаются справа от задачи. Чтобы разместить вывод под задачей, нажмите кнопку «Вывод».

Output inline button

  • Над задачей включите раздел для данных, необходимых для оптимизации. Например, начальная точка x0, любые матрицы ограничений, такие как Aeq или beqи дополнительные параметры для функций объективных или нелинейных ограничений принадлежат в разделе над задачей. Данные должны быть включены в раздел над задачей, чтобы можно было успешно запустить весь сценарий, например, после сохранения и перезагрузки. Данные загружаются в рабочую область перед тем, как сценарий должен получить к ним доступ.

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

  • Последний раздел содержит все локальные функции для проблемы. Локальные функции должны быть включены в конец сценария. Однако при наличии функций, доступ к которым осуществляется из нескольких сценариев, включая их в виде отдельных файлов по пути MATLAB ®, может быть более удобным.

Размещение переменных оптимизации в одном векторе и данных в других переменных

Optimize - это интерфейс для оптимизации на основе решателей и решения уравнений. Поэтому требуется, чтобы все переменные были помещены в один вектор, как описано в разделе Запись скалярных целевых функций. Например, предположим, что ваша целевая функция

f (x, y, z, w) = (x2 + y4) exp ((z/( 1 + x2)) wexp (− z).

В этом примере переменные x и z являются переменными оптимизации, а переменные y и w являются фиксированными данными. Вы можете представить свою функцию в разделе под задачей Оптимизировать следующим образом.

function f = myfun(vars,y,w)
x = vars(1);
z = vars(2);
f = (x^2 + y^4)*exp(-z/(1 + x^2))*w*exp(-z);
end

Определите значения переменных y и w в разделе над задачей.

y = log(pi);
w = 2/3;

Запустите раздел над задачей, нажав Ctrl + Enter, чтобы поместить y и w в рабочую область. Затем выберите соответствующие входные данные в разделе Select problem data задачи.

Optimization input = vars, Fixed input y = y, Fixed input w = w.

Укажите тип проблемы для получения рекомендуемого решателя

В разделе Указание типа задачи предусмотрены кнопки для выбора типа целевой функции и типов ограничений. После выбора этих элементов команда Оптимизировать (Optimize) уменьшает количество доступных решателей и показывает один решатель в соответствии с рекомендациями. Например, для проблемы с объективом наименьших квадратов и верхней и нижней границами команда Оптимизировать (Optimize) показывает, что lsqnonlin рекомендуется использовать решатель.

Least squares objective, lower and upper bounds leads to lsqnonlin as recommended

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

Способы запуска задачи

Задачу «Оптимизировать интерактивный редактор» можно выполнять различными способами:

  • Нажмите кнопку «Параметры» в правом верхнем углу окна задачи и выберите «Выполнить раздел».

    Run section from menu

  • Щелкните задачу и нажмите Ctrl + Enter.

  • Установите задачу на автозапуск после любого изменения, нажав кнопку автозапуска (рядом с кнопкой опций в правом верхнем углу окна задания). Если выполнение задачи занимает много времени, не выбирайте этот параметр.

    Autorun section

  • Запустите раздел, содержащий задачу, щелкнув полосатую строку слева от задачи.

    Striped bar to the left of the task

  • Запустите сценарий в реальном времени на вкладке Live Editor, нажав кнопку «Выполнить» или нажав клавишу F5.

    Run button

Просмотр хода выполнения решателя

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

Plot the objective value

Просмотр эквивалентного кода

При оптимизации внутри создается код, соответствующий визуальным параметрам выбора. Чтобы просмотреть код, нажмите кнопку «Параметры» а затем выберите Элементы управления и код или Только код.

Selecting Controls and Code

Код отображается под задачей.

lsqnonlin options and run syntax

Можно выбрать и скопировать этот код, чтобы изменить его для использования в других контекстах.

Чтобы преобразовать задачу из визуального интерфейса в полезный код, выберите «Преобразовать задачу в редактируемый код». Этот вариант удаляет визуальный интерфейс Optimize и позволяет продолжить использование кода.

Convert task menu item

См. также

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