![]() |
Dakota
Version 6.15
Explore and Predict with Confidence
|
Class for provably-convergent local surrogate-based optimization and nonlinear least squares. More...
Public Member Functions | |
SurrBasedLocalMinimizer (ProblemDescDB &problem_db, Model &model, std::shared_ptr< TraitsBase > traits) | |
constructor | |
~SurrBasedLocalMinimizer () | |
destructor | |
Protected Member Functions | |
void | initialize_graphics (int iterator_server_id=1) |
initialize graphics customized for surrogate-based iteration More... | |
void | pre_run () |
pre-run portion of run (optional); re-implemented by Iterators which can generate all Variables (parameter sets) a priori More... | |
void | core_run () |
Performs local surrogate-based minimization by minimizing local, global, or hierarchical surrogates over a series of trust regions. 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 | reset () |
restore initial state for repeated sub-iterator executions | |
virtual SurrBasedLevelData & | trust_region ()=0 |
return the active SurrBasedLevelData instance | |
virtual void | update_trust_region ()=0 |
update the trust region bounds, strictly contained within global bounds | |
virtual void | build ()=0 |
build the approximation over the current trust region | |
virtual void | minimize () |
solve the approximate subproblem | |
virtual void | verify ()=0 |
verify the approximate iterate and update the trust region for the next approximate optimization cycle | |
virtual unsigned short | converged ()=0 |
return the convergence code for the truth level of the trust region hierarchy | |
void | initialize_sub_model () |
construct and initialize approxSubProbModel | |
void | initialize_sub_minimizer () |
construct and initialize approxSubProbMinimizer | |
void | initialize_multipliers () |
initialize lagrangeMult and augLagrangeMult | |
void | reset_penalties () |
reset all penalty parameters to their initial values | |
void | reset_multipliers () |
reset Lagrange multipliers to initial values for cases where they are accumulated instead of computed directly | |
void | update_trust_region_data (SurrBasedLevelData &tr_data, const RealVector &parent_l_bnds, const RealVector &parent_u_bnds) |
update the trust region bounds, strictly contained within global bounds | |
void | update_approx_sub_problem (SurrBasedLevelData &tr_data) |
update variables and bounds within approxSubProbModel | |
void | compute_trust_region_ratio (SurrBasedLevelData &tr_data, bool check_interior=false) |
compute trust region ratio (for SBLM iterate acceptance and trust region resizing) and check for soft convergence (diminishing returns) More... | |
void | hard_convergence_check (SurrBasedLevelData &tr_data, const RealVector &lower_bnds, const RealVector &upper_bnds) |
check for hard convergence (norm of projected gradient of merit function < tolerance) More... | |
void | print_convergence_code (std::ostream &s, unsigned short code) |
print out the state corresponding to the code returned by converged() | |
void | update_penalty (const RealVector &fns_center_truth, const RealVector &fns_star_truth) |
initialize and update the penaltyParameter More... | |
bool | find_approx_response (const Variables &search_vars, Response &search_resp) |
locate an approximate response with the data_pairs cache | |
bool | find_truth_response (const Variables &search_vars, Response &search_resp) |
locate a truth response with the data_pairs cache | |
bool | find_response (const Variables &search_vars, Response &search_resp, const String &search_id, short set_request) |
locate a response with the data_pairs cache | |
void | relax_constraints (SurrBasedLevelData &tr_data) |
relax constraints by updating bounds when current iterate is infeasible | |
![]() | |
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 | 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... | |
Static Protected Member Functions | |
static void | approx_subprob_objective_eval (const Variables &surrogate_vars, const Variables &recast_vars, const Response &surrogate_response, Response &recast_response) |
static function used to define the approximate subproblem objective. More... | |
static void | approx_subprob_constraint_eval (const Variables &surrogate_vars, const Variables &recast_vars, const Response &surrogate_response, Response &recast_response) |
static function used to define the approximate subproblem constraints. More... | |
static void | hom_objective_eval (int &mode, int &n, double *tau_and_x, double &f, double *grad_f, int &) |
static function used by NPSOL as the objective function in the homotopy constraint relaxation formulation. More... | |
static void | hom_constraint_eval (int &mode, int &ncnln, int &n, int &nrowj, int *needc, double *tau_and_x, double *c, double *cjac, int &nstate) |
static function used by NPSOL as the constraint function in the homotopy constraint relaxation formulation. More... | |
Protected Attributes | |
Model | approxSubProbModel |
the approximate sub-problem formulation solved on each approximate minimization cycle: may be a shallow copy of iteratedModel, or may involve a RecastModel recursion applied to iteratedModel | |
short | approxSubProbObj |
type of approximate subproblem objective: ORIGINAL_OBJ, LAGRANGIAN_OBJ, or AUGMENTED_LAGRANGIAN_OBJ | |
short | approxSubProbCon |
type of approximate subproblem constraints: NO_CON, LINEARIZED_CON, or ORIGINAL_CON | |
bool | recastSubProb |
flag to indicate when approxSubProbModel involves a RecastModel recursion | |
short | meritFnType |
type of merit function used in trust region ratio logic: PENALTY_MERIT, ADAPTIVE_PENALTY_MERIT, LAGRANGIAN_MERIT, or AUGMENTED_LAGRANGIAN_MERIT | |
short | acceptLogic |
type of iterate acceptance test logic: FILTER or TR_RATIO | |
short | trConstraintRelax |
type of trust region constraint relaxation for infeasible starting points: NO_RELAX or HOMOTOPY | |
int | minimizeCycles |
counter for number of minimization cycles that have accumulated prior to convergence at the minimizeIndex level (used for ramping penalties) | |
int | penaltyIterOffset |
iteration offset used to update the scaling of the penalty parameter for adaptive_penalty merit functions | |
RealVector | origTrustRegionFactor |
original user specification for trust region initial_size | |
Real | minTrustRegionFactor |
a soft convergence control: stop SBLM when the trust region factor is reduced below the value of minTrustRegionFactor | |
Real | trRatioContractValue |
trust region ratio min value: contract tr if ratio below this value | |
Real | trRatioExpandValue |
trust region ratio sufficient value: expand tr if ratio above this value | |
Real | gammaContract |
trust region contraction factor | |
Real | gammaExpand |
trust region expansion factor | |
unsigned short | softConvLimit |
convergence control limiting the number of consecutive iterations that fail to achieve sufficient decrease. If exceeded by softConvCount, stop. | |
short | truthSetRequest |
derivative order of truth data used within the SBLM process | |
short | approxSetRequest |
derivative order of surrogate data used within the SBLM process | |
short | correctionType |
flags the use of surrogate correction techniques at the center of each trust region | |
RealVector | initialPoint |
starting point prior to sequence of SBLM iterations | |
RealVector | globalLowerBnds |
Global lower bounds. | |
RealVector | globalUpperBnds |
Global Upper bounds. | |
RealVector | nonlinIneqLowerBndsSlack |
individual violations of nonlinear inequality constraint lower bounds | |
RealVector | nonlinIneqUpperBndsSlack |
individual violations of nonlinear inequality constraint upper bounds | |
RealVector | nonlinEqTargetsSlack |
individual violations of nonlinear equality constraint targets | |
Real | tau |
constraint relaxation parameter | |
Real | alpha |
constraint relaxation parameter backoff parameter (multiplier) | |
![]() | |
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 | |
Static Protected Attributes | |
static SurrBasedLocalMinimizer * | sblmInstance |
pointer to SBLM instance used in static member functions | |
Additional Inherited Members | |
![]() | |
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 | |
Class for provably-convergent local surrogate-based optimization and nonlinear least squares.
This minimizer uses a SurrogateModel to perform minimization based on local, global, or hierarchical surrogates. It achieves provable convergence through the use of a sequence of trust regions and the application of surrogate corrections at the trust region centers.
|
protectedvirtual |
initialize graphics customized for surrogate-based iteration
Surrogate-based local (data-fit) specializes graphics to output trust region centers. See OutputManager::add_tabular_data in DataFitSurrBasedLocalMinimizer. Other children don't do any output
Reimplemented from Iterator.
References Model::create_2d_plots(), Model::create_tabular_datastream(), OutputManager::graph2DFlag, OutputManager::graphics(), OutputManager::graphics_counter(), Iterator::iteratedModel, Iterator::methodName, ParallelLibrary::output_manager(), Iterator::parallelLib, Graphics::set_x_labels2d(), OutputManager::tabular_counter_label(), OutputManager::tabularDataFlag, and Model::truth_model().
|
protectedvirtual |
pre-run portion of run (optional); re-implemented by Iterators which can generate all Variables (parameter sets) a priori
pre-run phase, which a derived iterator may optionally reimplement; when not present, pre-run is likely integrated into the derived run function. This is a virtual function; when re-implementing, a derived class must call its nearest parent's pre_run(), if implemented, typically before performing its own implementation steps.
Reimplemented from Iterator.
References Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Model::continuous_variables(), SurrBasedLocalMinimizer::converged(), Dakota::copy_data(), SurrBasedLocalMinimizer::globalLowerBnds, SurrBasedLocalMinimizer::globalUpperBnds, SurrBasedLocalMinimizer::initialPoint, Iterator::iteratedModel, and SurrBasedLocalMinimizer::reset().
|
protectedvirtual |
Performs local surrogate-based minimization by minimizing local, global, or hierarchical surrogates over a series of trust regions.
Trust region-based strategy to perform surrogate-based optimization in subregions (trust regions) of the parameter space. The minimizer operates on approximations in lieu of the more expensive simulation-based response functions. The size of the trust region is adapted according to the agreement between the approximations and the true response functions.
Reimplemented from Iterator.
References SurrBasedLocalMinimizer::build(), SurrBasedLocalMinimizer::converged(), SurrBasedLocalMinimizer::minimize(), SurrBasedLocalMinimizer::sblmInstance, SurrBasedLocalMinimizer::update_trust_region(), and SurrBasedLocalMinimizer::verify().
|
protectedvirtual |
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
Post-run phase, which a derived iterator may optionally reimplement; when not present, post-run is likely integrated into run. This is a virtual function; when re-implementing, a derived class must call its nearest parent's post_run(), typically after performing its own implementation steps.
Reimplemented from Minimizer.
References SurrBasedLocalMinimizer::converged(), SurrBasedMinimizer::globalIterCount, Minimizer::post_run(), and SurrBasedLocalMinimizer::print_convergence_code().
|
protected |
compute trust region ratio (for SBLM iterate acceptance and trust region resizing) and check for soft convergence (diminishing returns)
Assess acceptance of SBLM iterate (trust region ratio or filter) and compute soft convergence metrics (number of consecutive failures, min trust region size, etc.) to assess whether the convergence rate has decreased to a point where the process should be terminated (diminishing returns).
References SurrBasedLocalMinimizer::acceptLogic, SurrBasedLocalMinimizer::approxSubProbObj, SurrBasedMinimizer::augmented_lagrangian_merit(), SurrBasedMinimizer::constraint_violation(), Minimizer::constraintTol, Iterator::convergenceTol, SurrBasedMinimizer::etaSequence, Response::function_values(), SurrBasedLocalMinimizer::gammaContract, SurrBasedLocalMinimizer::gammaExpand, SurrBasedLocalMinimizer::globalLowerBnds, SurrBasedLocalMinimizer::globalUpperBnds, SurrBasedMinimizer::initialize_filter(), Response::is_null(), Iterator::iteratedModel, SurrBasedMinimizer::lagrangian_merit(), SurrBasedLocalMinimizer::meritFnType, Minimizer::numContinuousVars, Minimizer::numNonlinearConstraints, Minimizer::objective(), SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, Iterator::outputLevel, SurrBasedMinimizer::penalty_merit(), Model::primary_response_fn_sense(), Model::primary_response_fn_weights(), Response::reset(), SurrBasedLocalMinimizer::softConvLimit, SurrBasedLocalMinimizer::trRatioContractValue, SurrBasedLocalMinimizer::trRatioExpandValue, SurrBasedMinimizer::update_augmented_lagrange_multipliers(), SurrBasedMinimizer::update_filter(), and SurrBasedLocalMinimizer::update_penalty().
|
protected |
check for hard convergence (norm of projected gradient of merit function < tolerance)
The hard convergence check computes the gradient of the merit function at the trust region center, performs a projection for active bound constraints (removing any gradient component directed into an active bound), and signals convergence if the 2-norm of this projected gradient is less than convergenceTol.
References SurrBasedLocalMinimizer::approxSubProbObj, SurrBasedMinimizer::constraint_violation(), Minimizer::constraintTol, Iterator::convergenceTol, Response::function_gradients(), Response::function_values(), Iterator::iteratedModel, SurrBasedMinimizer::lagrangian_gradient(), SurrBasedLocalMinimizer::meritFnType, SurrBasedLocalMinimizer::minimizeCycles, Minimizer::numContinuousVars, Minimizer::numNonlinearConstraints, SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, Iterator::outputLevel, Model::primary_response_fn_sense(), Model::primary_response_fn_weights(), SurrBasedLocalMinimizer::truthSetRequest, SurrBasedMinimizer::update_augmented_lagrange_multipliers(), and SurrBasedMinimizer::update_lagrange_multipliers().
|
protected |
initialize and update the penaltyParameter
Scaling of the penalty value is important to avoid rejecting SBLM iterates which must increase the objective to achieve a reduction in constraint violation. In the basic penalty case, the penalty is ramped exponentially based on the iteration counter. In the adaptive case, the ratio of relative change between center and star points for the objective and constraint violation values is used to rescale penalty values.
References SurrBasedMinimizer::alphaEta, SurrBasedLocalMinimizer::approxSubProbObj, SurrBasedMinimizer::constraint_violation(), Minimizer::constraintTol, SurrBasedMinimizer::eta, SurrBasedMinimizer::etaSequence, Iterator::iteratedModel, SurrBasedLocalMinimizer::meritFnType, SurrBasedLocalMinimizer::minimizeCycles, Minimizer::objective(), Iterator::outputLevel, SurrBasedLocalMinimizer::penaltyIterOffset, SurrBasedMinimizer::penaltyParameter, Model::primary_response_fn_sense(), and Model::primary_response_fn_weights().
Referenced by SurrBasedLocalMinimizer::compute_trust_region_ratio().
|
staticprotected |
static function used to define the approximate subproblem objective.
Objective functions evaluator for solution of approximate subproblem using a RecastModel.
References Response::active_set_request_vector(), SurrBasedLocalMinimizer::approxSubProbCon, SurrBasedLocalMinimizer::approxSubProbModel, SurrBasedLocalMinimizer::approxSubProbObj, SurrBasedMinimizer::augmented_lagrangian_gradient(), SurrBasedMinimizer::augmented_lagrangian_hessian(), SurrBasedMinimizer::augmented_lagrangian_merit(), Response::function_gradient(), Response::function_gradient_view(), Response::function_gradients(), Response::function_hessian(), Response::function_hessians(), Response::function_value(), Response::function_values(), Iterator::iteratedModel, SurrBasedMinimizer::lagrangian_gradient(), SurrBasedMinimizer::lagrangian_hessian(), SurrBasedMinimizer::lagrangian_merit(), Model::nonlinear_eq_constraint_targets(), Model::nonlinear_ineq_constraint_lower_bounds(), Model::nonlinear_ineq_constraint_upper_bounds(), Minimizer::numUserPrimaryFns, Minimizer::objective(), Minimizer::objective_gradient(), Minimizer::objective_hessian(), SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, Model::primary_response_fn_sense(), Model::primary_response_fn_weights(), and SurrBasedLocalMinimizer::sblmInstance.
Referenced by SurrBasedLocalMinimizer::initialize_sub_model().
|
staticprotected |
static function used to define the approximate subproblem constraints.
Constraint functions evaluator for solution of approximate subproblem using a RecastModel.
References Response::active_set_derivative_vector(), Response::active_set_request_vector(), SurrBasedLocalMinimizer::approxSubProbCon, SurrBasedLocalMinimizer::approxSubProbObj, Variables::continuous_variables(), Response::function_gradient(), Response::function_gradient_view(), Response::function_gradients(), Response::function_hessian(), Response::function_hessian_view(), Response::function_value(), Response::function_values(), Minimizer::numUserPrimaryFns, SurrBasedLocalMinimizer::sblmInstance, and SurrBasedLocalMinimizer::trust_region().
Referenced by SurrBasedLocalMinimizer::initialize_sub_model().
|
staticprotected |
static function used by NPSOL as the objective function in the homotopy constraint relaxation formulation.
NPSOL objective functions evaluator for solution of homotopy constraint relaxation parameter optimization. This constrained optimization problem performs the update of the tau parameter in the homotopy heuristic approach used to relax the constraints in the original problem .
Referenced by SurrBasedLocalMinimizer::relax_constraints().
|
staticprotected |
static function used by NPSOL as the constraint function in the homotopy constraint relaxation formulation.
NPSOL constraint functions evaluator for solution of homotopy constraint relaxation parameter optimization. This constrained optimization problem performs the update of the tau parameter in the homotopy heuristic approach used to relax the constraints in the original problem.
References Response::active_set(), SurrBasedLocalMinimizer::approxSubProbModel, Model::continuous_variables(), Model::current_response(), Model::evaluate(), Response::function_gradients(), Response::function_values(), SurrBasedLocalMinimizer::nonlinEqTargetsSlack, SurrBasedLocalMinimizer::nonlinIneqLowerBndsSlack, SurrBasedLocalMinimizer::nonlinIneqUpperBndsSlack, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, ActiveSet::request_vector(), Model::response_size(), SurrBasedLocalMinimizer::sblmInstance, and SurrBasedLocalMinimizer::tau.
Referenced by SurrBasedLocalMinimizer::relax_constraints().