convertToMPC

Преобразование nlmpc объект в один или несколько mpc объекты

Описание

На практике при получении сопоставимых характеристик линейный MPC предпочтителен по сравнению с нелинейным MPC из-за его более высокой вычислительной эффективности. Использование convertToMPC функция позволяет преобразовать нелинейный контроллер MPC в один или несколько линейных контроллеров MPC в определенных рабочих точках. Затем можно реализовать запланированный по усилению или адаптивный MPC с помощью линейных контроллеров и сравнить их эффективность с эталонным нелинейным MPC-контроллером. Для получения примера смотрите Нелинейные и Запланированные по Усилению MPC управления Окисления Этилена Объекта.

Использовать convertToMPCнелинейный контроллер не должен иметь пользовательских функций затрат или ограничений, поскольку эти пользовательские функции не поддерживаются для линейных контроллеров MPC.

пример

mpcobj = convertToMPC(nlmpcobj,states,inputs) преобразует нелинейный объект контроллера MPC nlmpcobj в один или несколько линейных объектов контроллера MPC при номинальных условиях, заданных в states и inputs. Количество линейных контроллеров MPC, N, равно количеству строк в states и inputs.

mpcobj = convertToMPC(nlmpcobj,states,inputs,MOIndex) задает индексы измеренных выходов. Используйте этот синтаксис, когда ваш контроллер имеет неизмеренные выходные сигналы.

mpcobj = convertToMPC(nlmpcobj,states,inputs,MOIndex,parameters) задает значения параметров модели предсказания для каждого номинального условия. Используйте этот синтаксис, когда ваша модель предсказания контроллера имеет необязательные параметры.

Примеры

свернуть все

Создайте нелинейный контроллер MPC с четырьмя состояниями, одной выходной переменной, одной манипулированной переменной и одним измеренным нарушением порядка.

nlobj = nlmpc(4,1,'MV',1,'MD',2);

Задайте шаг расчета контроллера и горизонты.

nlobj.PredictionHorizon = 10;
nlobj.ControlHorizon = 3;

Задайте функцию состояния модели предсказания.

nlobj.Model.StateFcn = 'oxidationStateFcn';

Задайте выходную функцию модели предсказания и выходной переменный масштабный коэффициент.

nlobj.Model.OutputFcn = @(x,u) x(3);
nlobj.OutputVariables.ScaleFactor = 0.03;

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

nlobj.ManipulatedVariables.Min = 0.0704;
nlobj.ManipulatedVariables.Max = 0.7042;
nlobj.ManipulatedVariables.ScaleFactor = 0.6;

Задайте измеренный масштабный коэффициент нарушения порядка.

nlobj.MeasuredDisturbances.ScaleFactor = 0.5;

Вычислите состояние и входные условия работы для трех линейных контроллеров MPC с помощью fsolve функция.

options = optimoptions('fsolve','Display','none');

uLow = [0.38 0.5];
xLow = fsolve(@(x) oxidationStateFcn(x,uLow),[1 0.3 0.03 1],options);

uMedium = [0.24 0.5];
xMedium = fsolve(@(x) oxidationStateFcn(x,uMedium),[1 0.3 0.03 1],options);

uHigh = [0.15 0.5];
xHigh = fsolve(@(x) oxidationStateFcn(x,uHigh),[1 0.3 0.03 1],options);

Создайте линейные контроллеры MPC для каждого из этих номинальных условий.

mpcobjLow = convertToMPC(nlobj,xLow,uLow);
mpcobjMedium = convertToMPC(nlobj,xMedium,uMedium);
mpcobjHigh = convertToMPC(nlobj,xHigh,uHigh);

Можно также создать несколько контроллеров, используя массивы номинальных условий. Количество строк в массивах определяет количество создаваемых контроллеров. Линейные контроллеры возвращаются как массив ячеек mpc объекты.

u = [uLow; uMedium; uHigh];
x = [xLow; xMedium; xHigh];
mpcobjs = convertToMPC(nlobj,x,u);

Просмотр свойств mpcobjLow контроллер.

mpcobjLow
 
MPC object (created on 23-Apr-2021 11:07:17):
---------------------------------------------
Sampling time:      1 (seconds)
Prediction Horizon: 10
Control Horizon:    3

Plant Model:        
                                      --------------
      1  manipulated variable(s)   -->|  4 states  |
                                      |            |-->  1 measured output(s)
      1  measured disturbance(s)   -->|  2 inputs  |
                                      |            |-->  0 unmeasured output(s)
      0  unmeasured disturbance(s) -->|  1 outputs |
                                      --------------
Indices:
  (input vector)    Manipulated variables: [1 ]
                    Measured disturbances: [2 ]
  (output vector)        Measured outputs: [1 ]

Disturbance and Noise Models:
        Output disturbance model: default (type "getoutdist(mpcobjLow)" for details)
         Measurement noise model: default (unity gain after scaling)

Weights:
        ManipulatedVariables: 0
    ManipulatedVariablesRate: 0.1000
             OutputVariables: 1
                         ECR: 100000

State Estimation:  Default Kalman Filter (type "getEstimator(mpcobjLow)" for details)

Constraints:
 0.0704 <= u1 <= 0.7042, u1/rate is unconstrained, y1 is unconstrained

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

свернуть все

Нелинейный контроллер MPC, заданный как nlmpc объект.

Примечание

Ваш nlmpc Объект контроллера не должен иметь пользовательских функций затрат или ограничений.

Номинальные значения состояния, заданные как N -by Nx массив, где Nx равно nlmpcobj.Dimensions.NumberOfStates. Каждая строка States задает номинальный набор состояний, которые будут использоваться при преобразовании.

Количество строк в states и inputs должен совпадать.

Номинальные входные значения, заданные как N -by Nu массив, где Nu равно nlmpcobj.Dimensions.NumberOfInputs. Каждая строка Inputs задает номинальный набор входов, используемых при преобразовании.

Количество строк в states и inputs должен совпадать.

Измеренные выходные индексы, заданные как вектор длины Ny, где Ny - количество выходов. Если MOIndex является [], каждый выход измеряется. В противном случае все выходы, не перечисленные в MOIndex не измерены.

convertToMPC использует MOIndex чтобы сконфигурировать оценки состояния по умолчанию в mpcobj.

Значения параметров модели предсказания, заданные как N -by Np массив ячеек, где Np равно nlmpcobj.Model.NumberOfParameters. Каждая строка parameters задает значения параметров модели для заданного номинального условия. В каждой строке порядок параметров должен совпадать с порядком, заданным в функциях модели. Каждый параметр должен быть числовым параметром с правильными размерностями; то есть размерности, ожидаемые функциями модели предсказания.

Для каждого номинального условия эти параметры передаются в функцию состояния (nlmpcobj.Model.StateFcn) и выходную функцию (nlmpcobj.Model.OutputFcn) нелинейного контроллера MPC.

Количество строк в parameters должно совпадать с количеством строк в states и inputs.

Если ваша модель предсказания контроллера имеет необязательные параметры, вы должны задать parameters.

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

свернуть все

Линейные контроллеры MPC, созданные для каждого номинального условия, возвращаются как одно из следующих:

  • Одинок mpc объект при N = 1.

  • Массив ячеек из mpc объекты длины N когда N > 1. Каждый объект соответствует одному номинальному условию.

convertToMPC копирует следующие свойства контроллера из nlmpcobj контроллерам в mpcobj:

  • Шаг расчета

  • Предсказание и управление горизонтами

  • Веса настройки

  • Ограничения, накладываемые на выход переменные, манипулируемые переменные и манипулируемые переменные скорости

  • Масштабные коэффициенты, имена и модули для переменных и нарушений порядка

Если nlmpcobj:

  • Имеет неизмеренные каналы нарушения порядка, затем контроллеры в mpcobj иметь коэффициент усиления для их входных и выходных моделей возмущения.

  • Не имеет немеренных каналов нарушения порядка, тогда контроллеры в mpcobj имеют выходы возмущения по умолчанию.

Ограничения любого состояния в nlmpcobj отбрасываются во время преобразования.

Введенный в R2018b