В этом примере показано, как максимизировать производство этиленового объекта окиси для прибыли с помощью экономического контроллера 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
.
Объект имеет четыре состояния:
Плотность газа в реакторе ()
Концентрация C2H4 в реакторе ()
Концентрация C2H4O в реакторе ()
Температура в реакторе ()
Объект имеет три входных параметров:
Концентрация C2H4 в канале ()
Реактор, охлаждающий температуру конверта ()
C2H4 питают уровень ()
Все переменные в модели масштабируются, чтобы быть безразмерными и порядка единицы. Основные уравнения объекта и параметры получены от [1] с некоторыми изменениями в определениях ввода/вывода и упорядоченном расположении.
Объект является асимптотически устойчивым разомкнутым контуром.
Первичная цель управления состоит в том, чтобы максимизировать этиленовую окись (C2H4O) производительность (который в свою очередь максимизирует прибыль) в любой установившейся рабочей точке, учитывая доступность C2H4 в потоке канала.
Производительность C2H4O задана как продукт концентрации C2H4O в реакторе () и общий объемный расход, выходящий из реактора ().
Рабочая точка эффективно определяется тремя входными параметрами. концентрация C2H4 в канале, которым может управлять контроллер MPC. охлаждающаяся температура конверта, которая сохраняет стабильность температуры. уровень канала C2H4, который указывает на доступный этилен, прибывающий из восходящего процесса. Более высокий канал повышения ставки достижимая производительность C2H4O. В этом примере, обоих и измеренные воздействия.
При начальном условии охлаждающейся температурой конверта является 1.1
и доступностью C2H4 является 0.175
.
Tc = 1.1; C2H4Avalability = 0.175;
Вычислите оптимальную производительность C2H4O путем развертки через рабочий диапазон концентрации C2H4 в канале () использования 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 достигается в = 1.6. Другими словами, если объект первоначально будет действовать с различной концентрацией C2H4 в канале, вы ожидаете, что экономический контроллер MPC принесет его к 1,6 таким образом, что оптимальная производительность C2H4O достигается.
Экономический MPC может быть реализован с нелинейным контроллером MPC. Модель предсказания имеет четыре состояния и три входных параметров (один мВ и два MDS). В этом примере, поскольку вам не нужна выходная функция, принимают 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;
Вход Plant должен остаться в пределах насыщения между 0.1
и 3
.
nlobj.MV.Min = 0.1; nlobj.MV.Max = 3;
Скорости изменения также ограничиваются +/-0.02
секунда.
nlobj.MV.RateMin = -0.02*Ts; nlobj.MV.RateMax = 0.02*Ts;
Вместо того, чтобы использовать стандартную квадратичную целевую функцию, пользовательская функция стоимости используется в качестве замены. Вы хотите максимизировать производительность 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
функция. Это возвращает мВ 1,0, указывая, что экономический MPC увеличит мВ с 0,5 до 1, ограниченный ограничением MVRate.
mv = nlmpcmove(nlobj,x0,u0,zeros(1,4),[Tc C2H4Avalability]);
Откройте модель 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
.
Модель включает постоянные (нулевые) ссылки для четырех объектов выходные параметры. Блок Nonlinear MPC Controller требует этих опорных сигналов, но они проигнорированы в пользовательской функции стоимости.
Подсистема Объекта вычисляет состояния объекта путем интеграции ОДУ в oxidationPlantCT.m
. Примите, что все состояния измеримы таким образом, что вы не должны реализовывать нелинейное средство оценки состояния в этом примере. C2H4O
выход объекта является мгновенной производительностью C2H4O, которая используется для целей отображения.
Запустите симуляцию.
open_system([mdl '/MV']); open_system([mdl '/C2H4O']); sim(mdl)
Поскольку объект C2H4O, действующий при начальном условии, не оптимален, его прибыль может быть улучшена. За первые 100 секунд постепенно перемещается экономический контроллер MPC, объект к истинному оптимальному условию при том же охлаждении заключают в оболочку температуру и ограничения доступности C2H4. Это улучшает производительность C2H4O:
который мог стоить миллионы долларов в год в крупномасштабном производстве.
За следующие 100 секунд, охлаждающиеся повышения температуры конверта от 1.1
к 1.15
. Экономический контроллер MPC перемещает объект гладко в новое оптимальное условие 0.0135
как ожидалось.
За следующие 100 секунд доступность C2H4 увеличивается с 0.175
к 0.25
. Экономический контроллер MPC снова может переместить объект новое оптимальное устойчивое состояние 0.0195
.
Закройте модель Simulink.
bdclose(mdl)
[1] Х. Дуранд, М. Эллис, П. Д. Кристофайдс. "Экономические прогнозирующие системы управления модели для входной ограничительной обработки скорости изменения и гарантируемых экономических показателей". Компьютеры и Химическое машиностроение. Издание 92,2016, стр 18-36.