PROPT Park-Ramirez bioreactor

From TomWiki
Revision as of 08:11, 9 November 2011 by Mbot (talk | contribs)
Jump to navigationJump to search

Notice.png

This page is part of the PROPT Manual. See PROPT Manual.

Dynamic optimization of chemical and biochemical processes using restricted second-order information 2001, Eva Balsa-Canto, Julio R. Banga, Antonio A. Alonso Vassilios S. Vassiliadis

Case Study I: Park-Ramirez bioreactor

Problem description

This case study deals with the optimal production of secreted protein in a fed-batch reactor. It was originally formulated by Park and Ramirez (Park & Ramirez, 1988) and it has also been considered by other researchers (Vassiliadis, 1993; Yang & Wu, 1994; Banga, Irizarry & Seider, 1995; Luus, 1995; Tholudur & Ramirez, 1997). The objective is to maximize the secreted heterologous protein by a yeast strain in a fed-batch culture. The dynamic model accounts for host-cell growth, gene expression, and the secretion of expressed polypeptides. The mathematical statement is as follows:

Find u(t) over t in [t0,t_f] to maximize:


subject to:


with:


where x1 and x2 are, respectively, the concentration of the secreted protein and the total protein (l-1), x3 is the culture cell density (g l-1), x4 is the substrate concentration (g l-1), x5 is the holdup volume (l), u is the nutrient (glucose) feed rate (l h-1), and J is the mass of protein produced (in arbitrary units). The initial conditions are:


For final time t_f = 15 h, and the following constraints on the control variable:


% Copyright (c) 2007-2008 by Tomlab Optimization Inc.

Problem setup

toms t

Solve the problem, using a successively larger number collocation points

for n=[20 40 80 120]


    p = tomPhase('p', t, 0, 15, n);
    setPhase(p);

    tomStates z1 z2 z3 z4 z5
    tomControls u

    if n>20
        % Interpolate an initial guess for the n collocation points
        x0 = {icollocate({z1 == z1opt; z2 == z2opt
            z3 == z3opt; z4 == z4opt; z5 == z5opt})
            collocate(u == uopt)};
    else
        x0 = {};
    end

    % Box constraints
    cbox = {icollocate({z1 <= 3
        z2 <= 3; 0   <= z3 <= 4
        0 <= z4 <= 10; 0.5 <= z5 <= 25})
        0 <= collocate(u) <= 2.5};

    % Boundary constraints
    cbnd = initial({z1 == 0; z2 == 0; z3 == 1
        z4 == 5; z5 == 1});

    % Various constants and expressions
    g3 = 21.87*z4./(z4+.4)./(z4+62.5);
    g1 = 4.75*g3./(0.12+g3);
    g2 = z4./(0.1+z4).*exp(-5*z4);

    % ODEs and path constraints
    ceq = collocate({
        dot(z1) == g1.*(z2-z1)-u./z5.*z1
        dot(z2) == g2.*z3-u./z5.*z2
        dot(z3) == g3.*z3-u./z5.*z3
        dot(z4) == -7.3*g3.*z3+u./z5.*(20-z4)
        dot(z5) == u});

    % Secreted protein must be less than total protein
    % proteinlimit = {z1 <= z2};

    % Objective
    if n == 120
        objective = -final(z1)*final(z5)+var(diff(collocate(u)));
    else
        objective = -final(z1)*final(z5);
    end

Solve the problem

    options = struct;
    options.name = 'Park Bio Reactor';
    solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);

    % Optimal z and u, to use as starting guess in the
    % next iteration
    z1opt = subs(z1, solution);
    z2opt = subs(z2, solution);
    z3opt = subs(z3, solution);
    z4opt = subs(z4, solution);
    z5opt = subs(z5, solution);
    uopt  = subs(u, solution);
Problem type appears to be: qpcon
Time for symbolic processing: 0.48856 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Park Bio Reactor               f_k     -31.891604942090204000
                                       sum(|constr|)      0.000000000222835644
                              f(x_k) + sum(|constr|)    -31.891604941867367000
                                              f(x_0)      0.000000000000000000

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv  102 ConJacEv  102 Iter   61 MinorIter  911
CPU time: 0.171601 sec. Elapsed time: 0.172000 sec. 

Problem type appears to be: qpcon
Time for symbolic processing: 0.48207 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Park Bio Reactor               f_k     -29.523702508277267000
                                       sum(|constr|)      0.000000000531678452
                              f(x_k) + sum(|constr|)    -29.523702507745590000
                                              f(x_0)    -31.891604942089948000

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv   75 ConJacEv   75 Iter   58 MinorIter  588
CPU time: 0.436803 sec. Elapsed time: 0.434000 sec. 

Problem type appears to be: qpcon
Time for symbolic processing: 0.4837 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Park Bio Reactor               f_k     -31.866762161406442000
                                       sum(|constr|)      0.000000000726937524
                              f(x_k) + sum(|constr|)    -31.866762160679503000
                                              f(x_0)    -29.523702508277417000

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv  137 ConJacEv  137 Iter  120 MinorIter  784
CPU time: 4.586429 sec. Elapsed time: 4.584000 sec. 

Problem type appears to be: qpcon
Time for symbolic processing: 0.51719 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Park Bio Reactor               f_k     -32.616144466384739000
                                       sum(|constr|)      0.000000000312031161
                              f(x_k) + sum(|constr|)    -32.616144466072711000
                                              f(x_0)    -31.477810607457531000

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv  134 ConJacEv  134 Iter  116 MinorIter  930
CPU time: 46.815900 sec. Elapsed time: 16.326000 sec. 


end

t  = subs(collocate(t),solution);
z1 = collocate(z1opt);
z2 = collocate(z2opt);
z3 = collocate(z3opt);
z4 = collocate(z4opt);
z5 = collocate(z5opt);
u  = collocate(uopt);

Plot result

subplot(2,1,1)
plot(t,z1,'*-',t,z2,'*-',t,z3,'*-',t,z4,'*-',t,z5,'*-');
legend('z1','z2','z3','z4','z5');
title('Park Bio Reactor state variables');

subplot(2,1,2)
plot(t,u,'+-');
legend('u');
title('Park Bio Reactor control');

ParkBioReactor 01.png