The SGOPT library contains a variety of global optimization algorithms, with an emphasis on stochastic methods. SGOPT currently includes the following global optimization methods: genetic algorithms (PGAreal,PGAint), evolutionary pattern search algorithms (EPSA), simulated annealing (SAreal), tabu search (TSreal), multistart local search (MSreal) and stratified Monte Carlo (sMCreal). Additionally, SGOPT includes several local search algorithms such as Solis-Wets (SWOpt) and pattern search (PatternSearch).
SGOPT stands for Stochastic Global OPTimization and for expensive optimization problems its global optimizers are best suited for identifying promising regions in the global design space. In multimodal design spaces, the combination of global identification (from SGOPT) with efficient local convergence (from a gradient-based algorithm) can be highly effective. The SGOPT methods are not gradient-based, which makes them appropriate for discrete problems as well as problems for which gradient information is unavailable or is of questionable accuracy due to numerical noise, etc. No SGOPT methods currently support general linear and nonlinear constraints directly, although penalty function formulations for nonlinear constraints have been employed with success [PonEld96].
This document describes the algorithms that are implemented within SGOPT at a high level. Presently SGOPT does not include software to provide a standardized interface for initializing the optimizers. Instead, the optimization library is linked into an executable defined by the user. Many of the optimizers defined by SGOPT are currently included in the interface to the DAKOTA Iterator Toolkit [EldHarBohRom96].
Historically, this software evolved as a library of algorithms used for research purposes. Consequently, there are many places in this library where the software could be further polished, and some of the libraries are more stable than others. Indications are made at the end of the sections describing each of the optimizers in SGOPT concerning the stability of each optimizer.
Generic Optimizers
The majority of optimizers in SGOPT are designed to perform optimization over
. However, some optimizers like genetic algorithms can be readily adapted to perform optimization over a wide variety of search domains. Two approaches are taken in SGOPT to accomodate the optimization of a generic search domain.
Generic Point Optimization A facility for optimizating a user-defined search domain has been constructed for Monte Carlo search and genetic algorithms. This facility uses the class GenericPointBase to define the basic operations that are needed to define these optimizers. The user simply defines a subclass of GenericPointBase and instantiates one of the generic optimizers to perform optimization. Examples of the use of this facility are included in the subdirectory examples/generics. This facility is easy to use, but the user's ability to customize the optimizer to a particular search domain is limited to the user's choice of the methods used to generate new trial points in the search domain. {Note: I expect to templatize much of this code in the near future, which may remove the needed for this capability.}
Object-Oriented Design When possible, an object oriented design has been adopted which allows a user to easily define a new C++ class to perform optimization over a novel search domain. The simplest example of this design is the class structure for Monte Carlo search. This algorithm simply generates random samples from a search domain. The current class heirarchy for Monte Carlo search is
sMC
/ \
/ \
sMCreal sMCgen
Overview
It will often be convenient to describe the methods and information in optimization classes in five categories: