PROPT Denbigh's System of Reactions: Difference between revisions
No edit summary |
|||
(3 intermediate revisions by one other user not shown) | |||
Line 9: | Line 9: | ||
This optimal control problem is based on the system of chemical reactions initially considered by Denbigh (1958), which was also studied by Aris (1960) and more recently by Luus (1994): | This optimal control problem is based on the system of chemical reactions initially considered by Denbigh (1958), which was also studied by Aris (1960) and more recently by Luus (1994): | ||
<pre> | |||
A + B -> X | A + B -> X | ||
</pre> | |||
<pre> | |||
A + X -> P | A + X -> P | ||
</pre> | |||
<pre> | |||
X -> Y | X -> Y | ||
</pre> | |||
<pre> | |||
X -> Q | X -> Q | ||
</pre> | |||
where X is an intermediate, Y is the desired product, and P and Q are waste products. This system is described by the following differential equations: | where X is an intermediate, Y is the desired product, and P and Q are waste products. This system is described by the following differential equations: | ||
<math> \frac{dx_1}{dt} = -k_1*x_1-k_2*x_1 </math> | <math> \frac{dx_1}{dt} = -k_1*x_1-k_2*x_1 </math> | ||
<math> \frac{dx_2}{dt} = k_1*x_1-k_3+k_4*x_2 </math> | <math> \frac{dx_2}{dt} = k_1*x_1-k_3+k_4*x_2 </math> | ||
<math> \frac{dx_3}{dt} = k_3*x_2 </math> | <math> \frac{dx_3}{dt} = k_3*x_2 </math> | ||
where x1 = [A][B], x2 = [X] and x3 = [Y]. The initial condition is | where x1 = [A][B], x2 = [X] and x3 = [Y]. The initial condition is | ||
<math> x(t_0) = [1 \ 0 \ 0]' </math> | <math> x(t_0) = [1 \ 0 \ 0]' </math> | ||
The rate constants are given by | The rate constants are given by | ||
<math> k_i = k_{i0}*exp(-\frac{E_i}{R*T}), i=1,2,3,4 </math> | <math> k_i = k_{i0}*exp(-\frac{E_i}{R*T}), i=1,2,3,4 </math> | ||
where the values of ki0 and Ei are given by Luus (1994). | where the values of ki0 and Ei are given by Luus (1994). | ||
Line 36: | Line 49: | ||
<math> J = x_3(t_f) </math> | <math> J = x_3(t_f) </math> | ||
where the batch time t_f is specified as 1000 s. The constraints on the control variable (reactor temperature) are | where the batch time t_f is specified as 1000 s. The constraints on the control variable (reactor temperature) are | ||
<math> 273 <= T <= 415 </math> | <math> 273 <= T <= 415 </math> | ||
<source lang="matlab"> | <source lang="matlab"> | ||
Line 124: | Line 139: | ||
<pre> | <pre> | ||
Problem type appears to be: lpcon | Problem type appears to be: lpcon | ||
Time for symbolic processing: 0. | Time for symbolic processing: 0.18833 seconds | ||
Starting numeric solver | Starting numeric solver | ||
===== * * * =================================================================== * * * | ===== * * * =================================================================== * * * | ||
Line 139: | Line 154: | ||
FuncEv 1 ConstrEv 14 ConJacEv 14 Iter 11 MinorIter 1028 | FuncEv 1 ConstrEv 14 ConJacEv 14 Iter 11 MinorIter 1028 | ||
CPU time: 0. | CPU time: 0.046800 sec. Elapsed time: 0.048000 sec. | ||
</pre> | </pre> | ||
Line 145: | Line 160: | ||
<pre> | <pre> | ||
Problem type appears to be: lpcon | Problem type appears to be: lpcon | ||
Time for symbolic processing: 0. | Time for symbolic processing: 0.18641 seconds | ||
Starting numeric solver | Starting numeric solver | ||
===== * * * =================================================================== * * * | ===== * * * =================================================================== * * * | ||
Line 160: | Line 175: | ||
FuncEv 1 ConstrEv 20 ConJacEv 20 Iter 13 MinorIter 233 | FuncEv 1 ConstrEv 20 ConJacEv 20 Iter 13 MinorIter 233 | ||
CPU time: 0. | CPU time: 0.156001 sec. Elapsed time: 0.161000 sec. | ||
</pre> | </pre> | ||
Line 190: | Line 205: | ||
[[File:denbighSystem_01.png]] | [[File:denbighSystem_01.png]] | ||
[[Category:PROPT Examples]] |
Latest revision as of 04:57, 14 February 2012
This page is part of the PROPT Manual. See PROPT Manual. |
Dynamic Optimization of Batch Reactors Using Adaptive Stochastic Algorithms 1997, Eugenio F. Carrasco, Julio R. Banga
Case Study I: Denbigh's System of Reactions
Problem description
This optimal control problem is based on the system of chemical reactions initially considered by Denbigh (1958), which was also studied by Aris (1960) and more recently by Luus (1994):
A + B -> X
A + X -> P
X -> Y
X -> Q
where X is an intermediate, Y is the desired product, and P and Q are waste products. This system is described by the following differential equations:
where x1 = [A][B], x2 = [X] and x3 = [Y]. The initial condition is
The rate constants are given by
where the values of ki0 and Ei are given by Luus (1994).
The optimal control problem is to find T(t) (the temperature of the reactor as a function of time) so that the yield of Y is maximized at the end of the given batch time t_f. Therefore, the performance index to be maximized is
where the batch time t_f is specified as 1000 s. The constraints on the control variable (reactor temperature) are
% Copyright (c) 2007-2008 by Tomlab Optimization Inc.
Problem setup
toms t
Solve the problem, using a successively larger number collocation points
for n=[25 70]
p = tomPhase('p', t, 0, 1000, n);
setPhase(p);
tomStates x1 x2 x3
tomControls T
% Initial guess
if n==25
x0 = {icollocate({
x1 == 1-t/1000;
x2 == 0.15
x3 == 0.66*t/1000
})
collocate(T==273*(t<100)+415*(t>=100))};
else
x0 = {icollocate({
x1 == x1_init
x2 == x2_init
x3 == x3_init
})
collocate(T==T_init)};
end
% Box constraints
cbox = {
0 <= icollocate(x1) <= 1
0 <= icollocate(x2) <= 1
0 <= icollocate(x3) <= 1
273 <= collocate(T) <= 415};
% Boundary constraints
cbnd = initial({x1 == 1; x2 == 0
x3 == 0});
% Various constants and expressions
ki0 = [1e3; 1e7; 10; 1e-3];
Ei = [3000; 6000; 3000; 0];
ki4 = ki0(4)*exp(-Ei(4)./T);
ki3 = ki0(3)*exp(-Ei(3)./T);
ki2 = ki0(2)*exp(-Ei(2)./T);
ki1 = ki0(1)*exp(-Ei(1)./T);
% ODEs and path constraints
ceq = collocate({
dot(x1) == -ki1.*x1-ki2.*x1
dot(x2) == ki1.*x1-(ki3+ki4).*x2
dot(x3) == ki3.*x2});
% Objective
objective = -final(x3);
Solve the problem
options = struct;
options.name = 'Denbigh System';
solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);
x1_init = subs(x1,solution);
x2_init = subs(x2,solution);
x3_init = subs(x3,solution);
T_init = subs(T,solution);
Problem type appears to be: lpcon Time for symbolic processing: 0.18833 seconds Starting numeric solver ===== * * * =================================================================== * * * TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 ===================================================================================== Problem: --- 1: Denbigh System f_k -0.633847592419794490 sum(|constr|) 0.000000569070071430 f(x_k) + sum(|constr|) -0.633847023349723090 f(x_0) -0.660000000000000140 Solver: snopt. EXIT=0. INFORM=1. SNOPT 7.2-5 NLP code Optimality conditions satisfied FuncEv 1 ConstrEv 14 ConJacEv 14 Iter 11 MinorIter 1028 CPU time: 0.046800 sec. Elapsed time: 0.048000 sec.
Problem type appears to be: lpcon Time for symbolic processing: 0.18641 seconds Starting numeric solver ===== * * * =================================================================== * * * TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 ===================================================================================== Problem: --- 1: Denbigh System f_k -0.633520858635081010 sum(|constr|) 0.000526177451145388 f(x_k) + sum(|constr|) -0.632994681183935650 f(x_0) -0.633848214286006680 Solver: snopt. EXIT=0. INFORM=1. SNOPT 7.2-5 NLP code Optimality conditions satisfied FuncEv 1 ConstrEv 20 ConJacEv 20 Iter 13 MinorIter 233 CPU time: 0.156001 sec. Elapsed time: 0.161000 sec.
end
t = collocate(subs(t,solution));
x1 = collocate(x1_init);
x2 = collocate(x2_init);
x3 = collocate(x3_init);
T = collocate(T_init);
Plot result
subplot(2,1,1)
plot(t,x1,'*-',t,x2,'*-',t,x3,'*-');
legend('x1','x2','x3');
title('Denbigh System state variables');
subplot(2,1,2)
plot(t,T,'+-');
legend('T');
title('Denbigh System control');