Dakota  Version
Explore and Predict with Confidence
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
Approximation Class Reference

Base class for the approximation class hierarchy. More...

Inheritance diagram for Approximation:
C3Approximation GaussProcApproximation PecosApproximation QMEApproximation SurfpackApproximation SurrogatesBaseApprox TANA3Approximation TaylorApproximation VPSApproximation

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< Approximationapprox_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< SharedApproxDatasharedDataRep
 contains the approximation data that is shared among the response set
 

Private Member Functions

std::shared_ptr< Approximationget_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< Approximationget_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< ApproximationapproxRep
 pointer to the letter (initialized only for the envelope)
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Approximation() [1/6]

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() [2/6]

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() [3/6]

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() [4/6]

Approximation ( const Approximation approx)

copy constructor

Copy constructor manages sharing of approxRep.

◆ Approximation() [5/6]

Approximation ( BaseConstructor  ,
const ProblemDescDB problem_db,
const SharedApproxData shared_data,
const String &  approx_label 
)
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.

◆ Approximation() [6/6]

Approximation ( NoDBBaseConstructor  ,
const SharedApproxData shared_data 
)
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.

Member Function Documentation

◆ build()

void build ( )
virtual

◆ clear_current_active_data()

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

◆ add_array()

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

◆ clear_data()

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

◆ get_approx() [1/2]

std::shared_ptr< Approximation > get_approx ( ProblemDescDB problem_db,
const SharedApproxData shared_data,
const String &  approx_label 
)
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().

◆ get_approx() [2/2]

std::shared_ptr< Approximation > get_approx ( const SharedApproxData shared_data)
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().


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