With faster processors and more software packages to implement parallel algorithms, researchers are solving larger optimization problems, involving many parameters and very complex merit functions. Moreover, software packages such as the one presented here can usually find globally optimal solutions for unconstrained problems.
This package is an implementation with modifications of the DIRECT algorithm devised by D.R. Jones. The DIRECT algorithm begins at the center of the search domain that must be the product of intervals. Then, the merit function is sampled along part of the coordinate axis, and the domain is subdivided based on these samples. While other Fortran implementations of DIRECT have been published, this one uses features of Fortran 95, such as abstract data types and dynamic storage allocation. Both a serial and a parallel implementation are included in the package. The latter one uses calls to a standard message passing interface (MPI) library.
One challenge in implementing an algorithm such as DIRECT is designing the data structure to store the samples and subdomains, and the procedures to maintain the data. The structures and procedures must also be robust in the face of a complex merit function, a large number of parameters, and memory limitations. He, Watson, and Sosonkina discuss the design of their data structures and report the results of tests of the efficiency of those structures.
This discussion, as well as the actual Fortran 95 code, should be of interest to anyone who develops Fortran code for optimization.