mpcmoveExplicit

Вычислите оптимальное управление с помощью явного MPC

Синтаксис

mv = mpcmoveExplicit(EMPCobj,x,ym,r,v)
[mv,info] = mpcmoveExplicit(EMPCobj,x,ym,r,v)
[mv,info] = mpcmoveExplicit(EMPCobj,x,ym,r,v,MVused)

Описание

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

[mv,info] = mpcmoveExplicit(EMPCobj,x,ym,r,v) возвращает дополнительные детали о вычислении в структуре. Чтобы определить ли вычисление оптимального управления, завершенное обычно, проверяйте данные в info.

[mv,info] = mpcmoveExplicit(EMPCobj,x,ym,r,v,MVused) задает значения переменных, которыми управляют, используемые в предыдущей команде mpcmoveExplicit, позволяя симуляции командной строки подражать блоку Explicit MPC Controller Simulink® с дополнительным внешним входным сигналом мВ.

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

свернуть все

Явный контроллер MPC, чтобы моделировать, заданный как Явный контроллер MPC объект. Используйте generateExplicitMPC, чтобы создать явный контроллер MPC.

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

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

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

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

Текущие измеренные выходные параметры, заданные как вектор - строка из длины Nym, где Nym является количеством измеренных выходных параметров. Если вы используете пользовательскую оценку состояния, ym проигнорирован. Если вы устанавливаете ym = [], то mpcmoveExplicit использует соответствующую номинальную стоимость.

Объект выходные значения ссылки, заданные как вектор длины Ny. mpcmoveExplicit использует постоянную ссылку для целого горизонта прогноза. В отличие от mpcmove и mpcmoveAdaptive, mpcmoveExplicit не поддерживает ссылочный предварительный просмотр.

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

Текущие и ожидаемые измеренные воздействия, заданные как вектор длины Nmd, где Nmd является количеством измеренных воздействий. В отличие от mpcmove и mpcmoveAdaptive, mpcmoveExplicit не поддерживает предварительный просмотр воздействия. Если ваша модель объекта управления не включает измеренные воздействия, используйте v = [].

Значения переменных, которыми управляют, применились к объекту во время предыдущего интервала управления, заданного как вектор длины Nmv, где Nmv является количеством переменных, которыми управляют. Если это - первая команда mpcmoveExplicit в последовательности симуляции, не используйте этот аргумент. В противном случае, если MVS, вычисленный mpcmoveExplicit в предыдущем интервале, был заменен, установите MVused на правильные значения в порядке улучшить точность оценки состояния контроллера. Если вы не используете MVused, mpcmoveExplicit принимает MVused = x.LastMove.

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

свернуть все

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

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

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

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

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

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

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

  • 1 — Успешное решение.

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

  • – 1 — Неопределенный. Параметры находятся в области значений, но экстраполяция должна использоваться.

Область, в которую текущий контроллер ввел параметры, принадлежит, возвращенная или как положительное целое число или как 0. Целочисленное значение является индексом многогранника (область), которой принадлежат текущие входные параметры контроллера. Если решение перестало работать, Region = 0.

Советы

Введенный в R2014b

Для просмотра документации необходимо авторизоваться на сайте