Экономическое MPC управление производства оксида этилена

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

Этот пример требует программного обеспечения Simulink ® для моделирования нелинейного управления MPC объекта окисления этилена в Simulink.

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink(R) is required to run this example.')
    return
end

В примере используется fsolve команда из Optimization Toolbox™, чтобы найти номинальную рабочую точку равновесия и fmincon метод как метод нелинейного программирования по умолчанию решатель.

if ~mpcchecktoolboxinstalled('optim')
    disp('Optimization Toolbox must be installed to run this example.')
    return
end

Нелинейные Объекты окисления этилена

Превращение этилена (C2H4) в этиленоксид (C2H4O) происходит в охлажденном газофазном каталитическом реакторе. Три реакции происходят одновременно в хорошо смешанной газовой фазе внутри реактора:

C2H4 + 0.5*O2 -> C2H4O
C2H4 + 3*O2 -> 2*CO2 + 2*H2O
C2H4O + 2.5*O2 -> 2*CO2 + 2*H2O

Первая реакция желательна, а две другие нежелательны, потому что они снижают C2H4O выработку. Смесь воздуха и этилена непрерывно подают в реактор. Первичный нелинейная динамическая модель реактора реализована как набор обыкновенных дифференциальных уравнений (ОДУ) в oxidationPlantCT функция. Для получения дополнительной информации смотрите oxidationPlantCT.m.

У объекта четыре состояния:

  • Плотность газа в реакторе ()$x_1$

  • C2H4 концентрация в реакторе ()$x_2$

  • C2H4O концентрация в реакторе ()$x_3$

  • Температура в реакторе ()$x_4$

Объект имеет три входа:

  • C2H4 концентрация в сырье ()$u_1$

  • Температура рубашки охлаждения реактора ()$u_2$

  • C2H4 подачи ()$u_3$

Все переменные в модели масштабируются, чтобы быть безразмерными и иметь порядок единиц. Основные уравнения и параметры объекта получают из [1] с некоторыми изменениями в определениях входа/выхода и упорядоченном расположении.

Объект асимптотически разомкнут стабильно.

Управляйте целями и ограничениями

Основной целью управления является максимальное увеличение дебита этиленоксида (C2H4O) (что, в свою очередь, максимизирует прибыль) в любой установившейся рабочей точке, учитывая наличие C2H4 в потоке сырья.

Скорость производства C2H4O определяется как продукт концентрации C2H4O в реакторе $x_3$() и общей объемной скорости потока жидкости, выходящего из реактора ().${u_3}/{u_1}*{x_4}$

Рабочая точка эффективно определяется тремя входами.$u_1$ - C2H4 концентрация в подаче, которой может управлять контроллер MPC.$u_2$ температура охлаждающей рубашки, которая сохраняет температуру стабильной.$u_3$ - C2H4 скорость подачи, которая указывает на доступный этилен, поступающий от вышестоящего процесса. Более высокая скорость подачи увеличивает достижимую скорость производства C2H4O. В этом примере оба$u_2$ и$u_3$ являются измеренными нарушениями порядка.

Оптимальный дебит в начальной рабочей точке

При начальном условии температура охлаждающей рубашки 1.1 и доступность C2H4 0.175.

Tc = 1.1;
C2H4Avalability = 0.175;

Вычислите оптимальный дебит C2H4O путем пролистывания рабочей области значений концентрации C2H4 в сырье $u_1$() с помощью fsolve.

uRange = 0.1:0.1:3;
EORate = zeros(length(uRange),1);
optimopt = optimoptions('fsolve','Display','none');
for ct = 1:length(uRange)
    xRange = real(fsolve(@(x) oxidationPlantCT(x,[uRange(ct);Tc;C2H4Avalability]),rand(1,4),optimopt));
    EORate(ct) = C2H4Avalability/uRange(ct)*xRange(3)*xRange(4);
end
figure
plot(uRange,EORate)
xlabel('C2H4 concentration in the feed')
ylabel('C2H4O Production Rate')

Оптимальный темп производства C2H4O 0,0156 достигается при$u_1$ = 1,6. Другими словами, если объект первоначально работает с другой концентрацией C2H4 в сырье, вы ожидаете, что экономический контроллер MPC доведет его до 1,6, так что достигается оптимальный уровень производства C2H4O.

Нелинейный проект MPC

Экономический MPC может быть реализован с нелинейным контроллером MPC. Модель предсказания имеет четыре состояния и три входа (один MV и два MD). В этом примере, поскольку вам не нужна выходная функция, примите y = x.

nlobj = nlmpc(4,4,'MV',1,'MD',[2 3]);
nlobj.States(1).Name = 'Den';
nlobj.States(1).Name = 'C2H4';
nlobj.States(1).Name = 'C2H4O';
nlobj.States(1).Name = 'Tc';
nlobj.MV.Name = 'CEin';
nlobj.MD(1).Name = 'Tc';
nlobj.MD(2).Name = 'Availability';
In standard cost function, zero weights are applied by default to one or more OVs because there are fewer MVs than OVs.

Нелинейная модель объекта управления задана в oxidationPlantDT. Это модель в дискретном времени, где для интегрирования используется многоступенчатый явный метод Эйлера. Хотя в этом примере используется нелинейная модель объекта управления, можно также реализовать экономический MPC с помощью линейных моделей объекта управления.

nlobj.Model.StateFcn = 'oxidationPlantDT';
nlobj.Model.IsContinuousTime = false;

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

Относительно большой шаг расчета 25 секунды, используемые здесь, подходят, когда объект является стабильным, и основной целью является экономическая оптимизация. Горизонт предсказания 2, что дает время предсказания 50 секунд.

Ts = 25;
nlobj.Ts = Ts;                                  % Sample time
nlobj.PredictionHorizon = 2;                    % Prediction horizon
nlobj.ControlHorizon = 1;                       % Control horizon

Все состояния в модели предсказания должны быть положительными, основанными на первых принципах. Поэтому задайте минимальную границу нуля для всех состояний.

nlobj.States(1).Min = 0;
nlobj.States(2).Min = 0;
nlobj.States(3).Min = 0;
nlobj.States(4).Min = 0;

Вход объекта$u_1$ должен оставаться в пределах насыщения между 0.1 и 3.

nlobj.MV.Min = 0.1;
nlobj.MV.Max = 3;

Скорости изменения$u_1$ также ограничены +/- 0.02/ сек.

nlobj.MV.RateMin = -0.02*Ts;
nlobj.MV.RateMax = 0.02*Ts;

Пользовательская функция затрат для экономического MPC

Вместо использования стандартной квадратичной целевой функции в качестве замены используется пользовательская функция затрат. Необходимо максимизировать скорость добычи C2H4O в конце горизонта предсказания.

f = -(u3/u1*x3*x4)

Отрицательный знак в f используется для максимизации производительности, поскольку контроллер минимизирует f во время оптимизации. Для получения дополнительной информации смотрите oxidationCostFcn.m.

nlobj.Optimization.CustomCostFcn = 'oxidationCostFcn';
nlobj.Optimization.ReplaceStandardCost = true;

Валидация пользовательских функций

Предположим, что объект первоначально работает в u1 = 0.5.

u0 = 0.5;

Найдите состояния в установившемся состоянии, используя fsolve.

x0 = real(fsolve(@(x) oxidationPlantCT(x,[u0;Tc;C2H4Avalability]),rand(1,4),optimopt));

Скорость производства C2H4O составляет 0,0138, далеко от оптимального условия 0,0156.

EORate0 = C2H4Avalability/u0*x0(3)*x0(4);

Проверьте функцию состояния и функцию стоимости при начальном условии.

validateFcns(nlobj,x0,u0,[Tc C2H4Avalability]);
Model.StateFcn is OK.
No output function specified. Assuming "y = x" in the prediction model.
Optimization.CustomCostFcn is OK.
Analysis of user-provided model, cost, and constraint functions complete.

Вы можете вычислить первое перемещение, используя nlmpcmove функция. Это возвращает MV 1,0, что указывает на то, что экономический MPC увеличит MV с 0,5 до 1, ограниченный ограничением MVRate.

mv = nlmpcmove(nlobj,x0,u0,zeros(1,4),[Tc C2H4Avalability]);

Simulink Модели с экономическим контроллером MPC

Откройте модель Simulink.

mdl = 'mpc_economicEO';
open_system(mdl)

Температура охлаждающей рубашки первоначально 1.1 и остается постоянным в течение первых 100 секунд. Затем он увеличивается до 1.15и, следовательно, снижает оптимальный темп производства C2H4O от 0.0156 на 0.0135.

Доступность C2H4 первоначально 0.175 и остается постоянным в течение первых 200 секунд. Затем он увеличивается до 0.25и, следовательно, увеличивает оптимальный темп производства C2H4O от 0.0135 на 0.0195.

Модель включает постоянные (нулевые) ссылки для четырех выходов объекта. Блок Контроллер нелинейного MPC требует этих опорных сигналов, но они игнорируются в пользовательской функции затрат.

Подсистема Plant вычисляет состояния объекта путем интеграции ОДУ в oxidationPlantCT.m. Предположим, что все состояния измеримы таким образом, что вам не нужно реализовывать нелинейную оценку состояния в этом примере. The C2H4O выход объекта - это мгновенный темп производства C2H4O, который используется в целях отображения.

Моделирование модели и анализ результатов

Запустите симуляцию.

open_system([mdl '/MV']);
open_system([mdl '/C2H4O']);
sim(mdl)

Поскольку C2H4O объект, работающий в начальном условии, не оптимален, его прибыль может быть улучшена. В первые 100 секунд экономичный контроллер MPC постепенно переводит объект в истинно оптимальное условие при той же температуре охлаждающей рубашки и C2H4 ограничениях доступности. Он улучшает C2H4O производительность за счет:

$$\left( {0.0156 - 0.0138} \right)/0.0138 = 13\% $$

который может стоить миллионы долларов в год в крупном производстве.

В течение следующих 100 секунд температура охлаждающей рубашки увеличивается с 1.1 на 1.15. Экономический контроллер MPC плавно перемещает объект к новому оптимальному условию 0.0135 как и ожидалось.

За следующие 100 секунд доступность C2H4 увеличивается с 0.175 на 0.25. Экономический контроллер MPC снова способен переместить объект в новое оптимальное установившееся состояние 0.0195.

Закройте модель Simulink.

bdclose(mdl)

Ссылки

[1] H. Durand, M. Ellis, P. D. Christofides. «Прогнозирующие системы управления экономической модели для входа ограничения скорости изменения и гарантированной экономической эффективности». Компьютеры и химическая техника. Том 92,2016, стр. 18-36.

Похожие темы