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

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

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

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

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

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

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

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

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

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

Совет

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

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