# Isomerization of Alpha-Pinene problem (TACO)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page contains a model of the Isomerization of Alpha-Pinene problem in AMPL format, making use of the TACO toolkit for AMPL control optimization extensions. This problem is due to [Box1973]Author: G.E.P. Box; W.G. Hunter; J.F. MacGregor; J. Erjavec
Journal: Technometrics
Pages: 33--51
Title: Some problems associated with the analysis of multiresponse data
Volume: 15
Year: 1973 . 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 pinene_taco.mod

```# ----------------------------------------------------------------
# Insomerization of Alpha-Pinene problem using AMPL and TACO
# (c) Christian Kirches, Sven Leyffer
#
# Source: COPS 3.1 collocation formulation - March 2004
#         Alexander S. Bondarenko - Summer 1998
# ----------------------------------------------------------------
include OptimalControl.mod;

param ne > 0, integer;               # number of differential equations
param np > 0, integer;               # number of ODE parameters
param nm > 0, integer;               # number of measurements

param bc {1..ne};                    # boundary conditions
param tau {1..nm};                   # times at which observations made

var t;
var tf := tau[nm];

param z {1..nm,1..ne};               # observations
var theta {1..np} >= 0, <= 100;      # ODE parameters

var u{1..ne} >= 0, <= 200;

minimize l2error{i in 1..nm}:
eval ( sum {s in 1..ne} (u[s] - z[i,s])^2, tau[i] );

subject to theta_bounds {i in 1..np}: theta[i] >= 0.0;

subject to ode_bc {s in 1..ne}:  eval(u[s], 0.0) = bc[s];

subject to de1:
diff (u, t) = - (theta+theta)*u;

subject to de2:
diff (u, t) = theta*u;

subject to de3:
diff (u, t) = theta*u - (theta+theta)*u + theta*u;

subject to de4:
diff (u, t) = theta*u;

subject to de5:
diff (u, t) = theta*u - theta*u;

data pinene_taco.dat;

option solver ...;

solve;```

This is the data file pinene_taco.dat

```param ne := 5;
param np := 5;
param nm := 8;

# Time measurements

param tau :=
1     1230.0
2     3060.0
3     4920.0
4     7800.0
5    10680.0
6    15030.0
7    22620.0
8    36420.0;

# Concentrations

param z :
1       2       3       4       5   :=
1   88.35    7.3     2.3     0.4     1.75
2   76.4    15.6     4.5     0.7     2.8
3   65.1    23.1     5.3     1.1     5.8
4   50.4    32.9     6.0     1.5     9.3
5   37.5    42.7     6.0     1.9    12.0
6   25.9    49.1     5.9     2.2    17.0
7   14.0    57.4     5.1     2.6    21.0
8    4.5    63.1     3.8     2.9    25.7;

param bc :=
1  100.0
2   0.0
3   0.0
4   0.0
5   0.0;

# Initial values

let {i in 1..np} theta[i] := 0.0;```

## Other Descriptions

Other descriptions of this problem are available in