
In 2004, Taylor et al.[1] observed the cyclohexadienyl radical reaction with oxygen in non-polar solvents using a liquid-phase spectrometer. The spectrometer measured the amount of UV light exiting a solution of 1,4-cyclohexadiene and a peroxide that was exposed to the pulse of an excimer laser. This pulse initiated a series of reactions which produced cyclohexadienyl radicals. Cyclohexadienyl radicals react with oxygen to ultimately form benzene and hydroperoxyl radical. This technique, known as laser-flash photolysis, both produced and measured cyclohexadienyl radical concentration over a period of 5 millionths of a second or 5 microseconds.
The reactions proceeded under a variety of different conditions. Both the concentration of oxygen and the temperature were varied. Photodetectors collected the thousands of data points. Numerical models based on the hypothetical chemistry (see Table 1) simulated the data within error. However, optimizing the kinetic parameters in the numerical model proved disastrous. No reasonable fits were found that modeled the data with confidence. Taylor et al. were not sure if the model was incorrect or if the procedure they were using to fit the data was incorrect. They needed a method to determine the best set of parameters, also known as the globally optimum set, that would fit the data to their model.
In formulating the optimization problem, first we need convenient
variables to represent the concentrations and rate constants in the
kinetic model. Let the vector
be the state variables that
correspond to the species concentrations. In brackets are
the physically reasonable ranges for each of the state variables.
We define the vector
to represent the known
constants in the system.
Also, let the vector
represent the adjustable or unknown values in
the system. In the brackets are the physically reasonable bounds for
the variables.
The data vector
consists of the average value of the
absorbance at each time-point in the vector
and has
an error estimate based on the replicate values of absorbance
.
The model is formed from the rules for elementary rates in kinetics.
Initial conditions for the model are based on the experimental values for the reactants.
| 0 | |||
| 0 | |||
| 0 |
Finally, using the known values of the absorbance for cyclohexadienyl radical and a value for the background absorbance we can create an objective function for comparing the data at each point with the state variables in the model. Let i be the index corresponding to each data point.
![]() |
With the problem formulated, we can now write an input
file for the GDOC program. A data file must also be made which contains
the time, absorbance, and the standard deviation of the absorbance.
In order to scale the problem correctly, the standard deviation has
been divided by 100. In order to get the actual
values
from the output it is necessary to multiply the global optimum found
by 100
.
An input file and data set for an experiment at T = 298 K is given here:
Input file:chi298.oai (1468 bytes)
Data file: chi298.inp (14096 bytes)
An input file and data set for an experiment at T = 323 K is given here:
Input file:chi323.oai (1468 bytes)
Data file: chi323.inp (14096 bytes)
Information on how to obtain GDOC can be found on the GDOC homepage under the heading How can I get it? . In order to run GDOC you will need to have gcc version 3.2.3 or higher.
When you have obtained a copy of the distribution, unpack it and cd into the GDOC-1.0 directory.
gunzip GDOC-1.0.tar.gz tar xvf GDOC-1.0.tar cd GDOC-1.0
Follow the steps in the README file carefully to install the GDOC distribution. Once the distribution has been built, change into the examples directory. Copy the chi298.oai and chi323.oai files into the examples/input directory. Copy chi298.inp and chi323.inp into the examples/data directory. Replace the makefile in the examples directory with this Makefile, which includes the make commands for the chi298 and chi323 examples. If you wish to keep the old makefile rename it to makefile.old.
Once the files are copied, type
make chi298at the prompt. A suggested instruction for running the chi298 data set will be provided. Copy that instruction and enter it at the prompt. You should see the GDOC output sent to the screen listing the objective function value and the branch-and-bound nodes.
After a short time (approximately 20-30 s on a fast computer) the global optimum will be displayed along with the ln scaled parameters. To convert to the actual values for the rate constants simply take the exponential of the values. Within the tolerance specified the number should match the value found with the SLSQP solver.
The chi323 example is run the same way. Type
make chi323at the prompt and follow the instructions. However, the time required to obtain the global optimum with SLSQP and no domain reduction could be several hours. The authors recommend downloading the free IPOPT solver and using the domain reduction option set to true to speed things up. This will require re-compiling the solver and linking the IPOPT library to GDOC. The output from GDOC in verbose mode is shown in the log files below:
Output for the fit to experiment at T = 298 K. The results are at the bottom of the file:
Output file:chi298.log (108668 bytes)
Output for the fit to experiment at T = 323 K. A file containing just the results for 323 K is listed, as well as a gzipped file containing the full output file:
Results file:chi323r.log (315 bytes)
Output file:chi323.log.gz (1174139 bytes)
Values for the global optima and results using other capabilities of GDOC will soon be published in Reference 2.