Inheritance diagram for SNLLOptimizer:

Public Member Functions | |
| SNLLOptimizer (Model &model) | |
| standard constructor | |
| SNLLOptimizer (const String &method_name, Model &model) | |
| alternate constructor for instantiations "on the fly" | |
| SNLLOptimizer (const RealVector &initial_point, const RealVector &var_lower_bnds, const RealVector &var_upper_bnds, const RealMatrix &lin_ineq_coeffs, const RealVector &lin_ineq_lower_bnds, const RealVector &lin_ineq_upper_bnds, const RealMatrix &lin_eq_coeffs, const RealVector &lin_eq_targets, const RealVector &nonlin_ineq_lower_bnds, const RealVector &nonlin_ineq_upper_bnds, const RealVector &nonlin_eq_targets, void(*user_obj_eval)(int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::Real &f, NEWMAT::ColumnVector &grad_f, int &result_mode), void(*user_con_eval)(int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::ColumnVector &g, NEWMAT::Matrix &grad_g, int &result_mode)) | |
| alternate constructor for instantiations "on the fly" | |
| ~SNLLOptimizer () | |
| destructor | |
| void | find_optimum () |
| Performs the iterations to determine the optimal solution. | |
Protected Member Functions | |
| void | derived_pre_run () |
| and performs other set-up | |
| void | derived_post_run () |
| and performs other data recovery | |
Static Private Member Functions | |
| static void | nlf0_evaluator (int n, const NEWMAT::ColumnVector &x, NEWMAT::Real &f, int &result_mode) |
| require only function values. | |
| static void | nlf1_evaluator (int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::Real &f, NEWMAT::ColumnVector &grad_f, int &result_mode) |
| values and gradients to OPT++ methods. | |
| static void | nlf2_evaluator (int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::Real &f, NEWMAT::ColumnVector &grad_f, NEWMAT::SymmetricMatrix &hess_f, int &result_mode) |
| values, gradients, and Hessians to OPT++ methods. | |
| static void | constraint0_evaluator (int n, const NEWMAT::ColumnVector &x, NEWMAT::ColumnVector &g, int &result_mode) |
| only constraint values. | |
| static void | constraint1_evaluator (int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::ColumnVector &g, NEWMAT::Matrix &grad_g, int &result_mode) |
| values and gradients to OPT++ methods. | |
| static void | constraint2_evaluator (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++ methods. | |
Private Attributes | |
| SNLLOptimizer * | prevSnllOptInstance |
| 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::NLF0 * | nlf0 |
| pointer to objective NLF for nongradient optimizers | |
| OPTPP::NLF1 * | nlf1 |
| pointer to objective NLF for (analytic) gradient-based optimizers | |
| OPTPP::NLF1 * | nlf1Con |
| pointer to constraint NLF for (analytic) gradient-based optimizers | |
| OPTPP::FDNLF1 * | fdnlf1 |
| pointer to objective NLF for (finite diff) gradient-based optimizers | |
| OPTPP::FDNLF1 * | fdnlf1Con |
| pointer to constraint NLF for (finite diff) gradient-based optimizers | |
| OPTPP::NLF2 * | nlf2 |
| pointer to objective NLF for full Newton optimizers | |
| OPTPP::NLF2 * | nlf2Con |
| pointer to constraint NLF for full Newton optimizers | |
| OPTPP::OptimizeClass * | theOptimizer |
| optimizer base class pointer | |
| OPTPP::OptPDS * | optpds |
| PDS optimizer pointer. | |
| OPTPP::OptCG * | optcg |
| CG optimizer pointer. | |
| OPTPP::OptLBFGS * | optlbfgs |
| L-BFGS optimizer pointer. | |
| OPTPP::OptNewton * | optnewton |
| Newton optimizer pointer. | |
| OPTPP::OptQNewton * | optqnewton |
| Quasi-Newton optimizer pointer. | |
| OPTPP::OptFDNewton * | optfdnewton |
| Finite Difference Newton opt pointer. | |
| OPTPP::OptBCNewton * | optbcnewton |
| Bound constrained Newton opt pointer. | |
| OPTPP::OptBCQNewton * | optbcqnewton |
| Bnd constrained Quasi-Newton opt ptr. | |
| OPTPP::OptBCFDNewton * | optbcfdnewton |
| Bnd constrained FD-Newton opt ptr. | |
| OPTPP::OptNIPS * | optnips |
| NIPS optimizer pointer. | |
| OPTPP::OptQNIPS * | optqnips |
| Quasi-Newton NIPS optimizer pointer. | |
| OPTPP::OptFDNIPS * | optfdnips |
| Finite Difference NIPS opt pointer. | |
| String | setUpType |
| NonDReliability currently uses the user_functions mode. | |
| RealVector | initialPoint |
| holds initial point passed in for "user_functions" mode. | |
| RealVector | lowerBounds |
| holds variable lower bounds passed in for "user_functions" mode. | |
| RealVector | upperBounds |
| holds variable upper bounds passed in for "user_functions" mode. | |
Static Private Attributes | |
| static SNLLOptimizer * | snllOptInstance |
| functions in order to avoid the need for static data | |
The SNLLOptimizer 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.
| SNLLOptimizer | ( | Model & | model | ) |
standard constructor
This constructor is used for normal instantiations using data from the ProblemDescDB.
| SNLLOptimizer | ( | const String & | method_name, | |
| Model & | model | |||
| ) |
alternate constructor for instantiations "on the fly"
This is an alternate constructor for instantiations on the fly using a Model but no ProblemDescDB.
| SNLLOptimizer | ( | const RealVector & | initial_point, | |
| const RealVector & | var_lower_bnds, | |||
| const RealVector & | var_upper_bnds, | |||
| const RealMatrix & | lin_ineq_coeffs, | |||
| const RealVector & | lin_ineq_lower_bnds, | |||
| const RealVector & | lin_ineq_upper_bnds, | |||
| const RealMatrix & | lin_eq_coeffs, | |||
| const RealVector & | lin_eq_targets, | |||
| const RealVector & | nonlin_ineq_lower_bnds, | |||
| const RealVector & | nonlin_ineq_upper_bnds, | |||
| const RealVector & | nonlin_eq_targets, | |||
| void(*)(int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::Real &f, NEWMAT::ColumnVector &grad_f, int &result_mode) | user_obj_eval, | |||
| void(*)(int mode, int n, const NEWMAT::ColumnVector &x, NEWMAT::ColumnVector &g, NEWMAT::Matrix &grad_g, int &result_mode) | user_con_eval | |||
| ) |
alternate constructor for instantiations "on the fly"
This is an alternate constructor for performing an optimization using the passed in objective function and constraint function pointers.
| void nlf0_evaluator | ( | int | n, | |
| const NEWMAT::ColumnVector & | x, | |||
| NEWMAT::Real & | f, | |||
| int & | result_mode | |||
| ) | [static, private] |
require only function values.
For use when DAKOTA computes f and gradients are not directly available. This is used by nongradient-based optimizers such as PDS and by gradient-based optimizers in vendor numerical gradient mode (opt++'s internal finite difference routine is used).
| void nlf1_evaluator | ( | int | mode, | |
| int | n, | |||
| const NEWMAT::ColumnVector & | x, | |||
| NEWMAT::Real & | f, | |||
| NEWMAT::ColumnVector & | grad_f, | |||
| int & | result_mode | |||
| ) | [static, private] |
values and gradients to OPT++ methods.
For use when DAKOTA computes f and df/dX (regardless of gradientType). Vendor numerical gradient case is handled by nlf0_evaluator.
| void nlf2_evaluator | ( | int | mode, | |
| int | n, | |||
| const NEWMAT::ColumnVector & | x, | |||
| NEWMAT::Real & | f, | |||
| NEWMAT::ColumnVector & | grad_f, | |||
| NEWMAT::SymmetricMatrix & | hess_f, | |||
| int & | result_mode | |||
| ) | [static, private] |
values, gradients, and Hessians to OPT++ methods.
For use when DAKOTA receives f, df/dX, & d^2f/dx^2 from the ApplicationInterface (analytic only). Finite differencing does not make sense for a full Newton approach, since lack of analytic gradients & Hessian should dictate the use of quasi-newton or fd-newton. Thus, there is no fdnlf2_evaluator for use with full Newton approaches, since it is preferable to use quasi-newton or fd-newton with nlf1. Gauss-Newton does not fit this model; it uses nlf2_evaluator_gn instead of nlf2_evaluator.
| void constraint0_evaluator | ( | int | n, | |
| const NEWMAT::ColumnVector & | x, | |||
| NEWMAT::ColumnVector & | g, | |||
| int & | result_mode | |||
| ) | [static, private] |
only constraint values.
For use when DAKOTA computes g and gradients are not directly available. This is used by nongradient-based optimizers and by gradient-based optimizers in vendor numerical gradient mode (opt++'s internal finite difference routine is used).
| void constraint1_evaluator | ( | 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++ methods.
For use when DAKOTA computes g and dg/dX (regardless of gradientType). Vendor numerical gradient case is handled by constraint0_evaluator.
1.5.1