Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
SurrBasedLocalMinimizer Class Reference

Class for provably-convergent local surrogate-based optimization and nonlinear least squares. More...

Inheritance diagram for SurrBasedLocalMinimizer:
SurrBasedMinimizer Minimizer Iterator

List of all members.

Public Member Functions

 SurrBasedLocalMinimizer (Model &model)
 constructor
 ~SurrBasedLocalMinimizer ()
 destructor

Protected Member Functions

void reset ()
 reset convergence controls in case of multiple SBLM executions

Private Member Functions

void minimize_surrogates ()
 Performs local surrogate-based minimization by minimizing local, global, or hierarchical surrogates over a series of trust regions.
bool tr_bounds (const RealVector &global_lower_bnds, const RealVector &global_upper_bnds, RealVector &tr_lower_bnds, RealVector &tr_upper_bnds)
 compute current trust region bounds
void find_center_truth (const Iterator &dace_iterator, Model &truth_model)
 retrieve responseCenterTruth if possible, evaluate it if not
void find_center_approx ()
 retrieve responseCenter_approx if possible, evaluate it if not
void hard_convergence_check (const Response &response_truth, const RealVector &c_vars, const RealVector &lower_bnds, const RealVector &upper_bnds)
 check for hard convergence (norm of projected gradient of merit function near zero)
void tr_ratio_check (const RealVector &c_vars_star, const RealVector &tr_lower_bounds, const RealVector &tr_upper_bounds)
 compute trust region ratio (for SBLM iterate acceptance and trust region resizing) and check for soft convergence (diminishing returns)
void update_penalty (const RealVector &fns_center_truth, const RealVector &fns_star_truth)
 initialize and update the penaltyParameter
void relax_constraints (const RealVector &lower_bnds, const RealVector &upper_bnds)
 relax constraints by updating bounds when current iterate is infeasible

Static Private 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.
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.
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.
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.

Private Attributes

Real origTrustRegionFactor
 original user specification for trustRegionFactor
Real trustRegionFactor
 the trust region factor is used to compute the total size of the trust region -- it is a percentage, e.g. for trustRegionFactor = 0.1, the actual size of the trust region will be 10% of the global bounds (upper bound - lower bound for each design variable).
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
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
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
bool recastSubProb
 flag to indicate when approxSubProbModel involves a RecastModel recursion
short trConstraintRelax
 type of trust region constraint relaxation for infeasible starting points: NO_RELAX or HOMOTOPY
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
int penaltyIterOffset
 iteration offset used to update the scaling of the penalty parameter for adaptive_penalty merit functions
short convergenceFlag
 code indicating satisfaction of hard or soft convergence conditions
short softConvCount
 number of consecutive candidate point rejections. If the count reaches softConvLimit, stop SBLM.
short softConvLimit
 the limit on consecutive candidate point rejections. If exceeded by softConvCount, stop SBLM.
bool truthGradientFlag
 flags the use/availability of truth gradients within the SBLM process
bool approxGradientFlag
 flags the use/availability of surrogate gradients within the SBLM process
bool truthHessianFlag
 flags the use/availability of truth Hessians within the SBLM process
bool approxHessianFlag
 flags the use/availability of surrogate Hessians within the SBLM process
short correctionType
 flags the use of surrogate correction techniques at the center of each trust region
bool globalApproxFlag
 flags the use of a global data fit surrogate (rsm, ann, mars, kriging)
bool multiptApproxFlag
 flags the use of a multipoint data fit surrogate (TANA)
bool localApproxFlag
 flags the use of a local data fit surrogate (Taylor series)
bool hierarchApproxFlag
 flags the use of a model hierarchy/multifidelity surrogate
bool newCenterFlag
 flags the acceptance of a candidate point and the existence of a new trust region center
bool daceCenterPtFlag
 flags the availability of the center point in the DACE evaluations for global approximations (CCD, Box-Behnken)
bool multiLayerBypassFlag
 flags the simultaneous presence of two conditions: (1) additional layerings w/i actual_model (e.g., surrogateModel = layered/nested/layered
bool useDerivsFlag
 flag for the "use_derivatives" specification for which derivatives are to be evaluated at each DACE point in global surrogate builds.
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)
Variables varsCenter
 variables at the trust region center
Response responseCenterApprox
 approx response at trust region center
Response responseStarApprox
 approx response at SBLM cycle minimum
IntResponsePair responseCenterTruth
 truth response at trust region center
IntResponsePair responseStarTruth
 truth response at SBLM cycle minimum

Static Private Attributes

static SurrBasedLocalMinimizersblmInstance
 pointer to SBLM instance used in static member functions

Detailed Description

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.


Member Function Documentation

void minimize_surrogates ( ) [private, virtual]

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 varied according to the goodness of the agreement between the approximations and the true response functions.

Implements SurrBasedMinimizer.

References Dakota::abort_handler(), Iterator::active_set(), Response::active_set(), Model::active_variables(), Graphics::add_datapoint(), DiscrepancyCorrection::apply(), SurrBasedLocalMinimizer::approxGradientFlag, SurrBasedLocalMinimizer::approxHessianFlag, SurrBasedMinimizer::approxSubProbMinimizer, SurrBasedLocalMinimizer::approxSubProbModel, Iterator::bestResponseArray, Iterator::bestVariablesArray, Model::build_approximation(), Model::component_parallel_mode(), DiscrepancyCorrection::compute(), Model::compute_response(), Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Variables::continuous_variables(), Model::continuous_variables(), SurrBasedLocalMinimizer::convergenceFlag, Variables::copy(), Dakota::copy_data(), SurrBasedLocalMinimizer::correctionType, Model::current_response(), Model::current_variables(), SurrBasedLocalMinimizer::daceCenterPtFlag, Dakota::dakota_graphics, Model::discrepancy_correction(), Model::evaluation_id(), SurrBasedLocalMinimizer::find_center_approx(), SurrBasedLocalMinimizer::find_center_truth(), SurrBasedLocalMinimizer::globalApproxFlag, SurrBasedLocalMinimizer::hard_convergence_check(), Iterator::is_null(), Iterator::iteratedModel, SurrBasedLocalMinimizer::localApproxFlag, Iterator::maxIterations, SurrBasedLocalMinimizer::minTrustRegionFactor, SurrBasedLocalMinimizer::multiLayerBypassFlag, SurrBasedLocalMinimizer::multiptApproxFlag, SurrBasedLocalMinimizer::newCenterFlag, Model::nonlinear_eq_constraint_targets(), Model::nonlinear_ineq_constraint_lower_bounds(), Model::nonlinear_ineq_constraint_upper_bounds(), Iterator::numContinuousVars, SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, SurrBasedLocalMinimizer::recastSubProb, SurrBasedLocalMinimizer::relax_constraints(), ActiveSet::request_values(), SurrBasedLocalMinimizer::reset(), Iterator::response_results(), SurrBasedLocalMinimizer::responseCenterApprox, SurrBasedLocalMinimizer::responseCenterTruth, SurrBasedLocalMinimizer::responseStarApprox, SurrBasedLocalMinimizer::responseStarTruth, Iterator::run_iterator(), Iterator::sampling_scheme(), SurrBasedMinimizer::sbIterNum, SurrBasedLocalMinimizer::sblmInstance, SurrBasedLocalMinimizer::softConvCount, SurrBasedLocalMinimizer::softConvLimit, Model::subordinate_iterator(), Model::surrogate_model(), Model::surrogate_response_mode(), SurrBasedLocalMinimizer::tr_bounds(), SurrBasedLocalMinimizer::tr_ratio_check(), SurrBasedLocalMinimizer::trConstraintRelax, SurrBasedLocalMinimizer::trustRegionFactor, Model::truth_model(), SurrBasedLocalMinimizer::truthGradientFlag, SurrBasedLocalMinimizer::truthHessianFlag, Response::update(), SurrBasedLocalMinimizer::useDerivsFlag, Iterator::variables_results(), and SurrBasedLocalMinimizer::varsCenter.

void hard_convergence_check ( const Response response_truth,
const RealVector &  c_vars,
const RealVector &  lower_bnds,
const RealVector &  upper_bnds 
) [private]
void tr_ratio_check ( const RealVector &  c_vars_star,
const RealVector &  tr_lower_bnds,
const RealVector &  tr_upper_bnds 
) [private]

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::globalApproxFlag, Iterator::iteratedModel, SurrBasedMinimizer::lagrangian_merit(), SurrBasedLocalMinimizer::meritFnType, SurrBasedLocalMinimizer::newCenterFlag, Iterator::numContinuousVars, SurrBasedMinimizer::origNonlinEqTargets, SurrBasedMinimizer::origNonlinIneqLowerBnds, SurrBasedMinimizer::origNonlinIneqUpperBnds, SurrBasedMinimizer::penalty_merit(), Model::primary_response_fn_weights(), SurrBasedLocalMinimizer::responseCenterApprox, SurrBasedLocalMinimizer::responseCenterTruth, SurrBasedLocalMinimizer::responseStarApprox, SurrBasedLocalMinimizer::responseStarTruth, SurrBasedLocalMinimizer::softConvCount, SurrBasedLocalMinimizer::trRatioContractValue, SurrBasedLocalMinimizer::trRatioExpandValue, SurrBasedLocalMinimizer::trustRegionFactor, SurrBasedMinimizer::update_augmented_lagrange_multipliers(), SurrBasedMinimizer::update_filter(), and SurrBasedLocalMinimizer::update_penalty().

Referenced by SurrBasedLocalMinimizer::minimize_surrogates().

void update_penalty ( const RealVector &  fns_center_truth,
const RealVector &  fns_star_truth 
) [private]

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, Minimizer::objective(), SurrBasedLocalMinimizer::penaltyIterOffset, SurrBasedMinimizer::penaltyParameter, Model::primary_response_fn_weights(), and SurrBasedMinimizer::sbIterNum.

Referenced by SurrBasedLocalMinimizer::tr_ratio_check().

void approx_subprob_objective_eval ( const Variables surrogate_vars,
const Variables recast_vars,
const Response surrogate_response,
Response recast_response 
) [static, private]
void approx_subprob_constraint_eval ( const Variables surrogate_vars,
const Variables recast_vars,
const Response surrogate_response,
Response recast_response 
) [static, private]
void hom_objective_eval ( int &  mode,
int &  n,
double *  tau_and_x,
double &  f,
double *  grad_f,
int &   
) [static, private]

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().

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, private]

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::compute_response(), Model::continuous_variables(), Model::current_response(), Response::function_gradients(), Response::function_values(), SurrBasedLocalMinimizer::nonlinEqTargetsSlack, SurrBasedLocalMinimizer::nonlinIneqLowerBndsSlack, SurrBasedLocalMinimizer::nonlinIneqUpperBndsSlack, Model::num_functions(), Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, ActiveSet::request_vector(), SurrBasedLocalMinimizer::sblmInstance, and SurrBasedLocalMinimizer::tau.

Referenced by SurrBasedLocalMinimizer::relax_constraints().


Member Data Documentation

bool multiLayerBypassFlag [private]

flags the simultaneous presence of two conditions: (1) additional layerings w/i actual_model (e.g., surrogateModel = layered/nested/layered

-> actual_model = nested/layered), and (2) a user-specification to bypass all layerings within actual_model for the evaluation of truth data (responseCenterTruth and responseStarTruth).

Referenced by SurrBasedLocalMinimizer::find_center_truth(), SurrBasedLocalMinimizer::minimize_surrogates(), and SurrBasedLocalMinimizer::SurrBasedLocalMinimizer().


The documentation for this class was generated from the following files: