exponenta event banner

convertToMPC

Новообращенный nlmpc объект в один или несколько mpc объекты

Описание

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

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

пример

mpcobj = convertToMPC(nlmpcobj,states,inputs) преобразует нелинейный объект контроллера MPC nlmpcobj в один или несколько линейных объектов контроллера MPC в номинальных условиях, указанных в states и inputs. Число линейных контроллеров ПДК, 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 когда N = 1.

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

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

  • Время выборки

  • Горизонты прогнозирования и контроля

  • Настройка весов

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

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

Если nlmpcobj:

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

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

Любые границы состояния в nlmpcobj сбрасываются во время преобразования.

Представлен в R2018b