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

Derived class within the interface class hierarchy for supporting approximations to simulation-based results. More...

Inheritance diagram for ApproximationInterface:
Interface

Public Member Functions

 ApproximationInterface (ProblemDescDB &problem_db, const Variables &am_vars, bool am_cache, const String &am_interface_id, const StringArray &fn_labels)
 primary constructor
 
 ApproximationInterface (const String &approx_type, const UShortArray &approx_order, const Variables &am_vars, bool am_cache, const String &am_interface_id, size_t num_fns, short data_order, short output_level)
 alternate constructor for instantiations on the fly
 
 ~ApproximationInterface ()
 destructor
 
- Public Member Functions inherited from Interface
 Interface ()
 default constructor More...
 
 Interface (ProblemDescDB &problem_db)
 standard constructor for envelope More...
 
 Interface (const Interface &interface_in)
 copy constructor More...
 
virtual ~Interface ()
 destructor
 
Interface operator= (const Interface &interface_in)
 assignment operator
 
virtual void serve_evaluations ()
 evaluation server function for multiprocessor executions
 
virtual void stop_evaluation_servers ()
 send messages from iterator rank 0 to terminate evaluation servers
 
virtual void init_communicators (const IntArray &message_lengths, int max_eval_concurrency)
 allocate communicator partitions for concurrent evaluations within an iterator and concurrent multiprocessor analyses within an evaluation.
 
virtual void set_communicators (const IntArray &message_lengths, int max_eval_concurrency)
 set the local parallel partition data for an interface (the partitions are already allocated in ParallelLibrary).
 
virtual void init_serial ()
 reset certain defaults for serial interface objects.
 
virtual int asynch_local_evaluation_concurrency () const
 return the user-specified concurrency for asynch local evaluations
 
virtual short interface_synchronization () const
 return the user-specified interface synchronization
 
virtual RealArray challenge_diagnostics (const String &metric_type, const RealMatrix &challenge_pts)
 approximation challenge data metrics per response function
 
virtual const StringArray & analysis_drivers () const
 retrieve the analysis drivers specification for application interfaces
 
virtual const String2DArray & analysis_components () const
 retrieve the analysis components, if available
 
virtual bool evaluation_cache () const
 return flag indicating usage of the global evaluation cache
 
virtual bool restart_file () const
 return flag indicating usage of the restart file
 
virtual void file_cleanup () const
 clean up any interface parameter/response files when aborting
 
IntResponseMap & response_map ()
 return rawResponseMap
 
void cache_unmatched_response (int raw_id)
 migrate an unmatched response record from rawResponseMap to cachedResponseMap
 
void cache_unmatched_responses ()
 migrate all remaining response records from rawResponseMap to cachedResponseMap
 
void assign_rep (std::shared_ptr< Interface > interface_rep)
 assign letter or replace existing letter with a new one More...
 
void assign_rep (Interface *interface_rep, bool ref_count_incr=false)
 assign letter or replace existing letter with a new one DEPRECATED, but left for library mode clients to migrate: transfers memory ownership to the contained shared_ptr; ref_count_incr is ignored More...
 
unsigned short interface_type () const
 returns the interface type
 
const String & interface_id () const
 returns the interface identifier
 
int evaluation_id () const
 returns the value of the (total) evaluation id counter for the interface
 
void fine_grained_evaluation_counters (size_t num_fns)
 set fineGrainEvalCounters to true and initialize counters if needed
 
void init_evaluation_counters (size_t num_fns)
 initialize fine grained evaluation counters, sizing if needed
 
void set_evaluation_reference ()
 set evaluation count reference points for the interface
 
void print_evaluation_summary (std::ostream &s, bool minimal_header, bool relative_count) const
 print an evaluation summary for the interface
 
bool multi_proc_eval () const
 returns a flag signaling the use of multiprocessor evaluation partitions
 
bool iterator_eval_dedicated_master () const
 returns a flag signaling the use of a dedicated master processor at the iterator-evaluation scheduling level
 
bool is_null () const
 function to check interfaceRep (does this envelope contain a letter?)
 
std::shared_ptr< Interfaceinterface_rep ()
 function to return the letter
 
void eval_tag_prefix (const String &eval_id_str, bool append_iface_id=true)
 set the evaluation tag prefix (does not recurse) More...
 

Protected Member Functions

void map (const Variables &vars, const ActiveSet &set, Response &response, bool asynch_flag=false)
 the function evaluator: provides an approximate "mapping" from the variables to the responses using functionSurfaces
 
int minimum_points (bool constraint_flag) const
 returns the minimum number of samples required to build the functionSurfaces
 
int recommended_points (bool constraint_flag) const
 returns the recommended number of samples recommended to build the functionSurfaces
 
void active_model_key (const Pecos::ActiveKey &key)
 activate an approximation state based on its key
 
void clear_model_keys ()
 reset initial state by removing all model keys for an approximation
 
void approximation_function_indices (const SizetSet &approx_fn_indices)
 set the (currently active) approximation function index set
 
void update_approximation (const Variables &vars, const IntResponsePair &response_pr)
 
void update_approximation (const RealMatrix &samples, const IntResponseMap &resp_map)
 
void update_approximation (const VariablesArray &vars_array, const IntResponseMap &resp_map)
 
void append_approximation (const Variables &vars, const IntResponsePair &response_pr)
 
void append_approximation (const RealMatrix &samples, const IntResponseMap &resp_map)
 
void append_approximation (const VariablesArray &vars_array, const IntResponseMap &resp_map)
 
void append_approximation (const IntVariablesMap &vars_map, const IntResponseMap &resp_map)
 
void replace_approximation (const IntResponsePair &response_pr)
 replace the response for a single point within an existing approximation
 
void replace_approximation (const IntResponseMap &resp_map)
 replace responses for multiple points within an existing approximation
 
void track_evaluation_ids (bool track)
 assigns trackEvalIds to activate tracking of evaluation ids within surrogate data, enabling id-based lookups for data replacement
 
void build_approximation (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)
 
void export_approximation ()
 
void rebuild_approximation (const BitArray &rebuild_fns)
 
void pop_approximation (bool save_data)
 
void push_approximation ()
 
bool push_available ()
 queries the approximation for the ability to retrieve a previous increment
 
void finalize_approximation ()
 finalizes the approximation by applying all trial increments
 
void combine_approximation ()
 combine the current approximation with previously stored data sets
 
void combined_to_active (bool clear_combined=true)
 promote the combined approximation to the currently active one
 
void clear_inactive ()
 clear inactive approximation data
 
void clear_current_active_data ()
 clears current data from an approximation interface
 
void clear_active_data ()
 clears all data from an approximation interface
 
SharedApproxDatashared_approximation ()
 retrieve the SharedApproxData within an ApproximationInterface
 
std::vector< Approximation > & approximations ()
 retrieve the Approximations within an ApproximationInterface
 
const Pecos::SurrogateData & approximation_data (size_t fn_index)
 retrieve the approximation data from a particular Approximation within an ApproximationInterface
 
const RealVectorArray & approximation_coefficients (bool normalized=false)
 retrieve the approximation coefficients from each Approximation within an ApproximationInterface
 
void approximation_coefficients (const RealVectorArray &approx_coeffs, bool normalized=false)
 set the approximation coefficients within each Approximation within an ApproximationInterface
 
const RealVector & approximation_variances (const Variables &vars)
 retrieve the approximation variances from each Approximation within an ApproximationInterface
 
void discrepancy_emulation_mode (short mode)
 set discrepancy emulation mode used for approximating response differences
 
bool formulation_updated () const
 query for change in approximation formulation
 
void formulation_updated (bool update)
 assign an updated status for approximation formulation to force rebuild
 
bool advancement_available ()
 query for available advancements in approximation resolution controls
 
Real2DArray cv_diagnostics (const StringArray &metrics, unsigned num_folds)
 approximation cross-validation quality metrics per response function
 
Real2DArray challenge_diagnostics (const StringArray &metric_types, const RealMatrix &challenge_pts, const RealVector &challenge_resps)
 
const IntResponseMap & synchronize ()
 recovers data from a series of asynchronous evaluations (blocking)
 
const IntResponseMap & synchronize_nowait ()
 recovers data from a series of asynchronous evaluations (nonblocking)
 
- Protected Member Functions inherited from Interface
 Interface (BaseConstructor, const ProblemDescDB &problem_db)
 constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More...
 
 Interface (NoDBBaseConstructor, size_t num_fns, short output_level)
 constructor initializes the base class part of letter classes (NoDBBaseConstructor used for on the fly instantiations without a DB)
 
void init_algebraic_mappings (const Variables &vars, const Response &response)
 Define algebraicACVIndices, algebraicACVIds, and algebraicFnIndices.
 
void asv_mapping (const ActiveSet &total_set, ActiveSet &algebraic_set, ActiveSet &core_set)
 define the evaluation requirements for algebraic_mappings() (algebraic_set) and the core Application/Approximation mapping (core_set) from the total Interface evaluation requirements (total_set)
 
void asv_mapping (const ActiveSet &algebraic_set, ActiveSet &total_set)
 map an algebraic ASV back to original total ordering for asynch recovery
 
void algebraic_mappings (const Variables &vars, const ActiveSet &algebraic_set, Response &algebraic_response)
 evaluate the algebraic_response using the AMPL solver library and the data extracted from the algebraic_mappings file
 
void response_mapping (const Response &algebraic_response, const Response &core_response, Response &total_response)
 combine the response from algebraic_mappings() with the response from derived_map() to create the total response More...
 
virtual String final_eval_id_tag (int fn_eval_id)
 form and return the final evaluation ID tag, appending iface ID if needed
 

Private Member Functions

void mixed_add (const Variables &vars, const IntResponsePair &response_pr, bool anchor)
 add variables/response data to functionSurfaces using a mixture of shallow and deep copies
 
void mixed_add (const Real *c_vars, const IntResponsePair &response_pr, bool anchor)
 add variables/response data to functionSurfaces using a mixture of shallow and deep copies
 
void shallow_add (const Variables &vars, const IntResponsePair &response_pr, bool anchor)
 add variables/response data to functionSurfaces using a shallow copy
 
void sample_to_variables (const Real *sample_c_vars, size_t num_cv, Variables &vars)
 populate continuous variables within vars from sample_c_vars
 
void update_pop_counts (const IntResponsePair &response_pr)
 append to the stack of pop counts within each of the functionSurfaces based on the active set definition within a single incoming response
 
void update_pop_counts (const IntResponseMap &resp_map)
 append to the stack of pop counts within each of the functionSurfaces based on the active set definitions within a map of incoming responses
 
PRPCacheCIter cache_lookup (const Variables &vars, int eval_id, const Response &response)
 helper to find a cached PRP record in data_pairs
 
PRPCacheCIter cache_lookup (const Real *vars, size_t num_v, int eval_id, const Response &response)
 helper to find a cached PRP record in data_pairs
 
void check_id (int id1, int id2)
 verify consistency between two evaluation identifiers
 
void restore_data_key ()
 following Approximation::add() and Approximation::pop_count() operations, which may enumerate multiple embedded keys, restore the active approxData to the nominal key More...
 
void check_singleton_key_index (size_t index)
 check on valid indices for singleton active keys
 
void qoi_set_to_key_index (size_t qoi_set, size_t &key_index)
 for aggregate active keys that input a single set of data, some mapping from QoI sets to key indices may be required
 
void read_challenge_points ()
 Load approximation test points from user challenge points file. More...
 

Private Attributes

SizetSet approxFnIndices
 for incomplete approximation sets, this array specifies the response function subset that is approximated
 
SharedApproxData sharedData
 data that is shared among all functionSurfaces
 
std::vector< ApproximationfunctionSurfaces
 list of approximations, one per response function More...
 
RealVectorArray functionSurfaceCoeffs
 array of approximation coefficient vectors, one per response function
 
RealVector functionSurfaceVariances
 vector of approximation variances, one value per response function
 
bool trackEvalIds
 flag to activate the tracking of evaluation ids within surrogate data
 
String challengeFile
 data file for user-supplied challenge data (per interface, since may contain multiple responses)
 
unsigned short challengeFormat
 tabular format of the challenge points file
 
bool challengeUseVarLabels
 whether to validate variable labels in header
 
bool challengeActiveOnly
 whether to import active only
 
RealMatrix challengePoints
 container for the challenge points data (variables only)
 
RealMatrix challengeResponses
 container for the challenge points data (responses only)
 
Variables actualModelVars
 copy of the actualModel variables object used to simplify conversion among differing variable views
 
bool actualModelCache
 indicates usage of an evaluation cache by the actualModel
 
String actualModelInterfaceId
 the interface id from the actualModel used for ordered PRPCache lookups
 
IntResponseMap beforeSynchResponseMap
 bookkeeping map to catalogue responses generated in map() for use in synchronize() and synchronize_nowait(). This supports pseudo-asynchronous operations (approximate responses are always computed synchronously, but asynchronous virtual functions are supported through bookkeeping).
 

Static Private Attributes

static size_t approxIdNum = 0
 counter for giving unique names to approximation interfaces
 

Additional Inherited Members

- Protected Attributes inherited from Interface
unsigned short interfaceType
 the interface type: enum for system, fork, direct, grid, or approximation
 
String interfaceId
 the interface specification identifier string from the DAKOTA input file
 
bool algebraicMappings
 flag for the presence of algebraic_mappings that define the subset of an Interface's parameter to response mapping that is explicit and algebraic.
 
bool coreMappings
 flag for the presence of non-algebraic mappings that define the core of an Interface's parameter to response mapping (using analysis_drivers for ApplicationInterface or functionSurfaces for ApproximationInterface).
 
short outputLevel
 output verbosity level: {SILENT,QUIET,NORMAL,VERBOSE,DEBUG}_OUTPUT
 
int currEvalId
 identifier for the current evaluation, which may differ from the evaluation counters in the case of evaluation scheduling; used on iterator master as well as server processors. Currently, this is set prior to all invocations of derived_map() for all processors.
 
bool fineGrainEvalCounters
 controls use of fn val/grad/hess counters for detailed evaluation report
 
int evalIdCntr
 total interface evaluation counter
 
int newEvalIdCntr
 new (non-duplicate) interface evaluation counter
 
int evalIdRefPt
 iteration reference point for evalIdCntr
 
int newEvalIdRefPt
 iteration reference point for newEvalIdCntr
 
IntArray fnValCounter
 number of value evaluations by resp fn
 
IntArray fnGradCounter
 number of gradient evaluations by resp fn
 
IntArray fnHessCounter
 number of Hessian evaluations by resp fn
 
IntArray newFnValCounter
 number of new value evaluations by resp fn
 
IntArray newFnGradCounter
 number of new gradient evaluations by resp fn
 
IntArray newFnHessCounter
 number of new Hessian evaluations by resp fn
 
IntArray fnValRefPt
 iteration reference point for fnValCounter
 
IntArray fnGradRefPt
 iteration reference point for fnGradCounter
 
IntArray fnHessRefPt
 iteration reference point for fnHessCounter
 
IntArray newFnValRefPt
 iteration reference point for newFnValCounter
 
IntArray newFnGradRefPt
 iteration reference point for newFnGradCounter
 
IntArray newFnHessRefPt
 iteration reference point for newFnHessCounter
 
IntResponseMap rawResponseMap
 Set of responses returned by either a blocking or nonblocking schedule. More...
 
IntResponseMap cachedResponseMap
 Set of available asynchronous responses completed within a blocking or nonblocking scheduler that cannot be processed in a higher level context and need to be stored for later.
 
StringArray fnLabels
 response function descriptors (used in print_evaluation_summary() and derived direct interface classes); initialized in map() functions due to potential updates after construction
 
bool multiProcEvalFlag
 flag for multiprocessor evaluation partitions (evalComm)
 
bool ieDedMasterFlag
 flag for dedicated master partitioning at the iterator level
 
String evalTagPrefix
 set of period-delimited evaluation ID tags to use in evaluation tagging
 
bool appendIfaceId
 whether to append the interface ID to the prefix during map (default true)
 
String2DArray analysisComponents
 Analysis components for interface types that support them.
 

Detailed Description

Derived class within the interface class hierarchy for supporting approximations to simulation-based results.

ApproximationInterface provides an interface class for building a set of global/local/multipoint approximations and performing approximate function evaluations using them. It contains a list of Approximation objects, one for each response function.

Member Function Documentation

◆ update_approximation() [1/3]

void update_approximation ( const Variables vars,
const IntResponsePair &  response_pr 
)
protectedvirtual

This function populates/replaces each Approximation::anchorPoint with the incoming variables/response data point.

Reimplemented from Interface.

References ApproximationInterface::actualModelCache, ApproximationInterface::cache_lookup(), Dakota::data_pairs, ApproximationInterface::mixed_add(), ApproximationInterface::restore_data_key(), and ApproximationInterface::shallow_add().

◆ update_approximation() [2/3]

void update_approximation ( const RealMatrix &  samples,
const IntResponseMap &  resp_map 
)
protectedvirtual

◆ update_approximation() [3/3]

void update_approximation ( const VariablesArray &  vars_array,
const IntResponseMap &  resp_map 
)
protectedvirtual

◆ append_approximation() [1/4]

void append_approximation ( const Variables vars,
const IntResponsePair &  response_pr 
)
protectedvirtual

◆ append_approximation() [2/4]

void append_approximation ( const RealMatrix &  samples,
const IntResponseMap &  resp_map 
)
protectedvirtual

◆ append_approximation() [3/4]

void append_approximation ( const VariablesArray &  vars_array,
const IntResponseMap &  resp_map 
)
protectedvirtual

◆ append_approximation() [4/4]

void append_approximation ( const IntVariablesMap &  vars_map,
const IntResponseMap &  resp_map 
)
protectedvirtual

◆ build_approximation()

void build_approximation ( 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 
)
protectedvirtual

◆ export_approximation()

void export_approximation ( )
protectedvirtual

This function calls export on each approximation

Reimplemented from Interface.

References ApproximationInterface::approxFnIndices, and ApproximationInterface::functionSurfaces.

◆ rebuild_approximation()

void rebuild_approximation ( const BitArray &  rebuild_fns)
protectedvirtual

This function updates the coefficients for each Approximation based on data increments provided by {update,append}_approximation().

Reimplemented from Interface.

References ApproximationInterface::approxFnIndices, ApproximationInterface::functionSurfaces, SharedApproxData::rebuild(), and ApproximationInterface::sharedData.

◆ pop_approximation()

void pop_approximation ( bool  save_data)
inlineprotectedvirtual

This function removes data provided by a previous append_approximation() call, possibly different numbers for each function, or as specified in pop_count, which is assumed to be the same for all functions.

Reimplemented from Interface.

References ApproximationInterface::approxFnIndices, ApproximationInterface::functionSurfaces, SharedApproxData::pop(), Approximation::pop_coefficients(), Approximation::pop_data(), and ApproximationInterface::sharedData.

◆ push_approximation()

void push_approximation ( )
inlineprotectedvirtual

This function updates the coefficients for each Approximation based on data increments provided by {update,append}_approximation().

Reimplemented from Interface.

References ApproximationInterface::approxFnIndices, ApproximationInterface::functionSurfaces, SharedApproxData::post_push(), SharedApproxData::pre_push(), Approximation::push_coefficients(), Approximation::push_data(), and ApproximationInterface::sharedData.

◆ restore_data_key()

void restore_data_key ( )
inlineprivate

◆ read_challenge_points()

void read_challenge_points ( )
private

Member Data Documentation

◆ functionSurfaces

std::vector<Approximation> functionSurfaces
private

list of approximations, one per response function

This formulation allows the use of mixed approximations (i.e., different approximations used for different response functions), although the input specification is not currently general enough to support it.

Referenced by ApproximationInterface::active_model_key(), ApproximationInterface::advancement_available(), ApproximationInterface::approximation_coefficients(), ApproximationInterface::approximation_data(), ApproximationInterface::approximation_variances(), ApproximationInterface::ApproximationInterface(), ApproximationInterface::approximations(), ApproximationInterface::build_approximation(), ApproximationInterface::clear_active_data(), ApproximationInterface::clear_current_active_data(), ApproximationInterface::clear_inactive(), ApproximationInterface::clear_model_keys(), ApproximationInterface::combine_approximation(), ApproximationInterface::combined_to_active(), ApproximationInterface::cv_diagnostics(), ApproximationInterface::export_approximation(), ApproximationInterface::finalize_approximation(), ApproximationInterface::map(), ApproximationInterface::minimum_points(), ApproximationInterface::mixed_add(), ApproximationInterface::pop_approximation(), ApproximationInterface::push_approximation(), ApproximationInterface::read_challenge_points(), ApproximationInterface::rebuild_approximation(), ApproximationInterface::recommended_points(), ApproximationInterface::replace_approximation(), ApproximationInterface::restore_data_key(), ApproximationInterface::shallow_add(), ApproximationInterface::update_approximation(), and ApproximationInterface::update_pop_counts().


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