SNLLLeastSq Class Reference

Wrapper class for the OPT++ optimization library. More...

Inheritance diagram for SNLLLeastSq:

LeastSq SNLLBase Minimizer Iterator List of all members.

Public Member Functions

 SNLLLeastSq (Model &model)
 standard constructor
 SNLLLeastSq (const String &method_name, Model &model)
 alternate constructor for instantiations without ProblemDescDB support
 ~SNLLLeastSq ()
 destructor
void minimize_residuals ()
 Performs the iterations to determine the least squares solution.

Protected Member Functions

void derived_pre_run ()
 invokes SNLLBase::snll_pre_run() and performs other set-up
void derived_post_run ()
 invokes SNLLBase::snll_post_run() and performs other solution processing

Static Private Member Functions

static void nlf2_evaluator_gn (int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::Real &f, NEWMAT::ColumnVector &grad_f, NEWMAT::SymmetricMatrix &hess_f, int &result_mode)
 value, gradient, and Hessian using the Gauss-Newton approximation.
static void constraint1_evaluator_gn (int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::ColumnVector &g, NEWMAT::Matrix &grad_g, int &result_mode)
 values and gradients to OPT++ Gauss-Newton methods.
static void constraint2_evaluator_gn (int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::ColumnVector &g, NEWMAT::Matrix &grad_g, OPTPP::OptppArray< NEWMAT::SymmetricMatrix > &hess_g, int &result_mode)
 values, gradients, and Hessians to OPT++ Gauss-Newton methods.

Private Attributes

SNLLLeastSqprevSnllLSqInstance
 restoration in the case of iterator/model recursion
OPTPP::NLP0 * nlfObjective
 objective NLF base class pointer
OPTPP::NLP0 * nlfConstraint
 constraint NLF base class pointer
OPTPP::NLP * nlpConstraint
 constraint NLP pointer
OPTPP::NLF2 * nlf2
 pointer to objective NLF for full Newton optimizers
OPTPP::NLF2 * nlf2Con
 pointer to constraint NLF for full Newton optimizers
OPTPP::NLF1 * nlf1Con
 pointer to constraint NLF for Quasi Newton optimizers
OPTPP::OptimizeClass * theOptimizer
 optimizer base class pointer
OPTPP::OptNewton * optnewton
 Newton optimizer pointer.
OPTPP::OptBCNewton * optbcnewton
 Bound constrained Newton optimizer ptr.
OPTPP::OptDHNIPS * optdhnips
 Disaggregated Hessian NIPS optimizer ptr.

Static Private Attributes

static SNLLLeastSqsnllLSqInstance
 functions in order to avoid the need for static data

Detailed Description

Wrapper class for the OPT++ optimization library.

The SNLLLeastSq class provides a wrapper for OPT++, a C++ optimization library of nonlinear programming and pattern search techniques from the Computational Sciences and Mathematics Research (CSMR) department at Sandia's Livermore CA site. It uses a function pointer approach for which passed functions must be either global functions or static member functions. Any attribute used within static member functions must be either local to that function, a static member, or accessed by static pointer.

The user input mappings are as follows: max_iterations, max_function_evaluations, convergence_tolerance, max_step, gradient_tolerance, search_method, and search_scheme_size are set using OPT++'s setMaxIter(), setMaxFeval(), setFcnTol(), setMaxStep(), setGradTol(), setSearchStrategy(), and setSSS() member functions, respectively; output verbosity is used to toggle OPT++'s debug mode using the setDebug() member function. Internal to OPT++, there are 3 search strategies, while the DAKOTA search_method specification supports 4 (value_based_line_search, gradient_based_line_search, trust_region, or tr_pds). The difference stems from the "is_expensive" flag in OPT++. If the search strategy is LineSearch and "is_expensive" is turned on, then the value_based_line_search is used. Otherwise (the "is_expensive" default is off), the algorithm will use the gradient_based_line_search. Refer to [Meza, J.C., 1994] and to the OPT++ source in the Dakota/methods/OPTPP directory for information on OPT++ class member functions.


Member Function Documentation

void nlf2_evaluator_gn ( int  mode,
int  n,
const NEWMAT::ColumnVector &  x,
NEWMAT::Real &  f,
NEWMAT::ColumnVector &  grad_f,
NEWMAT::SymmetricMatrix &  hess_f,
int &  result_mode 
) [static, private]

value, gradient, and Hessian using the Gauss-Newton approximation.

This nlf2 evaluator function is used for the Gauss-Newton method in order to exploit the special structure of the nonlinear least squares problem. Here, fx = sum (T_i - Tbar_i)^2 and Response is made up of residual functions and their gradients along with any nonlinear constraints. The objective function and its gradient vector and Hessian matrix are computed directly from the residual functions and their derivatives (which are returned from the Response object).

void constraint1_evaluator_gn ( int  mode,
int  n,
const NEWMAT::ColumnVector &  x,
NEWMAT::ColumnVector &  g,
NEWMAT::Matrix &  grad_g,
int &  result_mode 
) [static, private]

values and gradients to OPT++ Gauss-Newton methods.

While it does not employ the Gauss-Newton approximation, it is distinct from constraint1_evaluator() due to its need to anticipate the required modes for the least squares terms. This constraint evaluator function is used with diaggregated Hessian NIPS and is currently active.

static void constraint2_evaluator_gn ( int  mode,
int  n,
const NEWMAT::ColumnVector &  x,
NEWMAT::ColumnVector &  g,
NEWMAT::Matrix &  grad_g,
OPTPP::OptppArray< NEWMAT::SymmetricMatrix > &  hess_g,
int &  result_mode 
) [static, private]

values, gradients, and Hessians to OPT++ Gauss-Newton methods.

While it does not employ the Gauss-Newton approximation, it is distinct from constraint2_evaluator() due to its need to anticipate the required modes for the least squares terms. This constraint evaluator function is used with full Newton NIPS and is currently inactive.


The documentation for this class was generated from the following files:
Generated on Wed Nov 5 19:54:07 2008 for DAKOTA by  doxygen 1.5.1