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 18-Aug-2020 02:55:35):
---------------------------------------------
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