generateExplicitMPC

Преобразуйте неявный контроллер MPC в явный контроллер MPC

Описание

Учитывая традиционную разработку Model Predictive Controller в неявной форме, преобразуйте ее в явную форму для приложений реального времени, требующих быстрого шага расчета.

пример

EMPCobj = generateExplicitMPC(MPCobj,range) преобразует традиционный (неявный) контроллер MPC в эквивалентный явный контроллер MPC с помощью заданных ограничений параметра. Это вычисление обычно требует значительных вычислительных усилий, потому что многопараметрическая квадратичная задача программирования решается во время преобразования.

пример

EMPCobj = generateExplicitMPC(MPCobj,range,opt) преобразует контроллер MPC с помощью дополнительных опций оптимизации.

Примеры

свернуть все

Сгенерируйте явный контроллер 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.

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

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.

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

свернуть все

Традиционный контроллер MPC, заданный как mpc объект

Границы параметров, заданные как структура, которую вы создаете с generateExplicitRange команда. Эта структура задает ограничения параметров, от которых зависит явный закон MPC управления, такие как значения состояний, измеренные нарушения порядка и управляемые переменные. Для подробного описания параметров области значений смотрите generateExplicitRange.

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

Выходные аргументы

свернуть все

Явный контроллер MPC, который эквивалентен входу традиционному контроллеру, возвращается как explicitMPC объект.

СвойствоОписание
MPCТрадиционный (неявный) объект контроллера, используемый для генерации явного контроллера MPC. Вы создаете этот MPC контроллер используя является mpc команда. Это первый аргумент к generateExplicitMPC при создании явного контроллера MPC.
Range1-D структура, содержащая ограничения параметров, используемые для генерации явного контроллера MPC. Они определяют допустимую рабочую область значений получившегося контроллера. Это свойство автоматически заполняется range входной параметр в generateExplicitMPC при создании явного контроллера MPC. Посмотрите generateExplicitRange для получения дополнительной информации об этой структуре.
OptimizationOptions1-D структура, содержащая изменяемые пользователем опции, используемые для генерации явного контроллера MPC. Это свойство автоматически заполняется opt аргумент в generateExplicitMPC при создании явного контроллера MPC. Посмотрите generateExplicitOptions для получения дополнительной информации об этой структуре.
PiecewiseAffineSolutionnr -мерная структура, где nr - количество кусочно-аффинных (PWA) областей, необходимых для представления закона контроля. i-й элемент содержит детали, необходимые для вычисления оптимальных манипулируемых переменных, когда решение лежит в i-й области. См. «Реализация».
IsSimplifiedЛогический переключатель, указывающий, был ли изменен явный закон управления с помощью simplify команда такая, что явный закон управления аппроксимирует базовый (неявный) контроллер MPC. Если закон управления не был изменен, явный контроллер должен точно воспроизвести поведение базового контроллера, при условии, что оба работают в пределах, описанных Range свойство.

Совет

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

  • Перед попыткой преобразования тщательно проверьте неявный контроллер. Это помогает определить область значений состояний контроллера и других параметров, необходимых для генерации явного контроллера.

  • Симулируйте эффективность явного контроллера, используя sim или mpcmoveExplicit команды или Explicit MPC Controller блок в Simulink®.

  • generateExplicitMPC отображает сообщения о ходе работы в командном окне. Использовать mpcverbosity чтобы выключить отображение.

Введенный в R2014b