| Dakota Version 6.19 Explore and Predict with Confidence

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
SurfpackApproximation Class Reference

Derived approximation class for Surfpack approximation classes. Interface between Surfpack and Dakota. More...

Inheritance diagram for SurfpackApproximation:

## Public Member Functions
| SurfpackApproximation ()
| default constructor
| SurfpackApproximation (const ProblemDescDB &problem_db, const SharedApproxData &shared_data, const String &approx_label)
| standard constructor: Surfpack surface of appropriate type will be created More...
| SurfpackApproximation (const SharedApproxData &shared_data)
| alternate constructor More...
| ~SurfpackApproximation ()
| destructor
Public Member Functions inherited from Approximation
| 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 | 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 | 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 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 | 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
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
int | min_coefficients () const override
| return the minimum number of samples (unknowns) required to build the derived class approximation type in numVars dimensions
int | recommended_coefficients () const override
| return the recommended number of samples (unknowns) required to build the derived class approximation type in numVars dimensions
void | build () override
| SurfData object will be created from Dakota's SurrogateData, and the appropriate Surfpack build method will be invoked. More...
void | map_variable_labels (const Variables &vars)
| validate imported labels and initialize map if needed
void | export_model (const StringArray &var_labels, const String &fn_label, const String &export_prefix, const unsigned short export_format) override
| export the Surpack model to disk or console
void | export_model (const Variables &vars, const String &fn_label, const String &export_prefix, const unsigned short export_format) override
| 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
Real | value (const Variables &vars) override
| Return the value of the Surfpack surface for a given parameter vector x.
const RealVector & | gradient (const Variables &vars) override
| retrieve the approximate function gradient for a given parameter vector x
const RealSymMatrix & | hessian (const Variables &vars) override
| retrieve the approximate function Hessian for a given parameter vector x More...
Real | prediction_variance (const Variables &vars) override
| retrieve the variance of the predicted value for a given parameter set x (KrigingModel only)
Real | value (const RealVector &c_vars) override
| Return the value of the Surfpack surface for a given parameter vector x.
const RealVector & | gradient (const RealVector &c_vars) override
| retrieve the approximate function gradient for a given parameter vector x
const RealSymMatrix & | hessian (const RealVector &c_vars) override
| retrieve the approximate function Hessian for a given parameter vector x More...
Real | prediction_variance (const RealVector &c_vars) override
| retrieve the variance of the predicted value for a given parameter set x (KrigingModel only)
bool | diagnostics_available () override
| check if the diagnostics are available (true for the Surfpack types)
Real | diagnostic (const String &metric_type) override
| retrieve a single diagnostic metric for the diagnostic type specified on the primary model and data
Real | diagnostic (const String &metric_type, const SurfpackModel &model, const SurfData &data)
| retrieve a single diagnostic metric for the diagnostic type specified on the given model and data - not inherited
void | primary_diagnostics (size_t fn_index) override
| compute and print all requested diagnostics and cross-validation
void | challenge_diagnostics (size_t fn_index, const RealMatrix &challenge_points, const RealVector &challenge_responses) override
| compute and print all requested diagnostics for user provided challenge pts
RealArray | cv_diagnostic (const StringArray &metric_types, unsigned num_folds) override
| compute and return cross-validation for metric_type with num_folds
RealArray | challenge_diagnostic (const StringArray &metric_types, const RealMatrix &challenge_points, const RealVector &challenge_responses) override
| compute and print all requested diagnostics for user provided challenge pts
Protected Member Functions inherited from Approximation
| 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

## Private Member Functions
void | import_model (const ProblemDescDB &problem_db)
| construct-time only import of serialized surrogate
void | surrogates_to_surf_data ()
| copy from SurrogateData to SurfPoint/SurfData in surfData More...
void | add_constraints_to_surfdata (const Pecos::SurrogateDataVars &anchor_vars, const Pecos::SurrogateDataResp &anchor_resp, short fail_code)
| set the anchor point (including gradient and hessian if present) into surf_data More...
RealArray | map_eval_vars (const Variables &vars)
| extract active or all view as vector, mapping if needed for import

## Private Attributes
std::shared_ptr< SurfpackModel > | spModel
| The native Surfpack approximation.
std::shared_ptr< SurfpackModelFactory > | spFactory
| factory for the SurfpackModel instance
std::shared_ptr< SurfData > | surfData
| The data used to build the approximation, in Surfpack format.
bool | modelIsImported
| whether model serialized in from disk

## Additional Inherited Members
Protected Attributes inherited from Approximation
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

## Detailed Description

Derived approximation class for Surfpack approximation classes. Interface between Surfpack and Dakota.

The SurfpackApproximation class is the interface between Dakota and Surfpack. Based on the information in the ProblemDescDB that is passed in through the constructor, SurfpackApproximation builds a Surfpack Surface object that corresponds to one of the following data-fitting techniques: polynomial regression, kriging, artificial neural networks, radial basis function network, or multivariate adaptaive regression splines (MARS).

## Constructor & Destructor Documentation

## ◆ SurfpackApproximation() [1/2]

SurfpackApproximation | ( | const ProblemDescDB & | problem_db,
|  | const SharedApproxData & | shared_data,
|  | const String & | approx_label
| ) |  |

standard constructor: Surfpack surface of appropriate type will be created

Initialize the embedded Surfpack surface object and configure it using the specifications from the input file. Data for the surface is created later.

References Dakota::abort_handler(), Dakota::copy_data(), ProblemDescDB::get_bool(), ProblemDescDB::get_real(), ProblemDescDB::get_rv(), ProblemDescDB::get_short(), ProblemDescDB::get_string(), SurfpackApproximation::import_model(), Approximation::sharedDataRep, and SurfpackApproximation::spFactory.

## ◆ SurfpackApproximation() [2/2]

SurfpackApproximation | ( | const SharedApproxData & | shared_data | ) |

alternate constructor

On-the-fly constructor which uses mostly Surfpack model defaults.

References Dakota::abort_handler(), Approximation::sharedDataRep, and SurfpackApproximation::spFactory.

## Member Function Documentation

## ◆ build()

void build | ( |  | ) |
| override protected virtual

SurfData object will be created from Dakota's SurrogateData, and the appropriate Surfpack build method will be invoked.

Todo:
  Right now, we're completely deleting the old data and then recopying the current data into a SurfData object. This was just the easiest way to arrive at a solution that would build and run. This function is frequently called from addPoint rebuild, however, and it's not good to go through this whole process every time one more data point is added.

Reimplemented from Approximation.

References Dakota::abort_handler(), Approximation::build(), SurfpackApproximation::modelIsImported, Approximation::sharedDataRep, SurfpackApproximation::spFactory, SurfpackApproximation::spModel, SurfpackApproximation::surfData, and SurfpackApproximation::surrogates_to_surf_data().

## ◆ hessian() [1/2]

const RealSymMatrix & hessian | ( | const Variables & | vars | ) |
| override protected virtual

retrieve the approximate function Hessian for a given parameter vector x

Todo:
  Make this acceptably efficient

Reimplemented from Approximation.

References Dakota::abort_handler(), Approximation::approxHessian, Variables::cv(), SurfpackApproximation::map_eval_vars(), Approximation::sharedDataRep, and SurfpackApproximation::spModel.

Referenced by SurfpackApproximation::add_constraints_to_surfdata().

## ◆ hessian() [2/2]

const RealSymMatrix & hessian | ( | const RealVector & | c_vars | ) |
| override protected virtual

retrieve the approximate function Hessian for a given parameter vector x

Todo:
  Make this acceptably efficient

Reimplemented from Approximation.

References Dakota::abort_handler(), Approximation::approxHessian, Approximation::sharedDataRep, and SurfpackApproximation::spModel.

## ◆ surrogates_to_surf_data()

void surrogates_to_surf_data | ( |  | ) |
| private

copy from SurrogateData to SurfPoint/SurfData in surfData

Copy the data stored in Dakota-style SurrogateData into Surfpack-style SurfPoint and SurfData objects. Updates surfData

References SurfpackApproximation::add_constraints_to_surfdata(), Approximation::approxData, Approximation::sharedDataRep, SurfpackApproximation::spFactory, and SurfpackApproximation::surfData.

Referenced by SurfpackApproximation::build().

## ◆ add_constraints_to_surfdata()

void add_constraints_to_surfdata | ( | const Pecos::SurrogateDataVars & | anchor_vars,
|  | const Pecos::SurrogateDataResp & | anchor_resp,
|  | short | fail_code
| ) |  |
| private

set the anchor point (including gradient and hessian if present) into surf_data

If there is an anchor point, add an equality constraint for its response value. Also add constraints for gradient and hessian, if applicable.

References Dakota::abort_handler(), Dakota::copy_data(), SurfpackApproximation::gradient(), SurfpackApproximation::hessian(), Approximation::sharedDataRep, and SurfpackApproximation::surfData.

Referenced by SurfpackApproximation::surrogates_to_surf_data().

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

- SurfpackApproximation.hpp
- SurfpackApproximation.cpp