Catalytic cracking problem (TACO)

From mintOC
Revision as of 19:13, 29 September 2011 by Ckirches (Talk | contribs) (Catalytic cracking of gas/oil problem (TACO))

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page contains a model of the Catalytic cracking problem in AMPL format, making use of the TACO toolkit for AMPL control optimization extensions. The original model using a collocation formulation can be found in the COPS library. Note that you will need to include a generic AMPL/TACO support file, OptimalControl.mod. To solve this model, you require an optimal control or NLP code that uses the TACO toolkit to support the AMPL optimal control extensions.

AMPL

This is the source file gasoil_taco.mod

# ----------------------------------------------------------------
# Catalytic cracking problem using AMPL and TACO
# (c) Christian Kirches, Sven Leyffer
#
# Source: COPS 3.1 collocation formulation - March 2004
#         Michael Merritt - Summer 2000
# ----------------------------------------------------------------
include OptimalControl.mod;
 
var t;
 
param ne := 2;                       # number of differential equations
param np := 3;                       # number of ODE parameters
param nm > 0, integer;               # number of measurements
 
param bc {1..ne};                    # ODE initial conditions
param tau {1..nm};                   # times at which observations made
 
param z {1..nm, 1..ne};              # observations
var theta {1..np} >= 0, <= 20;                   # ODE parameters
 
var u {s in 1..ne};
 
minimize l2error{j in 1..nm}:
  eval ( sum {s in 1..ne}(u[s] - z[j,s])^2, tau[j] );
 
subject to theta_bounds {i in 1..np}: theta[i] >= 0.0;      
 
subject to bc_cond {s in 1..ne}:  eval (u[s], 0) = bc[s];
 
subject to de1:
  diff(u[1],t) = - (theta[1]+theta[3])*u[1]^2;
 
subject to de2:
  diff(u[2],t) = theta[1]*u[1]^2 - theta[2]*u[2];
 
data gasoil_taco.dat;
 
option solver ...;
 
solve;

This is the data file gasoil_taco.dat

param nm := 21;
 
# Time measurements
 
param tau := 
      1  0   
      2  0.025
      3  0.05
      4  0.075
      5  0.10
      6  0.125
      7  0.150
      8  0.175
      9  0.20
     10  0.225
     11  0.250
     12  0.30
     13  0.35
     14  0.40
     15  0.45
     16  0.50
     17  0.55
     18  0.65
     19  0.75
     20  0.85
     21  0.95;
 
# Concentrations
 
param z:    1        2    :=
   1    1.0000         0
   2    0.8105    0.2000
   3    0.6208    0.2886
   4    0.5258    0.3010
   5    0.4345    0.3215
   6    0.3903    0.3123
   7    0.3342    0.2716
   8    0.3034    0.2551
   9    0.2735    0.2258
  10    0.2405    0.1959
  11    0.2283    0.1789
  12    0.2071    0.1457
  13    0.1669    0.1198
  14    0.1530    0.0909
  15    0.1339    0.0719
  16    0.1265    0.0561
  17    0.1200    0.0460
  18    0.0990    0.0280
  19    0.0870    0.0190
  20    0.0770    0.0140
  21    0.0690    0.0100;
 
param bc := 1 1 2 0;

Other Descriptions

Other descriptions of this problem are available in