explicitMPC

Явный прогнозирующий контроллер модели

Описание

Явное прогнозирующее управление модели использует оффлайновые расчеты, чтобы определить все операционные области, в которых перемещения оптимального управления определяются путем выполнения линейной функции. Явные контроллеры MPC требуют меньшего количества расчетов во время выполнения, чем традиционные (неявные) прогнозирующие контроллеры модели и поэтому полезны для приложений, которые требуют времен небольшой выборки.

Чтобы реализовать явный MPC, сначала спроектируйте традиционный (неявный) прогнозирующий контроллер модели для своего приложения, и затем используйте этот контроллер, чтобы сгенерировать явный контроллер MPC для использования, в режиме реального времени управляют. Для получения дополнительной информации смотрите Рабочий процесс Проекта для Явного MPC.

Создание

Создать explicitMPC объект:

  1. Создайте неявный контроллер MPC, использующий mpc объект.

  2. Задайте рабочий диапазон для явного контроллера MPC путем создания структуры области значений с помощью generateExplicitRange функция и определение границ с помощью записи через точку.

  3. Задайте опции оптимизации для преобразования неявного контроллера в явный контроллер, использующий generateExplicitOptions функция.

  4. Создайте явный контроллер MPC на основе неявного контроллера, рабочего диапазона и опций оптимизации с помощью generateExplicitMPC функция.

Свойства

развернуть все

Неявный контроллер MPC, заданный как mpc объект.

Границы параметра, которые задают рабочий диапазон контроллера, указанный как структура со следующими полями.

Поле Описание
StateГраницы на контроллере утверждают значения
ReferenceГраницы на значениях сигналов ссылки контроллера
MeasuredDisturbanceГраницы на измеренных значениях воздействия
ManipulatedVariableГраницы на значениях переменных, которыми управляют,

Задайте это свойство с помощью range входной параметр к generateExplicitMPC функция, которая вы создаете использование generateExplicitRange функционируйте и измените запись через точку использования. Для подробных описаний параметров области значений смотрите generateExplicitRange.

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

Поле Описание
zerotolДопуск нулевого обнаружения
removetolДопуск обнаружения избыточного ограничения неравенства
flattolПлоский допуск обнаружения области
normalizetolОграничительный допуск нормализации
maxiterNNLSМаксимальное количество итераций решателя NNLS
maxiterQPМаксимальное количество итераций решателя QP
maxiterBSМаксимальное количество итераций метода деления пополам
polyreductionМетод для удаления избыточных неравенств

Задайте это свойство с помощью opt входной параметр к generateExplicitMPC функция, которая вы создаете использование generateExplicitOptions функция. Для подробных описаний этих опций смотрите generateExplicitOptions.

Кусочное аффинное решение для различных операционных областей, заданных как массив структур с элементами Nr, где Nr является количеством операционных областей.

Каждый элемент структуры содержит поля, задающие ограничения неравенства и закон о надзоре для каждой области. Для получения дополнительной информации о законе о надзоре и ограничениях, смотрите Рабочий процесс Проекта для Явного MPC.

Поле Размерности
FВектор-строка из длины Nx-by-Nmv.
GВектор-столбец длины Nmv
HNc-by-Nx массив
KВектор-столбец длины Nc

Здесь:

  • Nx является количеством независимых переменных.

  • Nmv является количеством переменных, которыми управляют.

  • Nc является количеством ограничений неравенства для области.

Отметьте указание, был ли явный закон о надзоре упрощен с помощью simplify команда. Если закон о надзоре упрощен, он аппроксимирует неявный контроллер MPC поведение. Если закон о надзоре не упрощен, он должен воспроизвести неявное поведение контроллера точно, если оба действуют в границах, описанных Range свойство.

Функции объекта

simplifyУменьшайте явный контроллер MPC сложность и требования к памяти
plotSectionВизуализируйте явный закон о MPC управлении как 2D частный график
mpcmoveExplicitВычислите оптимальное управление с помощью явного MPC
simСимулируйте ответ замкнутого цикла/разомкнутого цикла на произвольную ссылку и сигналы воздействия для неявного или явного MPC
mpcstateКонтроллер MPC состояние
getCodeGenerationDataСоздайте структуры данных для mpcmoveCodeGeneration

Примеры

свернуть все

Сгенерируйте явный контроллер MPC, основанный на традиционном контроллере MPC для объекта с двойным интегратором.

Задайте объект с двойным интегратором.

plant = tf(1,[1 0 0]);

Создайте традиционный (неявный) контроллер MPC для этого объекта, с шагом расчета 0.1, горизонт прогноза 10 и горизонт управления 3.

Ts = 0.1;
p = 10;
m = 3;
MPCobj = mpc(plant,Ts,p,m);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.

Чтобы сгенерировать явный контроллер MPC, необходимо указать диапазоны параметров, такие как значения состояния и переменные, которыми управляют. Для этого сгенерируйте структуру области значений. Затем измените значения в структуре к желаемым областям значений параметра.

range = generateExplicitRange(MPCobj);
-->Converting the "Model.Plant" property of "mpc" object to state-space.
-->Converting model to discrete time.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
range.State.Min(:) = [-10;-10];
range.State.Max(:) = [10;10];
range.Reference.Min = -2;
range.Reference.Max = 2;
range.ManipulatedVariable.Min = -1.1;
range.ManipulatedVariable.Max = 1.1;

Используйте более устойчивый метод сокращения в расчете. Используйте generateExplicitOptions создать набор опций по умолчанию, и затем изменить polyreduction опция.

opt = generateExplicitOptions(MPCobj);
opt.polyreduction = 1;

Сгенерируйте явный контроллер MPC.

EMPCobj = generateExplicitMPC(MPCobj,range,opt)
 
Explicit MPC Controller
---------------------------------------------
Controller sample time:    0.1 (seconds)
Polyhedral regions:        1
Number of parameters:      4
Is solution simplified:    No
State Estimation:          Default Kalman gain
---------------------------------------------
Type 'EMPCobj.MPC' for the original implicit MPC design.
Type 'EMPCobj.Range' for the valid range of parameters.
Type 'EMPCobj.OptimizationOptions' for the options used in multi-parametric QP computation.
Type 'EMPCobj.PiecewiseAffineSolution' for regions and gain in each solution.

Введенный в R2014b