В этом примере показано, как максимизировать производство этиленоксидной установки для получения прибыли с использованием экономичного контроллера MPC. Этот контроллер реализован с использованием нелинейного MPC-контроллера с пользовательской функцией затрат на основе производительности.
В этом примере требуется программное обеспечение Simulink ® для моделирования нелинейного управления MPC установки окисления этилена в Simulink.
if ~mpcchecktoolboxinstalled('simulink') disp('Simulink(R) is required to run this example.') return end
В примере используется fsolve из 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. Модель прогнозирования имеет четыре состояния и три входа (один 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;
Вход установки
должен находиться в пределах насыщения между 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 функция. Он возвращает MV 1,0, указывая, что экономический MPC увеличит MV с 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. Экономичный контроллер ПДК плавно переводит установку в новое оптимальное состояние 0.0135 как и ожидалось.
В течение следующих 100 секунд доступность C2H4 увеличивается с 0.175 кому 0.25. Экономический контроллер MPC снова способен перевести установку в новое оптимальное устойчивое состояние 0.0195.
Закройте модель Simulink.
bdclose(mdl)
[1] Х. Дуранд, М. Эллис, П. Д. Кристофайдс. «Прогнозные схемы управления экономической моделью для обработки ограничений скорости изменения входных данных и гарантированной экономической эффективности». Компьютеры и химическая инженерия. Том 92,2016, стр. 18-36.