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 команда, позволяя симуляции командной строки подражать Simulink Explicit MPC Controller® блокируйтесь с дополнительным внешним входным сигналом мВ.

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

свернуть все

Явный контроллер 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 остается в его новом успешном решении, xc.LastMove.

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

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

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

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

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

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

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

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

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

Советы

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

Введенный в R2014b