Using GDOC is easily divided into three distinct tasks.
Writing a GDOC model
The GDOC language is a flexible language designed to allow a user without expert knowledge of optimization to perform global optimization provided he or she is capable of expressing the problem in a mathematically abstract manner. In particular, the GDOC language allows the user to specify the objective function (Bolza type), as well as the constraining ODEs and their initial conditions.
An example input file can be seen here and the associated data file here.
Using the gdoc-compiler
The gdoc-compiler is the part of GDOC responsible for translating the GDOC input file, applying the dynamic relaxation theory, and generating a Fortran residual file for the numerical integrator. While the upper bounding bounding problem is easily coded manually, the generation of code (state bounds and linear relaxations) for the lower bounding problem is indeed a very tedious and error prone task, even for small scale problems, and this analysis is unique for each individual problem.
The gdoc-compiler runs in batch mode, which is suitable for use in a makefile. More details about the compiler and a complete description of the command line options can be found in the User’s Manual. Typically, a residual routine library called libres.so is generated from the fortran residual file; this is illustrated in Figure 1 below.
Using the GDOC-CLI
The GDOC-CLI is a batch interface for simulating and (globally) optimizing dynamic optimization problems. At run time, the GDOC-CLI must dynamically bind to a shared library called libres.so that contains the residual routines generated by the gdoc-compiler. More details about the CLI and a complete description of the command line options can be found in the User’s Manual.
The principle of the GDOC-CLI in global optimization mode is illustrated in Figure 2.
GDOC comes with an extensive set of test problems to illustrate usage for several different types of problems (including all the test problems reported in the papers [1,3]). This provides an excellent resource for understanding how to build your own example problems.