mpcmoveExplicit

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

Описание

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.

Советы

  • Используйте блок Simulink Explicit MPC Controller в симуляции и генерации кода.

Введенный в R2014b