exponenta event banner

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 команда, позволяющая моделированию командной строки имитировать блок явного контроллера MPC 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 в последовательности моделирования опустите этот аргумент. В противном случае, если MV вычислены 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.

Совет

Представлен в R2014b