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

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

Поместите задачу Optimize Live Editor в live скрипт с разделом выше и двумя или несколькими разделами ниже задачи. Чтобы открыть задачу Оптимизации в Live Editor, перейдите на вкладку Insert и выберите Task > Optimize. Для вставки нового раздела используйте кнопку Section Break на вкладке Insert.

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

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

Output on right button

Этот выбор помещает выход справа от задачи. Чтобы поместить выход под задачу, нажмите кнопку Output inline.

Output inline button

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

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

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

Поместите переменные оптимизации в один вектор и данные в другие переменные

Оптимизируйте является фронтальным концом для основанных на решателе оптимизации и решения уравнений. Как таковой, он требует, чтобы все переменные были помещены в один вектор, как задокументировано в Writing Scalar Object Functions. Например, предположим, что ваша целевая функция

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.

Укажите тип задачи, чтобы получить рекомендуемый решатель

В Specify problem type разделе задачи предусмотрены кнопки для выбора типа целевой функции и типов ограничений. После выбора этих элементов Optimize уменьшает количество доступных решателей и показывает один решатель в соответствии с рекомендациями. Для примера, для задачи с объективом методом наименьших квадратов и верхними и нижними границами, Optimize показов, что lsqnonlin Рекомендуется использовать решатель.

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

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

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

Задачу Optimize Live Editor можно запустить различными способами:

  • Нажмите кнопку options в верхней части окна задачи и выберите Run Section.

    Run section from menu

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

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

    Autorun section

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

    Striped bar to the left of the task

  • Запустите весь live скрипт с вкладки Live Editor нажатием кнопки Run или нажатием F5.

    Run button

Просмотр прогресса решателя

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

Plot the objective value

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

Optimize внутренне создает код, соответствующий визуальным выбранным параметрам. Вы можете просмотреть код, нажав кнопку options и выбрав Controls and Code или Code Only.

Selecting Controls and Code

Код появляется под задачей.

lsqnonlin options and run syntax

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

Чтобы преобразовать задачу из визуального интерфейса в полезный код, выберите Convert Task to Editable Code. Этот выбор удаляет визуальный интерфейс Optimize и позволяет продолжить использование кода.

Convert task menu item

См. также

Похожие темы