mpcmoveAdaptive

Вычислите оптимальное управление с обновлением модели прогноза

Синтаксис

mv = mpcmoveAdaptive(MPCobj,x,Plant,Nominal,ym,r,v)
[mv,info] = mpcmoveAdaptive(MPCobj,x,Plant,Nominal,ym,r,v)
[___] = mpcmoveAdaptive(___,options)

Описание

mv = mpcmoveAdaptive(MPCobj,x,Plant,Nominal,ym,r,v) вычисляет оптимальные переменные перемещения, которыми управляют, в текущее время. Этот результат зависит от свойств, содержавшихся в контроллере MPC, состояниях контроллера, обновленной модели прогноза и номинальной стоимости. Результат также зависит от измеренных выходных переменных, выходные ссылки (заданные значения) и измеренные входные параметры воздействия. mpcmoveAdaptive обновляет состояние контроллера, x, при использовании оценки состояния по умолчанию. Вызовите mpcmoveAdaptive неоднократно, чтобы моделировать образцовое прогнозирующее управление с обратной связью.

[mv,info] = mpcmoveAdaptive(MPCobj,x,Plant,Nominal,ym,r,v) возвращает дополнительные детали о решении в структуре. Чтобы просмотреть предсказанную оптимальную траекторию для целого горизонта прогноза, постройте последовательности, обеспеченные в info. Чтобы определить ли вычисление оптимального управления, завершенное обычно, проверяйте info.Iterations и info.QPCode.

[___] = mpcmoveAdaptive(___,options) изменяет настройки выбранного контроллера с помощью опций, которые вы задаете с mpcmoveopt. Эти изменения применяются в течение момента текущего времени только, включая симуляцию командной строки с помощью mpcmoveAdaptive, чтобы подражать блоку Adaptive MPC Controller в Simulink® в вычислительном отношении эффективным способом.

Входные параметры

свернуть все

Контроллер MPC, заданный как неявный контроллер MPC объект. Чтобы создать контроллер MPC, используйте команду mpc.

Текущий контроллер MPC состояние, заданное как объект mpcstate.

Прежде чем вы начнете симуляцию с mpcmoveAdaptive, инициализируете состояние контроллера использование x = mpcstate(MPCobj). Затем измените свойства по умолчанию x как соответствующие.

Если вы будете использовать оценку состояния по умолчанию, mpcmoveAdaptive ожидает, что x будет представлять x[n|n-1]. Команда mpcmoveAdaptive обновляет значения состояния в предыдущем интервале управления с той информацией. Поэтому вы не должны программно обновлять x вообще. Средство оценки состояния по умолчанию использует линейный изменяющийся во времени Фильтр Калмана.

Если вы будете использовать пользовательскую оценку состояния, mpcmoveAdaptive ожидает, что x будет представлять x[n|n]. Поэтому до каждой команды mpcmoveAdaptive, необходимо установить x.Plant, x.Disturbance и x.Noise к наилучшим оценкам этих состояний (использующий последние измерения) в текущем интервале управления.

Для получения дополнительной информации об оценке состояния для адаптивного MPC и изменяющегося во времени MPC, смотрите Оценку состояния.

Обновленная модель прогноза, заданная как одно из следующего:

  • Модель (ss) пространства состояний дискретного времени без задержек. Этот объект является обновлением MPCobj.Model.Plant, и это должно:

    • Имейте тот же шаг расчета как контроллер; то есть, Plant.Ts должен совпадать с MPCobj.Ts

    • Имейте те же настройки сигнала ввода и вывода, такие как тип, порядок и размерности

    • Задайте те же состояния как модель прогноза контроллера, MPCobj.Model.Plant

  • Массив до p +1 модель в пространстве состояний дискретного времени без задержек, где p является горизонтом прогноза MPCobj. Используйте эту опцию, чтобы отличаться модель прогноза контроллера по горизонту прогноза.

    Если Plant содержит меньше, чем p +1 модель, последние образцовые повторения для остальной части горизонта прогноза.

Совет

Если вы используете объект кроме модели в пространстве состояний дискретного времени без задержек, чтобы задать модель прогноза в MPCobj, можно преобразовать его в такую модель, чтобы определить структуру модели прогноза.

Если исходный объектЗатем
Не модель в пространстве состоянийПреобразуйте его в модель в пространстве состояний с помощью ss.
Непрерывно-разовая модельПреобразуйте его в модель дискретного времени с тем же шагом расчета, как контроллер, MPCobj.Ts, с помощью c2d со значением по умолчанию передают Эйлеровую дискретизацию.
Модель с задержкамиПреобразуйте задержки с состояниями с помощью absorbDelay.

Обновленные номинальные условия, заданные как одно из следующего:

  • Структура со следующими полями:

    Поле

    Описание

    Значение по умолчанию

    X

    Состояние объекта в рабочей точке

    []

    U

    Вход Plant в рабочей точке, включая переменные, которыми управляют, и измеренные и неизмеренные воздействия

    []

    Y

    Plant вывод в рабочей точке

    []

    DX

    Для непрерывно-разовых моделей DX является производной состояния в рабочей точке: DX =f (X, U). Для моделей дискретного времени, DX =x (k +1)-x (k) =f (X, U)-X.

    []

  • Массив до p +1 номинальная структура условия, где p является горизонтом прогноза MPCobj. Используйте эту опцию, чтобы отличаться условия номинала контроллера по горизонту прогноза.

    Если Nominal содержит меньше, чем p +1 структура, последние повторения структуры для остальной части горизонта прогноза.

Если Nominal пуст, [], или если поле отсутствует или пустое, mpcmoveAdaptive использует соответствующее значение MPCobj.Model.Nominal.

Текущие измеренные выходные параметры, заданные как вектор - строка из длины вектор Nym, где Nym является количеством измеренных выходных параметров.

Если вы используете пользовательскую оценку состояния, ym проигнорирован. Если вы устанавливаете ym = [], то mpcmoveAdaptive использует соответствующую номинальную стоимость.

Объект выходные значения ссылки, заданные как p-by-Ny массив, где p является горизонтом прогноза MPCobj и Ny, является количеством выходных параметров. Строка r(i,:) задает ссылочные значения на шаге i горизонта прогноза.

r должен содержать по крайней мере одну строку. Если r содержит меньше, чем строки p, mpcmoveAdaptive копирует последнюю строку, чтобы заполнить p-by-Ny массив. Если вы предоставляете точно одну строку, поэтому, постоянная ссылка применяется к целому горизонту прогноза.

Если вы устанавливаете r = [], то mpcmoveAdaptive использует соответствующую номинальную стоимость.

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

Текущие и ожидаемые измеренные воздействия, заданные как p-by-Nmd массив, где p является горизонтом прогноза MPCobj и Nmd, являются количеством измеренных воздействий. Строка v(i,:) задает ожидаемые измеренные значения воздействия на шаге i горизонта прогноза.

Моделирование измеренных воздействий обеспечивает действие управления feedforward. Если ваша модель объекта управления не включает измеренные воздействия, используйте v = [].

v должен содержать по крайней мере одну строку. Если v содержит меньше, чем строки p, mpcmoveAdaptive копирует последнюю строку, чтобы заполнить p-by-Nmd массив. Если вы предоставляете точно одну строку, поэтому, постоянное измеренное воздействие запрашивает целый горизонт прогноза.

Если вы устанавливаете v = [], то mpcmoveAdaptive использует соответствующую номинальную стоимость.

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

Замените значения для выбранных свойств MPCobj, заданного как, опции возражают, что вы создаете с mpcmoveopt. Эти опции применяются к текущему моменту времени mpcmoveAdaptive только. Используя options приводит к тому же результату как переопределяющий или изменяющий MPCobj перед каждым вызовом mpcmoveAdaptive, но включает значительно меньше служебное. Используя options эквивалентно использованию Адаптивного Контроллера MPC блок Simulink в сочетании с дополнительными входными сигналами, которые изменяют настройки контроллера, такие как мВ и ограничения OV.

Выходные аргументы

свернуть все

Оптимальные переменные перемещения, которыми управляют, возвращенные как вектор-столбец длины Nmv, где Nmv является количеством переменных, которыми управляют.

Если контроллер обнаруживает неосуществимую задачу оптимизации или сталкивается с числовыми трудностями при решении плохо обусловленной задачи оптимизации, mv остается в своем новом успешном решении, x.LastMove.

В противном случае, если задача оптимизации выполнима, и решатель достигает заданного максимального количества итераций, не находя оптимальное решение, mv:

  • Остается в его новом успешном решении, если свойством Optimizer.UseSuboptimalSolution контроллера является false.

  • Субоптимальное решение, достигнутое после итоговой итерации, если свойством Optimizer.UseSuboptimalSolution контроллера является true. Для получения дополнительной информации смотрите Субоптимальное Решение QP.

Детали решения, возвращенные как структура со следующими полями.

Предсказанные оптимальные переменные корректировки, которыми управляют (перемещения), возвращенные как (p +1)-by-Nmv массив, где p является горизонтом прогноза и Nmv, являются количеством переменных, которыми управляют.

Uopt(i,:) содержит расчетные оптимальные значения во время k+i-1 для i = 1,...,p, где k является текущим временем. Первая строка Info.Uopt содержит те же значения переменных, которыми управляют, как выходной аргумент mv. Поскольку контроллер не вычисляет перемещения оптимального управления во время k+p, Uopt(p+1,:) равен Uopt(p,:).

Оптимальная последовательность выходной переменной, возвращенная как (p +1)-by-Ny массив, где p является горизонтом прогноза и Ny, является количеством выходных параметров.

Первая строка Info.Yopt содержит расчетные выходные параметры во время k на основе предполагаемых состояний и измеренных воздействий; это не измеренный вывод во время k. Yopt(i,:) содержит предсказанные выходные значения во время k+i-1 для i = 1,...,p+1.

Yopt(i,:) содержит расчетные выходные значения во время k+i-1 для i = 2,...,p+1, где k является текущим временем. Yopt(1,:) вычисляется на основе предполагаемых состояний и измеренных воздействий.

Оптимальная модель прогноза утверждает последовательность, возвращенную как (p +1)-by-Nx массив, где p является горизонтом прогноза, и Nx является количеством состояний на объекте, и неизмеренные возмущения (состояния из шумовых моделей не включены).

Xopt(i,:) содержит расчетные значения состояния во время k+i-1 для i = 2,...,p+1, где k является текущим временем. Xopt(1,:) эквивалентен, текущие состояния утверждают значения.

Временные интервалы, возвращенные как вектор-столбец длины p +1. Topt(1) = 0, представляя текущее время. Последующий Topt(i) временных шагов дан Ts*(i-1), где Ts = MPCobj.Ts является шагом расчета контроллера.

Используйте Topt при графическом выводе Uopt, Xopt или последовательностей Yopt.

Ослабьте переменную, ε, используемый в ограничительном смягчении, возвращенном как 0 или значение положительной скалярной величины.

  • ε = 0 — Все ограничения были удовлетворены для целого горизонта прогноза.

  • ε> 0 — По крайней мере одно мягкое ограничение нарушено. Когда больше чем одно ограничение нарушено, ε представляет худший случай мягкое ограничительное нарушение (масштабируемый вашими значениями ECR для каждого ограничения).

Смотрите Задачу оптимизации для получения дополнительной информации.

Количество итераций решателя, возвращенных как одно из следующего:

  • Положительное целое число — Количество итераций должно было решить задачу оптимизации, которая определяет оптимальные последовательности.

  • 0 — Задача оптимизации не могла быть решена в заданном максимальном количестве итераций.

  • –1 — Задача оптимизации была неосуществима. Задача оптимизации неосуществима, если никакое решение не может удовлетворить все трудные ограничения.

  • –2 — Числовая ошибка произошла при решении задачи оптимизации.

Состояние решения для оптимизации, возвращенное как одно из следующего:

  • 'feasible' — Оптимальное решение было получено (Iterations> 0)

  • 'infeasible' — Решатель обнаружил проблему без выполнимого решения (Iterations = –1), или числовая ошибка произошла (Iterations = –2)

  • 'unreliable' — Решателю не удалось сходиться (Iterations = 0). В этом случае, если MPCobj.Optimizer.UseSuboptimalSolution является false, замораживания u в новом успешном решении. В противном случае это использует субоптимальное решение, найденное во время последней итерации решателя.

Стоимость целевой функции, возвращенная как неотрицательное скалярное значение. Стоимость определяет количество степени, до которой контроллер достиг ее целей. Для получения дополнительной информации смотрите Задачу оптимизации.

Величина затрат только значима, когда QPCode = 'feasible', или когда QPCode = 'feasible' и MPCobj.Optimizer.UseSuboptimalSolution является true.

Советы

Введенный в R2014b