Base class for the optimizer and least squares branches of the iterator hierarchy. More...
Protected Member Functions | |
Minimizer () | |
default constructor | |
Minimizer (Model &model) | |
standard constructor | |
Minimizer (NoDBBaseConstructor, Model &model) | |
alternate constructor for "on the fly" instantiations | |
Minimizer (NoDBBaseConstructor, size_t num_lin_ineq, size_t num_lin_eq, size_t num_nln_ineq, size_t num_nln_eq) | |
alternate constructor for "on the fly" instantiations | |
~Minimizer () | |
destructor | |
void | initialize_run () |
utility function to perform common operations prior to pre_run(); typically memory initialization; setting of instance pointers | |
void | finalize_run () |
utility function to perform common operations following post_run(); deallocation and resetting of instance pointers | |
void | initialize_scaling () |
initialize scaling types, multipliers, and offsets; perform error checking | |
void | compute_scaling (int object_type, int auto_type, int num_vars, RealVector &lbs, RealVector &ubs, RealVector &targets, const StringArray &scale_strings, const RealVector &scales, IntArray &scale_types, RealVector &scale_mults, RealVector &scale_offsets) |
general helper function for initializing scaling types and factors on a vector of variables, functions, constraints, etc. | |
bool | compute_scale_factor (const Real lower_bound, const Real upper_bound, Real *multiplier, Real *offset) |
automatically compute a single scaling factor -- bounds case | |
bool | compute_scale_factor (const Real target, Real *multiplier) |
automatically compute a single scaling factor -- target case | |
bool | need_resp_trans_byvars (const ShortArray &asv, int start_index, int num_resp) |
determine if response transformation is needed due to variable transformations | |
RealVector | modify_n2s (const RealVector &native_vars, const IntArray &scale_types, const RealVector &multipliers, const RealVector &offsets) const |
general RealVector mapping from native to scaled variables vectors: | |
RealVector | modify_s2n (const RealVector &scaled_vars, const IntArray &scale_types, const RealVector &multipliers, const RealVector &offsets) const |
general RealVector mapping from scaled to native variables (and values) | |
void | response_modify_n2s (const Variables &scaled_vars, const Response &native_response, Response &scaled_response, int native_offset, int recast_offset, int num_responses) const |
map reponses from native to scaled variable space | |
void | response_modify_s2n (const Variables &native_vars, const Response &scaled_response, Response &native_response, int scaled_offset, int native_offset, int num_responses) const |
map responses from scaled to native variable space | |
RealMatrix | lin_coeffs_modify_n2s (const RealMatrix &native_coeffs, const RealVector &cv_multipliers, const RealVector &lin_multipliers) const |
general linear coefficients mapping from native to scaled space | |
void | print_scaling (const String &info, const IntArray &scale_types, const RealVector &scale_mults, const RealVector &scale_offsets, const StringArray &labels) |
print scaling information for a particular response type in tabular form | |
Static Protected Member Functions | |
static void | variables_recast (const Variables &scaled_vars, Variables &native_vars) |
variables conversion map for RecastModel used in scaling: transform variables from scaled to native (user) space | |
static void | secondary_resp_recast (const Variables &native_vars, const Variables &scaled_vars, const Response &native_response, Response &scaled_response) |
secondary response conversion map for RecastModel used in scaling: transform constraints (fns, grads, Hessians) from native (user) to | |
Protected Attributes | |
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 | |
int | numNonlinearConstraints |
total number of nonlinear constraints | |
int | numLinearConstraints |
total number of linear constraints | |
int | numConstraints |
total number of linear and nonlinear constraints | |
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 | |
size_t | numUserPrimaryFns |
number of objective functions or least squares terms in the user's model | |
size_t | numIterPrimaryFns |
number of objective functions or least squares terms in iterator's view | |
bool | scaleFlag |
flag for overall scaling status | |
bool | varsScaleFlag |
flag for variables scaling | |
bool | primaryRespScaleFlag |
flag for primary response scaling | |
bool | secondaryRespScaleFlag |
flag for secondary response scaling | |
IntArray | cvScaleTypes |
scale flags for continuous vars. | |
RealVector | cvScaleMultipliers |
scales for continuous variables | |
RealVector | cvScaleOffsets |
offsets for continuous variables | |
IntArray | responseScaleTypes |
scale flags for all responses | |
RealVector | responseScaleMultipliers |
scales for all responses | |
RealVector | responseScaleOffsets |
offsets for all responses (zero < for functions, not for nonlin con) | |
IntArray | linearIneqScaleTypes |
scale flags for linear ineq | |
RealVector | linearIneqScaleMultipliers |
scales for linear ineq constrs. | |
RealVector | linearIneqScaleOffsets |
offsets for linear ineq constrs. | |
IntArray | linearEqScaleTypes |
scale flags for linear eq. | |
RealVector | linearEqScaleMultipliers |
scales for linear constraints | |
RealVector | linearEqScaleOffsets |
offsets for linear constraints | |
Minimizer * | prevMinInstance |
pointer containing previous value of minimizerInstance | |
bool | vendorNumericalGradFlag |
convenience flag for gradType == numerical && methodSource == vendor | |
Static Protected Attributes | |
static Minimizer * | minimizerInstance |
pointer to Minimizer used in static member functions | |
Friends | |
class | SOLBase |
the SOLBase class is not derived the iterator hierarchy but still needs access to iterator hierarchy data (to avoid attribute replication) | |
class | SNLLBase |
the SNLLBase class is not derived the iterator hierarchy but still needs access to iterator hierarchy data (to avoid attribute replication) |
Base class for the optimizer and least squares branches of the iterator hierarchy.
The Minimizer class provides common data and functionality for Optimizer and LeastSq.
standard constructor
This constructor extracts inherited data for the optimizer and least squares branches and performs sanity checking on constraint settings.
References Dakota::abort_handler(), Response::active_set_request_vector(), String::begins(), Iterator::bestResponseArray, Minimizer::bigIntBoundSize, Minimizer::bigRealBoundSize, Minimizer::boundConstraintFlag, Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Response::copy(), Model::current_response(), Model::discrete_int_lower_bounds(), Model::discrete_int_upper_bounds(), Model::discrete_real_lower_bounds(), Model::discrete_real_upper_bounds(), String::ends(), ProblemDescDB::get_sizet(), Iterator::gradientType, Iterator::hessianType, Iterator::maxIterations, Iterator::methodName, Iterator::methodSource, Iterator::numContinuousVars, Iterator::numDiscreteIntVars, Iterator::numDiscreteRealVars, Iterator::numFinalSolutions, Iterator::numFunctions, Minimizer::numLinearEqConstraints, Minimizer::numLinearIneqConstraints, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Iterator::probDescDB, and Minimizer::vendorNumericalGradFlag.
void initialize_run | ( | ) | [protected, virtual] |
utility function to perform common operations prior to pre_run(); typically memory initialization; setting of instance pointers
Perform initialization phases of run sequence, like allocating memory and setting instance pointers. Commonly used in sub-iterator executions. This is a virtual function; when re-implementing, a derived class must call its nearest parent's initialize_run(), typically _before_ performing its own implementation steps.
Reimplemented from Iterator.
Reimplemented in CONMINOptimizer, LeastSq, Optimizer, DOTOptimizer, NLPQLPOptimizer, SNLLLeastSq, and SNLLOptimizer.
References Model::all_continuous_variables(), Model::all_discrete_int_variables(), Model::all_discrete_real_variables(), Iterator::bestVariablesArray, Iterator::iteratedModel, Minimizer::minimizerInstance, Minimizer::prevMinInstance, and Iterator::subIteratorFlag.
void finalize_run | ( | ) | [inline, protected, virtual] |
utility function to perform common operations following post_run(); deallocation and resetting of instance pointers
Optional: perform finalization phases of run sequence, like deallocating memory and resetting instance pointers. Commonly used in sub-iterator executions. This is a virtual function; when re-implementing, a derived class must call its nearest parent's finalize_run(), typically _after_ performing its own implementation steps.
Reimplemented from Iterator.
Reimplemented in LeastSq, Optimizer, SNLLLeastSq, and SNLLOptimizer.
References Minimizer::minimizerInstance, and Minimizer::prevMinInstance.
void initialize_scaling | ( | ) | [protected] |
initialize scaling types, multipliers, and offsets; perform error checking
helper function used in constructors of derived classes to set up scaling types, multipliers and offsets when input scaling flag is enabled
References Dakota::abort_handler(), Minimizer::compute_scaling(), Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Model::continuous_variable_labels(), Model::continuous_variables(), Dakota::copy_data(), Minimizer::cvScaleMultipliers, Minimizer::cvScaleOffsets, Minimizer::cvScaleTypes, ProblemDescDB::get_dsa(), ProblemDescDB::get_rdv(), Iterator::iteratedModel, Minimizer::lin_coeffs_modify_n2s(), Model::linear_eq_constraint_coeffs(), Model::linear_eq_constraint_targets(), Model::linear_ineq_constraint_coeffs(), Model::linear_ineq_constraint_lower_bounds(), Model::linear_ineq_constraint_upper_bounds(), Minimizer::linearEqScaleMultipliers, Minimizer::linearEqScaleOffsets, Minimizer::linearEqScaleTypes, Minimizer::linearIneqScaleMultipliers, Minimizer::linearIneqScaleOffsets, Minimizer::linearIneqScaleTypes, Model::model_rep(), Minimizer::modify_n2s(), Model::nonlinear_eq_constraint_targets(), Model::nonlinear_ineq_constraint_lower_bounds(), Model::nonlinear_ineq_constraint_upper_bounds(), Iterator::numContinuousVars, Iterator::numFunctions, Minimizer::numLinearEqConstraints, Minimizer::numLinearIneqConstraints, Minimizer::numNonlinearEqConstraints, Minimizer::numNonlinearIneqConstraints, Minimizer::numUserPrimaryFns, Iterator::outputLevel, Minimizer::primaryRespScaleFlag, Minimizer::print_scaling(), Iterator::probDescDB, Model::response_labels(), Minimizer::responseScaleMultipliers, Minimizer::responseScaleOffsets, Minimizer::responseScaleTypes, Minimizer::secondaryRespScaleFlag, RecastModel::submodel_supports_estimated_derivatives(), Model::subordinate_model(), Model::supports_estimated_derivatives(), and Minimizer::varsScaleFlag.
Referenced by LeastSq::LeastSq(), and Optimizer::Optimizer().
void variables_recast | ( | const Variables & | scaled_vars, |
Variables & | native_vars | ||
) | [static, protected] |
variables conversion map for RecastModel used in scaling: transform variables from scaled to native (user) space
Variables map from iterator/scaled space to user/native space using a RecastModel.
References Variables::continuous_variable_labels(), Variables::continuous_variables(), Minimizer::cvScaleMultipliers, Minimizer::cvScaleOffsets, Minimizer::cvScaleTypes, Minimizer::minimizerInstance, Minimizer::modify_s2n(), Iterator::outputLevel, and Dakota::write_data().
Referenced by LeastSq::LeastSq(), and Optimizer::Optimizer().
void secondary_resp_recast | ( | const Variables & | native_vars, |
const Variables & | scaled_vars, | ||
const Response & | native_response, | ||
Response & | iterator_response | ||
) | [static, protected] |
secondary response conversion map for RecastModel used in scaling: transform constraints (fns, grads, Hessians) from native (user) to
Constraint function map from user/native space to iterator/scaled/combined space using a RecastModel.
References Response::active_set_request_vector(), Minimizer::minimizerInstance, Minimizer::need_resp_trans_byvars(), Minimizer::numIterPrimaryFns, Minimizer::numNonlinearConstraints, Minimizer::numUserPrimaryFns, Minimizer::response_modify_n2s(), Minimizer::secondaryRespScaleFlag, and Response::update_partial().
Referenced by LeastSq::LeastSq(), and Optimizer::Optimizer().
bool need_resp_trans_byvars | ( | const ShortArray & | asv, |
int | start_index, | ||
int | num_resp | ||
) | [protected] |
determine if response transformation is needed due to variable transformations
Determine if variable transformations present and derivatives requested, which implies a response transformation is necessay
References Minimizer::varsScaleFlag.
Referenced by Optimizer::post_run(), LeastSq::post_run(), Optimizer::primary_resp_recast(), LeastSq::primary_resp_recast(), and Minimizer::secondary_resp_recast().
RealVector modify_n2s | ( | const RealVector & | native_vars, |
const IntArray & | scale_types, | ||
const RealVector & | multipliers, | ||
const RealVector & | offsets | ||
) | const [protected] |
general RealVector mapping from native to scaled variables vectors:
general RealVector mapping from native to scaled variables; loosely, in greatest generality: scaled_var = log( (native_var - offset) / multiplier )
Referenced by Minimizer::initialize_scaling().
RealVector modify_s2n | ( | const RealVector & | scaled_vars, |
const IntArray & | scale_types, | ||
const RealVector & | multipliers, | ||
const RealVector & | offsets | ||
) | const [protected] |
general RealVector mapping from scaled to native variables (and values)
general RealVector mapping from scaled to native variables and/or vals; loosely, in greatest generality: scaled_var = (LOG_BASE^scaled_var) * multiplier + offset
Referenced by SNLLLeastSq::post_run(), Optimizer::post_run(), LeastSq::post_run(), COLINOptimizer::post_run(), and Minimizer::variables_recast().
void response_modify_n2s | ( | const Variables & | native_vars, |
const Response & | native_response, | ||
Response & | recast_response, | ||
int | native_offset, | ||
int | recast_offset, | ||
int | num_responses | ||
) | const [protected] |
map reponses from native to scaled variable space
scaling response mapping: modifies response from a model (user/native) for use in iterators (scaled) -- not including multi_objective_modify
References Response::active_set(), Response::active_set_derivative_vector(), Response::active_set_request_vector(), Variables::acv(), Variables::all_continuous_variable_ids(), Variables::all_continuous_variables(), Variables::continuous_variable_ids(), Variables::continuous_variables(), Variables::cv(), Minimizer::cvScaleMultipliers, Minimizer::cvScaleOffsets, Minimizer::cvScaleTypes, Response::function_gradient(), Response::function_gradients(), Response::function_hessian(), Response::function_hessians(), Response::function_labels(), Response::function_value(), Response::function_values(), Variables::icv(), Variables::inactive_continuous_variable_ids(), Variables::inactive_continuous_variables(), Minimizer::numIterPrimaryFns, Iterator::outputLevel, Minimizer::responseScaleMultipliers, Minimizer::responseScaleOffsets, Minimizer::responseScaleTypes, Dakota::write_col_vector_trans(), Dakota::write_data(), and Dakota::write_precision.
Referenced by Optimizer::primary_resp_recast(), LeastSq::primary_resp_recast(), and Minimizer::secondary_resp_recast().
void response_modify_s2n | ( | const Variables & | native_vars, |
const Response & | scaled_response, | ||
Response & | native_response, | ||
int | scaled_offset, | ||
int | native_offset, | ||
int | num_responses | ||
) | const [protected] |
map responses from scaled to native variable space
scaling response mapping: modifies response from scaled (iterator) to native (user) space -- not including multi_objective_retrieve
References Response::active_set(), Response::active_set_derivative_vector(), Response::active_set_request_vector(), Variables::acv(), Variables::all_continuous_variable_ids(), Variables::all_continuous_variables(), Variables::continuous_variable_ids(), Variables::continuous_variables(), Variables::cv(), Minimizer::cvScaleMultipliers, Minimizer::cvScaleOffsets, Minimizer::cvScaleTypes, Response::function_gradient(), Response::function_gradients(), Response::function_hessian(), Response::function_hessians(), Response::function_labels(), Response::function_value(), Response::function_values(), Variables::icv(), Variables::inactive_continuous_variable_ids(), Variables::inactive_continuous_variables(), Minimizer::numIterPrimaryFns, Iterator::outputLevel, Minimizer::responseScaleMultipliers, Minimizer::responseScaleOffsets, Minimizer::responseScaleTypes, Dakota::write_col_vector_trans(), Dakota::write_data(), and Dakota::write_precision.
Referenced by Optimizer::post_run(), and LeastSq::post_run().
RealMatrix lin_coeffs_modify_n2s | ( | const RealMatrix & | src_coeffs, |
const RealVector & | cv_multipliers, | ||
const RealVector & | lin_multipliers | ||
) | const [protected] |
general linear coefficients mapping from native to scaled space
compute scaled linear constraint matrix given design variable multipliers and linear scaling multipliers. Only scales components corresponding to continuous variables so for src_coeffs of size MxN, lin_multipliers.size() <= M, cv_multipliers.size() <= N
Referenced by Minimizer::initialize_scaling().