Liz Dolan, Adam Gurson, Anne Shepherd, Chris Siefert, Virginia Torczon, and Amy Yates
The software posted here is part of an ongoing project to develop C++ class-based implementations of direct search methods. Liz Dolan's Pattern Searches and Adam Gurson's Simplex Searches were originally developed as part of the honors program in Computer Science under the direction of Virginia Torczon.
The DirectSearch class brings these two classes of searches together under a single abstract base class. The code was recast to allow for a more uniform public interface, more ease of maintenance, and improved readability of the source code. External documentation has also been provided in the form of a design document. and a user's manual; class documentation, as generated by Doc++, is also available. This work was done by Anne Shepherd as part of Computer Science 710 (Research Project), under Dr. Torczon's direction.
Christopher Siefert has implemented and provided useful C++ classes for vector and matrix operations, which have since been incorporated in our search software.
DirectSearch grew from Pattern Searches and Simplex Searches
discussed in Liz's and Adam's honors theses. For a full discussion of
their original implementation and the results of preliminary
experimentation, see Pattern Search
Behavior in Nonlinear Optimization (for Liz's Pattern Searches), and Simplex Search
Behavior in Nonlinear Optimization (for Adam's Simplex Searches).
Two additional searches were added to Liz's and Adam's originals:
MultiCompassSearch, written by Chris Siefert, which is a multistart
version of Liz's CompassSearch; and Anne Shepherd's HybridNMSearch,
which uses a Nelder-Mead search to begin the optimization process, then
switches to an EdHJSearch when the standard-deviation stopping
criterion is met. For more information about these, see the
design document and user's
For functions written in C or Fortran, wrappers have been
constructed to allow the user to access these direct search classes
with little effort. Instructions are given separately for C wrappers and Fortran
|Makefile for all||[Makefile]|
DirectSearch abstract base class . . .
|PatternSearch abstract base class . . .||[PatternSearch.h] [PatternSearch.cc]|
|CompassSearch class . . .||[CompassSearch.h] [CompassSearch.cc]|
|MultiCompassSearch class . . .||[MultiCompassSearch.h] [MultiCompassSearch.cc]|
|CoordinateSearch class . . .||[CoordinateSearch.h] [CoordinateSearch.cc]|
|EdHJSearch class . . .||[EdHJSearch.h] [EdHJSearch.cc]|
|HJSearch class . . .||[HJSearch.h] [HJSearch.cc]|
|NLessSearch class . . .||[NLessSearch.h] [NLessSearch.cc]|
|SimplexSearch abstract base class . . .||[SimplexSearch.h] [SimplexSearch.cc]|
|NMSearch class . . .||[NMSearch.h] [NMSearch.cc]|
|Hybrid_NMSearch class . . .||[Hybrid_NMSearch.h] [Hybrid_NMSearch.cc]|
|SHHSearch class . . .||[SHHSearch.h] [SHHSearch.cc]|
|SMDSearch class . . .||[SMDSearch.h] [SMDSearch.cc]|
|Container classes. . .||[vec.h] [cppmat.h]|
|Allocator class . . .||[Dyn_alloc.h]|
|objective files . . .||[objective.h] [objective.cc]|
|sample main programs . . .||[main_default.cc] [main_obj.cc] [main_spec.cc] [main_arb.cc] [main_eval.cc] [main_hy.cc] [main_fail.cc]|
|bits and pieces used in the sample programs . . .||[trigclass.h] [trigclass.cc] [shekel.cc] [standalone.cc] [arbitrary.dat]|