generateExplicitMPC

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

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

Синтаксис

EMPCobj = generateExplicitMPC(MPCobj,range)
EMPCobj = generateExplicitMPC(MPCobj,range,opt)

Описание

пример

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.

Чтобы сгенерировать явный контроллер 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.

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

свернуть все

Традиционный контроллер MPC, заданный как контроллер MPC объект. Используйте команду mpc, чтобы создать традиционный контроллер MPC.

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

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

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

свернуть все

Явный контроллер MPC, который эквивалентен входу традиционный контроллер, возвратился как явный контроллер MPC объект. Свойства явного контроллера MPC объект получены в итоге в следующей таблице.

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

Советы

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

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

  • Моделируйте производительность явного диспетчера с помощью sim или команд mpcmoveExplicit или блока Explicit MPC Controller в Simulink®.

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

Введенный в R2014b