generateExplicitMPC

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

Описание

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

пример

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 объект

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

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

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

свернуть все

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

СвойствоОписание
MPCТрадиционный (неявный) объект контроллера раньше генерировал явный контроллер MPC. Вы создаете этот контроллер MPC, использующий, mpc команда. Это - первый аргумент к generateExplicitMPC когда вы создаете явный контроллер 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