Dakota
Version 6.19
Explore and Predict with Confidence
|
Base class for the approximation class hierarchy. More...
Public Member Functions | |
Approximation () | |
default constructor More... | |
Approximation (ProblemDescDB &problem_db, const SharedApproxData &shared_data, const String &approx_label) | |
standard constructor for envelope More... | |
Approximation (const SharedApproxData &shared_data) | |
alternate constructor More... | |
Approximation (const Approximation &approx) | |
copy constructor More... | |
virtual | ~Approximation () |
destructor | |
Approximation | operator= (const Approximation &approx) |
assignment operator | |
virtual void | active_model_key (const Pecos::ActiveKey &sd_key) |
activate an approximation state based on its multi-index key | |
virtual void | clear_model_keys () |
reset initial state by removing all model keys for an approximation | |
virtual void | build () |
builds the approximation from scratch More... | |
virtual void | export_model (const StringArray &var_labels=StringArray(), const String &fn_label="", const String &export_prefix="", const unsigned short export_format=NO_MODEL_FORMAT) |
exports the approximation; if export_format > NO_MODEL_FORMAT, uses all 3 parameters, otherwise extracts these from the Approximation's sharedDataRep to build a filename | |
virtual void | export_model (const Variables &vars, const String &fn_label="", const String &export_prefix="", const unsigned short export_format=NO_MODEL_FORMAT) |
approximation export that generates labels from the passed Variables, since only the derived classes know how the variables are ordered w.r.t. the surrogate build; if export_format > NO_MODEL_FORMAT, uses all 3 parameters, otherwise extracts these from the Approximation's sharedDataRep to build a filename | |
virtual void | rebuild () |
rebuilds the approximation incrementally | |
virtual void | replace (const IntResponsePair &response_pr, size_t fn_index) |
replace the response data | |
virtual void | pop_coefficients (bool save_data) |
removes entries from end of SurrogateData::{vars,resp}Data (last points appended, or as specified in args) | |
virtual void | push_coefficients () |
restores state prior to previous pop() | |
virtual void | finalize_coefficients () |
finalize approximation by applying all remaining trial sets | |
virtual void | clear_current_active_data () |
clear current build data in preparation for next build More... | |
virtual void | combine_coefficients () |
combine all level approximations into a single aggregate approximation | |
virtual void | combined_to_active_coefficients (bool clear_combined=true) |
promote combined approximation into active approximation | |
virtual void | clear_inactive_coefficients () |
prune inactive coefficients following combination and promotion to active | |
virtual Real | value (const Variables &vars) |
retrieve the approximate function value for a given parameter vector | |
virtual const RealVector & | gradient (const Variables &vars) |
retrieve the approximate function gradient for a given parameter vector | |
virtual const RealSymMatrix & | hessian (const Variables &vars) |
retrieve the approximate function Hessian for a given parameter vector | |
virtual Real | prediction_variance (const Variables &vars) |
retrieve the variance of the predicted value for a given parameter vector | |
virtual Real | value (const RealVector &c_vars) |
retrieve the approximate function value for a given parameter vector | |
virtual const RealVector & | gradient (const RealVector &c_vars) |
retrieve the approximate function gradient for a given parameter vector | |
virtual const RealSymMatrix & | hessian (const RealVector &c_vars) |
retrieve the approximate function Hessian for a given parameter vector | |
virtual Real | prediction_variance (const RealVector &c_vars) |
retrieve the variance of the predicted value for a given parameter vector | |
virtual Real | mean () |
return the mean of the expansion, where all active vars are random | |
virtual Real | mean (const RealVector &x) |
return the mean of the expansion for a given parameter vector, where a subset of the active variables are random | |
virtual Real | combined_mean () |
return the mean of the combined expansion, where all active vars are random | |
virtual Real | combined_mean (const RealVector &x) |
return the mean of the combined expansion for a given parameter vector, where a subset of the active variables are random | |
virtual const RealVector & | mean_gradient () |
return the gradient of the expansion mean | |
virtual const RealVector & | mean_gradient (const RealVector &x, const SizetArray &dvv) |
return the gradient of the expansion mean | |
virtual Real | variance () |
return the variance of the expansion, where all active vars are random | |
virtual Real | variance (const RealVector &x) |
return the variance of the expansion for a given parameter vector, where a subset of the active variables are random | |
virtual const RealVector & | variance_gradient () |
virtual const RealVector & | variance_gradient (const RealVector &x, const SizetArray &dvv) |
virtual Real | covariance (Approximation &approx_2) |
return the covariance between two response expansions, treating all variables as random | |
virtual Real | covariance (const RealVector &x, Approximation &approx_2) |
return the covariance between two response expansions, treating a subset of the variables as random | |
virtual Real | combined_covariance (Approximation &approx_2) |
return the covariance between two combined response expansions, where all active variables are random | |
virtual Real | combined_covariance (const RealVector &x, Approximation &approx_2) |
return the covariance between two combined response expansions, where a subset of the active variables are random | |
virtual void | compute_moments (bool full_stats=true, bool combined_stats=false) |
virtual void | compute_moments (const RealVector &x, bool full_stats=true, bool combined_stats=false) |
virtual const RealVector & | moments () const |
virtual const RealVector & | expansion_moments () const |
virtual const RealVector & | numerical_integration_moments () const |
virtual const RealVector & | combined_moments () const |
virtual Real | moment (size_t i) const |
virtual void | moment (Real mom, size_t i) |
virtual Real | combined_moment (size_t i) const |
virtual void | combined_moment (Real mom, size_t i) |
virtual void | clear_component_effects () |
virtual void | compute_component_effects () |
virtual void | compute_total_effects () |
virtual const RealVector & | sobol_indices () const |
virtual const RealVector & | total_sobol_indices () const |
virtual ULongULongMap | sparse_sobol_index_map () const |
virtual bool | advancement_available () |
check if resolution advancement (e.g., order, rank) is available for this approximation instance | |
virtual bool | diagnostics_available () |
check if diagnostics are available for this approximation type | |
virtual Real | diagnostic (const String &metric_type) |
retrieve a single diagnostic metric for the diagnostic type specified | |
virtual RealArray | cv_diagnostic (const StringArray &metric_types, unsigned num_folds) |
retrieve diagnostic metrics for the diagnostic types specified, applying | |
virtual void | primary_diagnostics (size_t fn_index) |
compute and print all requested diagnostics and cross-validation | |
virtual RealArray | challenge_diagnostic (const StringArray &metric_types, const RealMatrix &challenge_points, const RealVector &challenge_responses) |
compute requested diagnostics for user provided challenge pts | |
virtual void | challenge_diagnostics (size_t fn_index, const RealMatrix &challenge_points, const RealVector &challenge_responses) |
compute and print all requested diagnostics for user provided challenge pts | |
virtual RealVector | approximation_coefficients (bool normalized) const |
return the coefficient array computed by build()/rebuild() | |
virtual void | approximation_coefficients (const RealVector &approx_coeffs, bool normalized) |
set the coefficient array from external sources, rather than computing with build()/rebuild() | |
virtual void | coefficient_labels (std::vector< std::string > &coeff_labels) const |
print the coefficient array computed in build()/rebuild() | |
virtual void | print_coefficients (std::ostream &s, bool normalized) |
print the coefficient array computed in build()/rebuild() | |
virtual int | min_coefficients () const |
return the minimum number of samples (unknowns) required to build the derived class approximation type in numVars dimensions | |
virtual int | recommended_coefficients () const |
return the recommended number of samples (unknowns) required to build the derived class approximation type in numVars dimensions | |
virtual int | num_constraints () const |
return the number of constraints to be enforced via an anchor point | |
virtual void | expansion_coefficient_flag (bool) |
virtual bool | expansion_coefficient_flag () const |
virtual void | expansion_gradient_flag (bool) |
virtual bool | expansion_gradient_flag () const |
virtual void | clear_computed_bits () |
clear tracking of computed moments, due to (expansion) change that invalidates previous results | |
virtual void | map_variable_labels (const Variables &dfsm_vars) |
if needed, map passed all variable labels to approximation's labels | |
int | min_points (bool constraint_flag) const |
return the minimum number of points required to build the approximation type in numVars dimensions. Uses *_coefficients() and num_constraints(). | |
int | recommended_points (bool constraint_flag) const |
return the recommended number of samples to build the approximation type in numVars dimensions (default same as min_points) | |
void | pop_data (bool save_data) |
removes entries from end of SurrogateData::{vars,resp}Data (last points appended, or as specified in args) | |
void | push_data () |
restores SurrogateData state prior to previous pop() | |
void | finalize_data () |
finalize SurrogateData by applying all remaining trial sets | |
const Pecos::SurrogateData & | surrogate_data () const |
return approxData | |
Pecos::SurrogateData & | surrogate_data () |
return approxData | |
void | add (const Variables &vars, bool v_copy, const Response &response, size_t fn_index, bool r_copy, bool anchor_flag, int eval_id, size_t key_index=_NPOS) |
create SurrogateData{Vars,Resp} and append to SurrogateData:: {varsData,respData,dataIdentifiers} | |
void | add (const Real *c_vars, bool v_copy, const Response &response, size_t fn_index, bool r_copy, bool anchor_flag, int eval_id, size_t key_index=_NPOS) |
create SurrogateData{Vars,Resp} and append to SurrogateData:: {varsData,respData,dataIdentifiers} | |
void | add (const Pecos::SurrogateDataVars &sdv, bool v_copy, const Response &response, size_t fn_index, bool r_copy, bool anchor_flag, int eval_id, size_t key_index=_NPOS) |
create a SurrogateDataResp and append to SurrogateData:: {varsData,respData,dataIdentifiers} | |
void | add (const Pecos::SurrogateDataVars &sdv, bool v_copy, const Pecos::SurrogateDataResp &sdr, bool r_copy, bool anchor_flag, int eval_id, size_t key_index=_NPOS) |
append to SurrogateData::{varsData,respData,dataIdentifiers} | |
void | add_array (const RealMatrix &sample_vars, bool v_copy, const RealVector &sample_resp, bool r_copy, size_t key_index=_NPOS) |
add surrogate data from the provided sample and response data, assuming continuous variables and function values only More... | |
void | pop_count (size_t count, size_t key_index) |
appends to SurrogateData::popCountStack (number of entries to pop from end of SurrogateData::{vars,resp}Data, based on size of last data append) | |
void | clear_data () |
clear SurrogateData::{vars,resp}Data for activeKey + embedded keys More... | |
void | clear_active_data () |
clear active approximation data | |
void | clear_inactive_data () |
clear inactive approximation data | |
void | clear_active_popped () |
clear SurrogateData::popped{Vars,Resp}Trials,popCountStack for activeKey | |
void | clear_popped () |
clear SurrogateData::popped{Vars,Resp}Trials,popCountStack for all keys | |
void | set_bounds (const RealVector &c_l_bnds, const RealVector &c_u_bnds, const IntVector &di_l_bnds, const IntVector &di_u_bnds, const RealVector &dr_l_bnds, const RealVector &dr_u_bnds) |
set approximation lower and upper bounds (currently only used by graphics) | |
std::shared_ptr< Approximation > | approx_rep () const |
returns approxRep for access to derived class member functions that are not mapped to the top Approximation level | |
Protected Member Functions | |
Approximation (BaseConstructor, const ProblemDescDB &problem_db, const SharedApproxData &shared_data, const String &approx_label) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More... | |
Approximation (NoDBBaseConstructor, const SharedApproxData &shared_data) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More... | |
Pecos::SurrogateDataVars | variables_to_sdv (const Real *sample_c_vars) |
create a SurrogateDataVars instance from a Real* | |
Pecos::SurrogateDataVars | variables_to_sdv (const Variables &vars) |
create a SurrogateDataVars instance by extracting data from a Variables object | |
Pecos::SurrogateDataResp | response_to_sdr (const Response &response, size_t fn_index) |
create a SurrogateDataResp instance by extracting data for a particular QoI from a Response object | |
void | add (const Pecos::SurrogateDataVars &sdv, bool v_copy, const Pecos::SurrogateDataResp &sdr, bool r_copy, bool anchor_flag) |
tracks a new data point by appending to SurrogateData::{vars,Resp}Data | |
void | add (int eval_id) |
tracks a new data point by appending to SurrogateData::dataIdentifiers | |
void | check_points (size_t num_build_pts) |
Check number of build points against minimum required. | |
void | assign_key_index (size_t key_index) |
extract and assign i-th embedded active key | |
Protected Attributes | |
Pecos::SurrogateData | approxData |
contains the variables/response data for constructing a single approximation model (one response function). There is only one SurrogateData instance per Approximation, although it may contain keys for different model forms/resolutions and aggregations (e.g., discrepancies) among forms/resolutions. | |
RealVector | approxGradient |
gradient of the approximation returned by gradient() | |
RealSymMatrix | approxHessian |
Hessian of the approximation returned by hessian() | |
String | approxLabel |
label for approximation, if applicable | |
std::shared_ptr< SharedApproxData > | sharedDataRep |
contains the approximation data that is shared among the response set | |
Private Member Functions | |
std::shared_ptr< Approximation > | get_approx (ProblemDescDB &problem_db, const SharedApproxData &shared_data, const String &approx_label) |
Used only by the standard envelope constructor to initialize approxRep to the appropriate derived type. More... | |
std::shared_ptr< Approximation > | get_approx (const SharedApproxData &shared_data) |
Used only by the alternate envelope constructor to initialize approxRep to the appropriate derived type. More... | |
Private Attributes | |
std::shared_ptr< Approximation > | approxRep |
pointer to the letter (initialized only for the envelope) | |
Base class for the approximation class hierarchy.
The Approximation class is the base class for the response data fit approximation class hierarchy in DAKOTA. One instance of an Approximation must be created for each function to be approximated (a vector of Approximations is contained in ApproximationInterface). For memory efficiency and enhanced polymorphism, the approximation hierarchy employs the "letter/envelope idiom" (see Coplien "Advanced C++", p. 133), for which the base class (Approximation) serves as the envelope and one of the derived classes (selected in Approximation::get_approx()) serves as the letter.
Approximation | ( | ) |
default constructor
The default constructor is used in Array<Approximation> instantiations and by the alternate envelope constructor. approxRep is NULL in this case (problem_db is needed to build a meaningful Approximation object).
Approximation | ( | ProblemDescDB & | problem_db, |
const SharedApproxData & | shared_data, | ||
const String & | approx_label | ||
) |
standard constructor for envelope
Envelope constructor only needs to extract enough data to properly execute get_approx, since Approximation(BaseConstructor, problem_db) builds the actual base class data for the derived approximations.
References Dakota::abort_handler(), and Approximation::approxRep.
Approximation | ( | const SharedApproxData & | shared_data | ) |
alternate constructor
This is the alternate envelope constructor for instantiations on the fly. Since it does not have access to problem_db, it utilizes the NoDBBaseConstructor constructor chain.
References Dakota::abort_handler(), and Approximation::approxRep.
Approximation | ( | const Approximation & | approx | ) |
copy constructor
Copy constructor manages sharing of approxRep.
|
protected |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139)
This constructor is the one which must build the base class data for all derived classes. get_approx() instantiates a derived class letter and the derived constructor selects this base class constructor in its initialization list (to avoid recursion in the base class constructor calling get_approx() again). Since the letter IS the representation, its rep pointer is set to NULL.
|
protected |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139)
This constructor is the one which must build the base class data for all derived classes. get_approx() instantiates a derived class letter and the derived constructor selects this base class constructor in its initialization list (to avoid recursion in the base class constructor calling get_approx() again). Since the letter IS the representation, its rep pointer is set to NULL.
|
virtual |
builds the approximation from scratch
This is the common base class portion of the virtual fn and is insufficient on its own; derived implementations should explicitly invoke (or reimplement) this base class contribution.
Reimplemented in SurfpackApproximation, SurrogatesPolyApprox, SurrogatesGPApprox, VPSApproximation, TaylorApproximation, TANA3Approximation, QMEApproximation, PecosApproximation, GaussProcApproximation, and C3Approximation.
References Approximation::approxData, Approximation::approxRep, and Approximation::check_points().
Referenced by C3Approximation::build(), GaussProcApproximation::build(), PecosApproximation::build(), QMEApproximation::build(), TANA3Approximation::build(), TaylorApproximation::build(), VPSApproximation::build(), SurfpackApproximation::build(), and Approximation::rebuild().
|
inlinevirtual |
clear current build data in preparation for next build
Clear current but preserve hisory for active key (virtual function redefined by {TANA3,QMEA}Approximation to demote current while preserving previous points).
Reimplemented in TANA3Approximation, and QMEApproximation.
References Approximation::approxRep, and Approximation::clear_active_data().
Referenced by DiscrepancyCorrection::compute().
void add_array | ( | const RealMatrix & | sample_vars, |
bool | v_copy, | ||
const RealVector & | sample_resp, | ||
bool | r_copy, | ||
size_t | key_index = _NPOS |
||
) |
add surrogate data from the provided sample and response data, assuming continuous variables and function values only
Short cut function (not used by ApproximationInterface).
References Dakota::abort_handler(), Approximation::add(), Approximation::approxRep, Approximation::assign_key_index(), and Approximation::variables_to_sdv().
|
inline |
clear SurrogateData::{vars,resp}Data for activeKey + embedded keys
Clears out current + history for each tracked key (not virtual).
References Approximation::approxData, and Approximation::approxRep.
|
private |
Used only by the standard envelope constructor to initialize approxRep to the appropriate derived type.
Used only by the envelope constructor to initialize approxRep to the appropriate derived type.
References SharedApproxData::data_rep(), ProblemDescDB::get_bool(), and Dakota::strends().
|
private |
Used only by the alternate envelope constructor to initialize approxRep to the appropriate derived type.
Used only by the envelope constructor to initialize approxRep to the appropriate derived type.
References SharedApproxData::data_rep(), and Dakota::strends().