PROPT Catalyst Mixing: Difference between revisions
From TomWiki
Jump to navigationJump to search
(Created page with "{{Part Of Manual|title=the PROPT Manual|link=PROPT Manual}} Second-order sensitivities of general dynamic systems with application to optimal control problems. 1999...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Part Of Manual|title=the PROPT | {{Part Of Manual|title=the PROPT Manual|link=[[PROPT|PROPT Manual]]}} | ||
Second-order sensitivities of general dynamic systems with application to optimal control problems. 1999, Vassilios S. Vassiliadis, Eva Balsa Canto, Julio R. Banga | Second-order sensitivities of general dynamic systems with application to optimal control problems. 1999, Vassilios S. Vassiliadis, Eva Balsa Canto, Julio R. Banga | ||
Line 111: | Line 111: | ||
title('Catalyst Mixing control'); | title('Catalyst Mixing control'); | ||
</source> | </source> | ||
[[File:catalystMixing_01.png]] |
Revision as of 14:22, 2 November 2011
This page is part of the PROPT Manual. See PROPT Manual. |
Second-order sensitivities of general dynamic systems with application to optimal control problems. 1999, Vassilios S. Vassiliadis, Eva Balsa Canto, Julio R. Banga
Case Study 6.2: Catalyst mixing
Problem formulation
This problem considers a plug-flow reactor, packed with two catalysts, involving the reactions
S1 <-> S2 -> S3
The optimal mixing policy of the two catalysts has to be determined in order to maximize the production of species S3. This dynamic optimization problem was originally proposed by Gunn and Thomas (1965), and subsequently considered by Logsdon (1990) and Vassiliadis (1993). The mathematical formulation is
Maximize:
subject to:
% Copyright (c) 2007-2008 by Tomlab Optimization Inc.
Problem setup
toms t
p = tomPhase('p', t, 0, 1, 30);
setPhase(p);
tomStates x1 x2
tomControls u
% Initial guess
% Note: The guess for t_f must appear in the list before expression involving t.
x0 = {icollocate({
x1 == 1-0.085*t
x2 == 0.05*t
})
collocate(u==1-t)};
% Box constraints
cbox = {0.9 <= icollocate(x1) <= 1
0 <= icollocate(x2) <= 0.1
0 <= collocate(u) <= 1};
% Boundary constraints
cbnd = {initial({x1 == 1; x2 == 0})
final({x1 <= 0.95})};
% ODEs and path constraints
ceq = collocate({
dot(x1) == u.*(10*x2-x1)
dot(x2) == u.*(x1-10*x2)-(1-u).*x2});
% Objective
objective = -1+final(x1)+final(x2);
Solve the problem
options = struct;
options.name = 'Catalyst Mixing';
solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);
t = subs(collocate(t),solution);
x1 = subs(collocate(x1),solution);
x2 = subs(collocate(x2),solution);
u = subs(collocate(u),solution);
Problem type appears to be: lpcon Time for symbolic processing: 0.12132 seconds Starting numeric solver ===== * * * =================================================================== * * * TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 ===================================================================================== Problem: --- 1: Catalyst Mixing f_k -0.048059280695325057 sum(|constr|) 0.000000452031611660 f(x_k) + sum(|constr|) -0.048058828663713395 f(x_0) 0.964999999999998080 Solver: snopt. EXIT=0. INFORM=1. SNOPT 7.2-5 NLP code Optimality conditions satisfied FuncEv 1 ConstrEv 66 ConJacEv 66 Iter 43 MinorIter 248 CPU time: 0.062400 sec. Elapsed time: 0.065000 sec.
Plot result
subplot(2,1,1)
plot(t,x1,'*-',t,x2,'*-');
legend('x1','x2');
title('Catalyst Mixing state variables');
subplot(2,1,2)
plot(t,u,'+-');
legend('u');
title('Catalyst Mixing control');