Methanol to Hydrocarbons problem (TACO)

From mintOC
Revision as of 21:43, 29 September 2011 by Ckirches (Talk | contribs) (References for methanol problem (TACO))

Jump to: navigation, search

This page contains a model of the Methanol to Hydrocarbons problem in AMPL format, making use of the TACO toolkit for AMPL control optimization extensions. This problem is due to <bibref>Floudas1999</bibref> and <bibref>Maria1989</bibref>. 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 methanol_taco.mod

# ----------------------------------------------------------------
# Methanol to Hydrocarbons 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 := 3;                       # number of differential equations
param np := 5;                       # 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} := 1.0;            #  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 eqn1:
  diff(u[1],t) = - (2*theta[2] - 
                 (theta[1]*u[2])/((theta[2]+theta[5])*u[1]+u[2]) +
                 theta[3] + theta[4])*u[1];
 
subject to eqn2:
  diff(u[2],t) = (theta[1]*u[1]*(theta[2]*u[1]-u[2]))/
               ((theta[2]+theta[5])*u[1]+u[2]) +
               theta[3]*u[1];
 
subject to eqn3:
  diff(u[3],t) = (theta[1]*u[1]*(u[2]+theta[5]*u[1]))/
               ((theta[2]+theta[5])*u[1]+u[2]) +
               theta[4]*u[1];
 
data methanol_taco.dat;
 
option solver ...;
 
solve;

This is the data file methanol_taco.dat

# Time measurements
 
param tau := 
      1  0
      2  0.050
      3  0.065
      4  0.080
      5  0.123
      6  0.233
      7  0.273
      8  0.354
      9  0.397
     10  0.418
     11  0.502
     12  0.553
     13  0.681
     14  0.750
     15  0.916
     16  0.937
     17  1.122;
 
# Concentrations
 
param z: 1        2         3   :=
 1    1.0000         0         0
 2    0.7085    0.1621    0.0811
 3    0.5971    0.1855    0.0965
 4    0.5537    0.1989    0.1198
 5    0.3684    0.2845    0.1535
 6    0.1712    0.3491    0.2097
 7    0.1198    0.3098    0.2628
 8    0.0747    0.3576    0.2467
 9    0.0529    0.3347    0.2884
10    0.0415    0.3388    0.2757
11    0.0261    0.3557    0.3167
12    0.0208    0.3483    0.2954
13    0.0085    0.3836    0.2950
14    0.0053    0.3611    0.2937
15    0.0019    0.3609    0.2831
16    0.0018    0.3485    0.2846
17    0.0006    0.3698    0.2899;
 
param bc := 1 1 2 0 3 0;

Other Descriptions

Other descriptions of this problem are available in

References

<bibreferences/>