Isomerization of Alpha-Pinene problem (TACO)

From mintOC
Jump to: navigation, search

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
Link to Google Scholar
. 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[1], t) = - (theta[1]+theta[2])*u[1];
 
subject to de2:
	diff (u[2], t) = theta[1]*u[1];
 
subject to de3:
	diff (u[3], t) = theta[2]*u[1] - (theta[3]+theta[4])*u[3] + theta[5]*u[5];
 
subject to de4:
	diff (u[4], t) = theta[3]*u[3];
 
subject to de5:
	diff (u[5], t) = theta[4]*u[3] - theta[5]*u[5];
 
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

References

[Box1973]G.E.P. Box; W.G. Hunter; J.F. MacGregor; J. Erjavec (1973): Some problems associated with the analysis of multiresponse data. Technometrics, 15, 33--51Link to Google Scholar