![]() |
Dakota
Version 6.15
Explore and Predict with Confidence
|
Base class for local/global surrogate-based optimization/least squares. More...
Protected Member Functions | |
SurrBasedMinimizer (ProblemDescDB &problem_db, Model &model, std::shared_ptr< TraitsBase > traits) | |
constructor | |
~SurrBasedMinimizer () | |
destructor | |
void | derived_init_communicators (ParLevLIter pl_iter) |
derived class contributions to initializing the communicators associated with this Iterator instance | |
void | derived_set_communicators (ParLevLIter pl_iter) |
derived class contributions to setting the communicators associated with this Iterator instance | |
void | derived_free_communicators (ParLevLIter pl_iter) |
derived class contributions to freeing the communicators associated with this Iterator instance | |
void | print_results (std::ostream &s, short results_state=FINAL_RESULTS) |
void | update_lagrange_multipliers (const RealVector &fn_vals, const RealMatrix &fn_grads, SurrBasedLevelData &tr_data) |
initialize and update Lagrange multipliers for basic Lagrangian More... | |
void | update_augmented_lagrange_multipliers (const RealVector &fn_vals) |
initialize and update the Lagrange multipliers for augmented Lagrangian More... | |
void | initialize_filter (SurrBasedLevelData &tr_data, const RealVector &fn_vals) |
(re-)initialize filter from a set of function values | |
bool | update_filter (SurrBasedLevelData &tr_data, const RealVector &fn_vals) |
update filter using a new set of function values More... | |
Real | lagrangian_merit (const RealVector &fn_vals, const BoolDeque &sense, const RealVector &primary_wts, const RealVector &nln_ineq_l_bnds, const RealVector &nln_ineq_u_bnds, const RealVector &nln_eq_tgts) |
compute a Lagrangian function from a set of function values More... | |
void | lagrangian_gradient (const RealVector &fn_vals, const RealMatrix &fn_grads, const BoolDeque &sense, const RealVector &primary_wts, const RealVector &nln_ineq_l_bnds, const RealVector &nln_ineq_u_bnds, const RealVector &nln_eq_tgts, RealVector &lag_grad) |
compute the gradient of the Lagrangian function | |
void | lagrangian_hessian (const RealVector &fn_vals, const RealMatrix &fn_grads, const RealSymMatrixArray &fn_hessians, const BoolDeque &sense, const RealVector &primary_wts, const RealVector &nln_ineq_l_bnds, const RealVector &nln_ineq_u_bnds, const RealVector &nln_eq_tgts, RealSymMatrix &lag_hess) |
compute the Hessian of the Lagrangian function | |
Real | augmented_lagrangian_merit (const RealVector &fn_vals, const BoolDeque &sense, const RealVector &primary_wts, const RealVector &nln_ineq_l_bnds, const RealVector &nln_ineq_u_bnds, const RealVector &nln_eq_tgts) |
compute an augmented Lagrangian function from a set of function values More... | |
void | augmented_lagrangian_gradient (const RealVector &fn_vals, const RealMatrix &fn_grads, const BoolDeque &sense, const RealVector &primary_wts, const RealVector &nln_ineq_l_bnds, const RealVector &nln_ineq_u_bnds, const RealVector &nln_eq_tgts, RealVector &alag_grad) |
compute the gradient of the augmented Lagrangian function | |
void | augmented_lagrangian_hessian (const RealVector &fn_vals, const RealMatrix &fn_grads, const RealSymMatrixArray &fn_hessians, const BoolDeque &sense, const RealVector &primary_wts, const RealVector &nln_ineq_l_bnds, const RealVector &nln_ineq_u_bnds, const RealVector &nln_eq_tgts, RealSymMatrix &alag_hess) |
compute the Hessian of the augmented Lagrangian function | |
Real | penalty_merit (const RealVector &fn_vals, const BoolDeque &sense, const RealVector &primary_wts) |
compute a penalty function from a set of function values More... | |
void | penalty_gradient (const RealVector &fn_vals, const RealMatrix &fn_grads, const BoolDeque &sense, const RealVector &primary_wts, RealVector &pen_grad) |
compute the gradient of the penalty function | |
Real | constraint_violation (const RealVector &fn_vals, const Real &constraint_tol) |
compute the constraint violation from a set of function values More... | |
![]() | |
Minimizer (std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
default constructor | |
Minimizer (ProblemDescDB &problem_db, Model &model, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
standard constructor More... | |
Minimizer (unsigned short method_name, Model &model, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
alternate constructor for "on the fly" instantiations | |
Minimizer (unsigned short method_name, size_t num_lin_ineq, size_t num_lin_eq, size_t num_nln_ineq, size_t num_nln_eq, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
alternate constructor for "on the fly" instantiations | |
~Minimizer () | |
destructor | |
void | update_from_model (const Model &model) |
set inherited data attributes based on extractions from incoming model | |
void | initialize_run () |
utility function to perform common operations prior to pre_run(); typically memory initialization; setting of instance pointers More... | |
void | post_run (std::ostream &s) |
post-run portion of run (optional); verbose to print results; re-implemented by Iterators that can read all Variables/Responses and perform final analysis phase in a standalone way More... | |
void | finalize_run () |
utility function to perform common operations following post_run(); deallocation and resetting of instance pointers More... | |
const Model & | algorithm_space_model () const |
Model | original_model (unsigned short recasts_left=0) const |
Return a shallow copy of the original model this Iterator was originally passed, optionally leaving recasts_left on top of it. | |
void | data_transform_model () |
Wrap iteratedModel in a RecastModel that subtracts provided observed data from the primary response functions (variables and secondary responses are unchanged) More... | |
void | scale_model () |
Wrap iteratedModel in a RecastModel that performs variable and/or response scaling. More... | |
Real | objective (const RealVector &fn_vals, const BoolDeque &max_sense, const RealVector &primary_wts) const |
compute a composite objective value from one or more primary functions More... | |
Real | objective (const RealVector &fn_vals, size_t num_fns, const BoolDeque &max_sense, const RealVector &primary_wts) const |
compute a composite objective with specified number of source primary functions, instead of userPrimaryFns More... | |
void | objective_gradient (const RealVector &fn_vals, const RealMatrix &fn_grads, const BoolDeque &max_sense, const RealVector &primary_wts, RealVector &obj_grad) const |
compute the gradient of the composite objective function | |
void | objective_gradient (const RealVector &fn_vals, size_t num_fns, const RealMatrix &fn_grads, const BoolDeque &max_sense, const RealVector &primary_wts, RealVector &obj_grad) const |
compute the gradient of the composite objective function More... | |
void | objective_hessian (const RealVector &fn_vals, const RealMatrix &fn_grads, const RealSymMatrixArray &fn_hessians, const BoolDeque &max_sense, const RealVector &primary_wts, RealSymMatrix &obj_hess) const |
compute the Hessian of the composite objective function | |
void | objective_hessian (const RealVector &fn_vals, size_t num_fns, const RealMatrix &fn_grads, const RealSymMatrixArray &fn_hessians, const BoolDeque &max_sense, const RealVector &primary_wts, RealSymMatrix &obj_hess) const |
compute the Hessian of the composite objective function More... | |
virtual void | archive_best_results () |
top-level archival method | |
void | archive_best_variables (const bool active_only=false) const |
archive best variables for the index'th final solution | |
void | archive_best_objective_functions () const |
archive the index'th set of objective functions | |
void | archive_best_constraints () const |
archive the index'th set of constraints | |
void | archive_best_residuals () const |
Archive residuals when calibration terms are used. | |
void | resize_best_vars_array (size_t newsize) |
Safely resize the best variables array to newsize taking into account the envelope-letter design pattern and any recasting. More... | |
void | resize_best_resp_array (size_t newsize) |
Safely resize the best response array to newsize taking into account the envelope-letter design pattern and any recasting. More... | |
void | local_recast_retrieve (const Variables &vars, Response &response) const |
infers MOO/NLS solution from the solution of a single-objective optimizer More... | |
![]() | |
Iterator (BaseConstructor, ProblemDescDB &problem_db, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More... | |
Iterator (NoDBBaseConstructor, unsigned short method_name, Model &model, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
alternate constructor for base iterator classes constructed on the fly More... | |
Iterator (NoDBBaseConstructor, unsigned short method_name, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase())) | |
alternate constructor for base iterator classes constructed on the fly More... | |
virtual const VariablesArray & | initial_points () const |
gets the multiple initial points for this iterator. This will only be meaningful after a call to initial_points mutator. | |
StrStrSizet | run_identifier () const |
get the unique run identifier based on method name, id, and number of executions | |
void | initialize_model_graphics (Model &model, int iterator_server_id) |
helper function that encapsulates initialization operations, modular on incoming Model instance More... | |
void | export_final_surrogates (Model &data_fit_surr_model) |
export final surrogates generated, e.g., GP in EGO and friends More... | |
Protected Attributes | |
Iterator | approxSubProbMinimizer |
the minimizer used on the surrogate model to solve the approximate subproblem on each surrogate-based iteration | |
size_t | globalIterCount |
global iteration counter corresponding to number of surrogate-based minimizations | |
RealVector | lagrangeMult |
Lagrange multipliers for basic Lagrangian calculations. | |
RealVector | augLagrangeMult |
Lagrange multipliers for augmented Lagrangian calculations. | |
Real | penaltyParameter |
the penalization factor for violated constraints used in quadratic penalty calculations; increased in update_penalty() | |
RealVector | origNonlinIneqLowerBnds |
original nonlinear inequality constraint lower bounds (no relaxation) | |
RealVector | origNonlinIneqUpperBnds |
original nonlinear inequality constraint upper bounds (no relaxation) | |
RealVector | origNonlinEqTargets |
original nonlinear equality constraint targets (no relaxation) | |
Real | eta |
constant used in etaSequence updates | |
Real | alphaEta |
power for etaSequence updates when updating penalty | |
Real | betaEta |
power for etaSequence updates when updating multipliers | |
Real | etaSequence |
decreasing sequence of allowable constraint violation used in augmented Lagrangian updates (refer to Conn, Gould, and Toint, section 14.4) | |
size_t | miPLIndex |
index for the active ParallelLevel within ParallelConfiguration::miPLIters | |
![]() | |
size_t | numFunctions |
number of response functions | |
size_t | numContinuousVars |
number of active continuous vars | |
size_t | numDiscreteIntVars |
number of active discrete integer vars | |
size_t | numDiscreteStringVars |
number of active discrete string vars | |
size_t | numDiscreteRealVars |
number of active discrete real vars | |
Real | constraintTol |
optimizer/least squares constraint tolerance | |
Real | bigRealBoundSize |
cutoff value for inequality constraint and continuous variable bounds | |
int | bigIntBoundSize |
cutoff value for discrete variable bounds | |
size_t | numNonlinearIneqConstraints |
number of nonlinear inequality constraints | |
size_t | numNonlinearEqConstraints |
number of nonlinear equality constraints | |
size_t | numLinearIneqConstraints |
number of linear inequality constraints | |
size_t | numLinearEqConstraints |
number of linear equality constraints | |
size_t | numNonlinearConstraints |
total number of nonlinear constraints | |
size_t | numLinearConstraints |
total number of linear constraints | |
size_t | numConstraints |
total number of linear and nonlinear constraints | |
bool | optimizationFlag |
flag for use where optimization and NLS must be distinguished | |
size_t | numUserPrimaryFns |
number of objective functions or least squares terms in the inbound model; always initialize at Minimizer, even if overridden later | |
size_t | numIterPrimaryFns |
number of objective functions or least squares terms in iterator's view, after transformations; always initialize at Minimizer, even if overridden later | |
bool | boundConstraintFlag |
convenience flag for denoting the presence of user-specified bound constraints. Used for method selection and error checking. | |
bool | speculativeFlag |
flag for speculative gradient evaluations | |
bool | calibrationDataFlag |
flag indicating whether user-supplied calibration data is active | |
ExperimentData | expData |
Container for experimental data to which to calibrate model using least squares or other formulations which minimize SSE. | |
size_t | numExperiments |
number of experiments | |
size_t | numTotalCalibTerms |
number of total calibration terms (sum over experiments of number of experimental data per experiment, including field data) | |
Model | dataTransformModel |
Shallow copy of the data transformation model, when present (cached in case further wrapped by other transformations) | |
bool | scaleFlag |
whether Iterator-level scaling is active | |
Model | scalingModel |
Shallow copy of the scaling transformation model, when present (cached in case further wrapped by other transformations) | |
Minimizer * | prevMinInstance |
pointer containing previous value of minimizerInstance | |
bool | vendorNumericalGradFlag |
convenience flag for gradient_type == numerical && method_source == vendor | |
std::shared_ptr< TPLDataTransfer > | dataTransferHandler |
Emerging helper class for handling data transfers to/from Dakota and the underlying TPL. | |
![]() | |
ProblemDescDB & | probDescDB |
class member reference to the problem description database More... | |
ParallelLibrary & | parallelLib |
class member reference to the parallel library | |
ParConfigLIter | methodPCIter |
the active ParallelConfiguration used by this Iterator instance | |
Model | iteratedModel |
the model to be iterated (for iterators and meta-iterators employing a single model instance) | |
size_t | myModelLayers |
number of Models locally (in Iterator or derived classes) wrapped around the initially passed in Model | |
unsigned short | methodName |
name of the iterator (the user's method spec) | |
Real | convergenceTol |
iteration convergence tolerance | |
size_t | maxIterations |
maximum number of iterations for the method | |
size_t | maxFunctionEvals |
maximum number of fn evaluations for the method | |
int | maxEvalConcurrency |
maximum number of concurrent model evaluations More... | |
ActiveSet | activeSet |
the response data requirements on each function evaluation | |
size_t | numFinalSolutions |
number of solutions to retain in best variables/response arrays | |
VariablesArray | bestVariablesArray |
collection of N best solution variables found during the study; always in context of Model originally passed to the Iterator (any in-flight Recasts must be undone) | |
ResponseArray | bestResponseArray |
collection of N best solution responses found during the study; always in context of Model originally passed to the Iterator (any in-flight Recasts must be undone) | |
bool | subIteratorFlag |
flag indicating if this Iterator is a sub-iterator (NestedModel::subIterator or DataFitSurrModel::daceIterator) | |
short | outputLevel |
output verbosity level: {SILENT,QUIET,NORMAL,VERBOSE,DEBUG}_OUTPUT | |
bool | summaryOutputFlag |
flag for summary output (evaluation stats, final results); default true, but false for on-the-fly (helper) iterators and sub-iterator use cases | |
ResultsManager & | resultsDB |
reference to the global iterator results database | |
EvaluationStore & | evaluationsDB |
reference to the global evaluation database | |
EvaluationsDBState | evaluationsDBState |
State of evaluations DB for this iterator. | |
ResultsNames | resultsNames |
valid names for iterator results | |
std::shared_ptr< TraitsBase > | methodTraits |
pointer that retains shared ownership of a TraitsBase object, or child thereof | |
bool | topLevel |
Whether this is the top level iterator. | |
bool | exportSurrogate = false |
whether to export final surrogates | |
String | surrExportPrefix |
base filename for exported surrogates | |
unsigned short | surrExportFormat = NO_MODEL_FORMAT |
(bitwise) format(s) to export | |
Additional Inherited Members | |
![]() | |
void | constraint_tolerance (Real constr_tol) |
set the method constraint tolerance (constraintTol) | |
Real | constraint_tolerance () const |
return the method constraint tolerance (constraintTol) | |
std::shared_ptr< TPLDataTransfer > | get_data_transfer_helper () const |
bool | resize () |
reinitializes iterator based on new variable size | |
![]() | |
static Real | sum_squared_residuals (size_t num_pri_fns, const RealVector &residuals, const RealVector &weights) |
return weighted sum of squared residuals | |
static void | print_residuals (size_t num_terms, const RealVector &best_terms, const RealVector &weights, size_t num_best, size_t best_index, std::ostream &s) |
print num_terms residuals and misfit for final results | |
static void | print_model_resp (size_t num_pri_fns, const RealVector &best_fns, size_t num_best, size_t best_index, std::ostream &s) |
print the original user model resp in the case of data transformations | |
![]() | |
static void | gnewton_set_recast (const Variables &recast_vars, const ActiveSet &recast_set, ActiveSet &sub_model_set) |
conversion of request vector values for the Gauss-Newton Hessian approximation More... | |
![]() | |
static Minimizer * | minimizerInstance |
pointer to Minimizer used in static member functions | |
Base class for local/global surrogate-based optimization/least squares.
These minimizers use a SurrogateModel to perform optimization based either on local trust region methods or global updating methods.
|
protectedvirtual |
Redefines default iterator results printing to include optimization results (objective functions and constraints).
Reimplemented from Iterator.
References Dakota::abort_handler(), Iterator::activeSet, Iterator::bestResponseArray, Iterator::bestVariablesArray, Dakota::data_pairs, Model::interface_id(), Iterator::iteratedModel, Dakota::lookup_by_val(), Iterator::methodName, Minimizer::numFunctions, Minimizer::numUserPrimaryFns, Minimizer::optimizationFlag, Minimizer::print_residuals(), ActiveSet::request_values(), and Model::truth_model().
|
protected |
initialize and update Lagrange multipliers for basic Lagrangian
For the Rockafellar augmented Lagrangian, simple Lagrange multiplier updates are available which do not require the active constraint gradients. For the basic Lagrangian, Lagrange multipliers are estimated through solution of a nonnegative linear least squares problem.
References Dakota::abort_handler(), Minimizer::bigRealBoundSize, Minimizer::constraintTol, Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Iterator::iteratedModel, SurrBasedMinimizer::lagrangeMult, Minimizer::numContinuousVars, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Minimizer::numUserPrimaryFns, Minimizer::objective_gradient(), SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, Model::primary_response_fn_sense(), and Model::primary_response_fn_weights().
Referenced by SurrBasedLocalMinimizer::hard_convergence_check().
|
protected |
initialize and update the Lagrange multipliers for augmented Lagrangian
For the Rockafellar augmented Lagrangian, simple Lagrange multiplier updates are available which do not require the active constraint gradients. For the basic Lagrangian, Lagrange multipliers are estimated through solution of a nonnegative linear least squares problem.
References SurrBasedMinimizer::augLagrangeMult, SurrBasedMinimizer::betaEta, Minimizer::bigRealBoundSize, SurrBasedMinimizer::etaSequence, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Minimizer::numUserPrimaryFns, SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, and SurrBasedMinimizer::penaltyParameter.
Referenced by SurrBasedLocalMinimizer::compute_trust_region_ratio(), SurrBasedLocalMinimizer::hard_convergence_check(), and EffGlobalMinimizer::update_constraints().
|
protected |
update filter using a new set of function values
Update the paretoFilter with fn_vals if new iterate is non-dominated.
References SurrBasedMinimizer::constraint_violation(), Iterator::iteratedModel, Minimizer::numNonlinearConstraints, Minimizer::objective(), Model::primary_response_fn_sense(), and Model::primary_response_fn_weights().
Referenced by SurrBasedLocalMinimizer::compute_trust_region_ratio().
|
protected |
compute a Lagrangian function from a set of function values
The Lagrangian function computation sums the objective function and the Lagrange multipler terms for inequality/equality constraints. This implementation follows the convention in Vanderplaats with g<=0 and h=0. The bounds/targets passed in may reflect the original constraints or the relaxed constraints.
References Minimizer::bigRealBoundSize, Minimizer::constraintTol, SurrBasedMinimizer::lagrangeMult, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Minimizer::numUserPrimaryFns, and Minimizer::objective().
Referenced by SurrBasedLocalMinimizer::approx_subprob_objective_eval(), and SurrBasedLocalMinimizer::compute_trust_region_ratio().
|
protected |
compute an augmented Lagrangian function from a set of function values
The Rockafellar augmented Lagrangian function sums the objective function, Lagrange multipler terms for inequality/equality constraints, and quadratic penalty terms for inequality/equality constraints. This implementation follows the convention in Vanderplaats with g<=0 and h=0. The bounds/targets passed in may reflect the original constraints or the relaxed constraints.
References SurrBasedMinimizer::augLagrangeMult, Minimizer::bigRealBoundSize, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Minimizer::numUserPrimaryFns, Minimizer::objective(), and SurrBasedMinimizer::penaltyParameter.
Referenced by SurrBasedLocalMinimizer::approx_subprob_objective_eval(), EffGlobalMinimizer::augmented_lagrangian(), and SurrBasedLocalMinimizer::compute_trust_region_ratio().
|
protected |
compute a penalty function from a set of function values
The penalty function computation applies a quadratic penalty to any constraint violations and adds this to the objective function(s) p = f + r_p cv.
References SurrBasedMinimizer::constraint_violation(), Minimizer::constraintTol, Minimizer::objective(), and SurrBasedMinimizer::penaltyParameter.
Referenced by SurrBasedLocalMinimizer::compute_trust_region_ratio().
|
protected |
compute the constraint violation from a set of function values
Compute the quadratic constraint violation defined as cv = g+^T g+
References Minimizer::bigRealBoundSize, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Minimizer::numUserPrimaryFns, SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, and SurrBasedMinimizer::origNonlinIneqUpperBnds.
Referenced by SurrBasedLocalMinimizer::compute_trust_region_ratio(), SurrBasedLocalMinimizer::hard_convergence_check(), SurrBasedMinimizer::initialize_filter(), SurrBasedMinimizer::penalty_merit(), SurrBasedLocalMinimizer::relax_constraints(), EffGlobalMinimizer::update_constraints(), SurrBasedMinimizer::update_filter(), and SurrBasedLocalMinimizer::update_penalty().