Dakota  Version 6.15
Explore and Predict with Confidence
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
DataFitSurrModel Class Reference

Derived model class within the surrogate model branch for managing data fit surrogates (global and local) More...

Inheritance diagram for DataFitSurrModel:
SurrogateModel Model

Public Member Functions

 DataFitSurrModel (ProblemDescDB &problem_db)
 constructor
 
 DataFitSurrModel (Iterator &dace_iterator, Model &actual_model, const ActiveSet &set, const String &approx_type, const UShortArray &approx_order, short corr_type, short corr_order, short data_order, short output_level, const String &point_reuse, const String &import_build_points_file=String(), unsigned short import_build_format=TABULAR_ANNOTATED, bool import_build_active_only=false, const String &export_approx_points_file=String(), unsigned short export_approx_format=TABULAR_ANNOTATED)
 alternate constructor for instantiations on the fly
 
 ~DataFitSurrModel ()
 destructor
 
void total_points (int points)
 set pointsTotal and pointsManagement mode
 
int required_points ()
 return points required for build according to pointsManagement mode
 
void declare_sources ()
 Declare a model's sources to the evaluationsDB.
 

Protected Member Functions

size_t qoi () const
 return number of unique response functions (managing any aggregations)
 
DiscrepancyCorrectiondiscrepancy_correction ()
 return the DiscrepancyCorrection object used by SurrogateModels
 
short correction_type ()
 return the correction type from the DiscrepancyCorrection object used by SurrogateModels
 
void correction_type (short corr_type)
 set the correction type from the DiscrepancyCorrection object used by SurrogateModels
 
bool initialize_mapping (ParLevLIter pl_iter)
 Perform any global updates prior to individual evaluate() calls; returns true if the variables size has changed.
 
bool finalize_mapping ()
 
void init_model (Model &model)
 initialize model with data that could change once per set of evaluations (e.g., an outer iterator execution), including active variable labels, inactive variable values/bounds/labels, and linear/nonlinear constraint coeffs/bounds
 
void update_model (Model &model)
 update model with data that could change per function evaluation (active variable values/bounds)
 
void update_from_model (const Model &model)
 update current variables/labels/bounds/targets with data from model More...
 
void nested_variable_mappings (const SizetArray &c_index1, const SizetArray &di_index1, const SizetArray &ds_index1, const SizetArray &dr_index1, const ShortArray &c_target2, const ShortArray &di_target2, const ShortArray &ds_target2, const ShortArray &dr_target2)
 set primaryA{C,DI,DS,DR}VarMapIndices, secondaryA{C,DI,DS,DR}VarMapTargets (coming from a higher-level NestedModel context to inform derivative est.)
 
const SizetArray & nested_acv1_indices () const
 return primaryACVarMapIndices
 
const ShortArray & nested_acv2_targets () const
 return secondaryACVarMapTargets
 
short query_distribution_parameter_derivatives () const
 calculate and return derivative composition of final results w.r.t. distribution parameters (none, all, or mixed)
 
void check_submodel_compatibility (const Model &sub_model)
 verify compatibility between SurrogateModel attributes and attributes of the submodel (DataFitSurrModel::actualModel or HierarchSurrModel::highFidelityModel)
 
void derived_evaluate (const ActiveSet &set)
 
void derived_evaluate_nowait (const ActiveSet &set)
 
const IntResponseMap & derived_synchronize ()
 
const IntResponseMap & derived_synchronize_nowait ()
 
void asv_inflate_build (const ShortArray &orig_asv, ShortArray &actual_asv)
 map incoming ASV into actual request for surrogate construction, managing any mismatch in sizes due to response aggregation modes in actualModel
 
void asv_split_eval (const ShortArray &orig_asv, ShortArray &actual_asv, ShortArray &approx_asv)
 split incoming ASV into actual and approximate evaluation requests, managing any mismatch in sizes due to response aggregation modes in actualModel
 
Iteratorsubordinate_iterator ()
 return daceIterator
 
void active_model_key (const Pecos::ActiveKey &key)
 set active model key within approxInterface
 
void clear_model_keys ()
 remove all model keys within approxInterface
 
Modelsurrogate_model (size_t i=_NPOS)
 return this model instance
 
const Modelsurrogate_model (size_t i=_NPOS) const
 return this model instance
 
Modeltruth_model ()
 return actualModel
 
const Modeltruth_model () const
 return actualModel
 
void derived_subordinate_models (ModelList &ml, bool recurse_flag)
 return actualModel (and optionally its sub-models)
 
void resize_from_subordinate_model (size_t depth=SZ_MAX)
 pass request to actualModel if recursing
 
void update_from_subordinate_model (size_t depth=SZ_MAX)
 pass request to actualModel if recursing and then update from it
 
Interfacederived_interface ()
 return approxInterface
 
void primary_response_fn_weights (const RealVector &wts, bool recurse_flag=true)
 set the relative weightings for multiple objective functions or least squares terms and optionally recurses into actualModel
 
void surrogate_response_mode (short mode)
 set responseMode and pass any bypass request on to actualModel for any lower-level surrogates.
 
void surrogate_function_indices (const SizetSet &surr_fn_indices)
 (re)set the surrogate index set in SurrogateModel::surrogateFnIndices and ApproximationInterface::approxFnIndices
 
void build_approximation ()
 Builds the local/multipoint/global approximation using daceIterator/actualModel to generate new data points. More...
 
bool build_approximation (const Variables &vars, const IntResponsePair &response_pr)
 Builds the local/multipoint/global approximation using daceIterator/actualModel to generate new data points that augment the passed vars/response anchor point. More...
 
void rebuild_approximation ()
 Rebuilds the local/multipoint/global approximation using daceIterator/actualModel to generate an increment of appended data. More...
 
void rebuild_approximation (const IntResponsePair &response_pr)
 Rebuilds the local/multipoint/global approximation using the passed response data for a single sample.
 
void rebuild_approximation (const IntResponseMap &resp_map)
 Rebuilds the local/multipoint/global approximation using the passed response data for a set of samples.
 
void update_approximation (bool rebuild_flag)
 replaces the approximation data with daceIterator results and rebuilds the approximation if requested More...
 
void update_approximation (const Variables &vars, const IntResponsePair &response_pr, bool rebuild_flag)
 replaces the anchor point, and rebuilds the approximation if requested More...
 
void update_approximation (const VariablesArray &vars_array, const IntResponseMap &resp_map, bool rebuild_flag)
 replaces the current points array and rebuilds the approximation if requested More...
 
void update_approximation (const RealMatrix &samples, const IntResponseMap &resp_map, bool rebuild_flag)
 replaces the current points array and rebuilds the approximation if requested More...
 
void append_approximation (bool rebuild_flag)
 appends daceIterator results to a global approximation and rebuilds it if requested More...
 
void append_approximation (const Variables &vars, const IntResponsePair &response_pr, bool rebuild_flag)
 appends a point to a global approximation and rebuilds it if requested More...
 
void append_approximation (const RealMatrix &samples, const IntResponseMap &resp_map, bool rebuild_flag)
 appends a matrix of points to a global approximation and rebuilds it if requested More...
 
void append_approximation (const VariablesArray &vars_array, const IntResponseMap &resp_map, bool rebuild_flag)
 appends an array of points to a global approximation and rebuilds it if requested More...
 
void append_approximation (const IntVariablesMap &vars_map, const IntResponseMap &resp_map, bool rebuild_flag)
 appends an map of points to a global approximation and rebuilds it if requested More...
 
void replace_approximation (const IntResponsePair &response_pr, bool rebuild_flag)
 replace the response for a single point (based on eval id from response_pr) within an existing surrogate's data
 
void replace_approximation (const IntResponseMap &resp_map, bool rebuild_flag)
 replace the responses for a set of points (based on eval ids from resp_map) within an existing surrogate's data
 
void track_evaluation_ids (bool track)
 assigns a flag to track evaluation ids within surrogate data, enabling id-based lookups for data replacement
 
void pop_approximation (bool save_surr_data, bool rebuild_flag=false)
 remove the previous data set addition to a surrogate (e.g., due to a previous append_approximation() call); flag manages storing of surrogate data for use in a subsequent push_approximation()
 
void push_approximation ()
 push a previous approximation data state; reverse of pop_approximation
 
bool push_available ()
 query for whether a trial increment is restorable within a surrogate
 
void finalize_approximation ()
 finalize an approximation by applying all previous trial increments
 
void combine_approximation ()
 combine all level approximations into a separate composite approximation
 
void combined_to_active (bool clear_combined=true)
 promote the combined approximation into the active one
 
void clear_inactive ()
 clear inactive data stored in the approxInterface
 
bool advancement_available ()
 query approxInterface for available advancements in order, rank, etc.
 
bool formulation_updated () const
 query approxInterface for updates in formulation (requiring a rebuild)
 
void formulation_updated (bool update)
 update the formulation status in approxInterface
 
void run_dace ()
 execute the DACE iterator to generate build data
 
SharedApproxDatashared_approximation ()
 retrieve the SharedApproxData from approxInterface
 
std::vector< Approximation > & approximations ()
 retrieve the set of Approximations from approxInterface
 
const RealVectorArray & approximation_coefficients (bool normalized=false)
 return the approximation coefficients from each Approximation (request forwarded to approxInterface)
 
void approximation_coefficients (const RealVectorArray &approx_coeffs, bool normalized=false)
 set the approximation coefficients within each Approximation (request forwarded to approxInterface)
 
const RealVector & approximation_variances (const Variables &vars)
 return the approximation variance from each Approximation (request forwarded to approxInterface)
 
const Pecos::SurrogateData & approximation_data (size_t fn_index)
 return the approximation data from a particular Approximation (request forwarded to approxInterface)
 
void component_parallel_mode (short mode)
 update component parallel mode for supporting parallelism in actualModel
 
IntIntPair estimate_partition_bounds (int max_eval_concurrency)
 estimate the minimum and maximum partition sizes that can be utilized by this Model
 
void derived_init_communicators (ParLevLIter pl_iter, int max_eval_concurrency, bool recurse_flag=true)
 set up actualModel for parallel operations More...
 
void derived_init_serial ()
 set up actualModel for serial operations.
 
void derived_set_communicators (ParLevLIter pl_iter, int max_eval_concurrency, bool recurse_flag=true)
 set active parallel configuration within actualModel
 
void derived_free_communicators (ParLevLIter pl_iter, int max_eval_concurrency, bool recurse_flag=true)
 deallocate communicator partitions for the DataFitSurrModel (request forwarded to actualModel)
 
void serve_run (ParLevLIter pl_iter, int max_eval_concurrency)
 Service actualModel job requests received from the master. Completes when a termination message is received from stop_servers().
 
void stop_servers ()
 Executed by the master to terminate actualModel server operations when DataFitSurrModel iteration is complete.
 
void inactive_view (short view, bool recurse_flag=true)
 update the Model's inactive view based on higher level (nested) context and optionally recurse into actualModel
 
const String & interface_id () const
 return the approxInterface identifier
 
bool evaluation_cache (bool recurse_flag=true) const
 if recurse_flag, return the actualModel evaluation cache usage
 
bool restart_file (bool recurse_flag=true) const
 if recurse_flag, return the actualModel restart file usage
 
void set_evaluation_reference ()
 set the evaluation counter reference points for the DataFitSurrModel (request forwarded to approxInterface and actualModel)
 
void fine_grained_evaluation_counters ()
 request fine-grained evaluation reporting within approxInterface and actualModel
 
void print_evaluation_summary (std::ostream &s, bool minimal_header=false, bool relative_count=true) const
 print the evaluation summary for the DataFitSurrModel (request forwarded to approxInterface and actualModel)
 
void warm_start_flag (const bool flag)
 set the warm start flag, including actualModel
 
ActiveSet default_interface_active_set ()
 
- Protected Member Functions inherited from SurrogateModel
 SurrogateModel (ProblemDescDB &problem_db)
 constructor
 
 SurrogateModel (ProblemDescDB &problem_db, ParallelLibrary &parallel_lib, const SharedVariablesData &svd, bool share_svd, const SharedResponseData &srd, bool share_srd, const ActiveSet &set, short corr_type, short output_level)
 alternate constructor
 
 ~SurrogateModel ()
 destructor
 
Pecos::ProbabilityTransformation & probability_transformation ()
 return probability transformation employed by the Model (forwarded along to ProbabilityTransformModel recasting)
 
void activate_distribution_parameter_derivatives ()
 activate derivative setting w.r.t. distribution parameters
 
void deactivate_distribution_parameter_derivatives ()
 deactivate derivative setting w.r.t. distribution parameters
 
void trans_grad_X_to_U (const RealVector &fn_grad_x, RealVector &fn_grad_u, const RealVector &x_vars)
 transform x-space gradient vector to u-space
 
void trans_grad_U_to_X (const RealVector &fn_grad_u, RealVector &fn_grad_x, const RealVector &x_vars)
 transform u-space gradient vector to x-space
 
void trans_grad_X_to_S (const RealVector &fn_grad_x, RealVector &fn_grad_s, const RealVector &x_vars)
 transform x-space gradient vector to gradient with respect to inserted distribution parameters
 
void trans_hess_X_to_U (const RealSymMatrix &fn_hess_x, RealSymMatrix &fn_hess_u, const RealVector &x_vars, const RealVector &fn_grad_x)
 transform x-space Hessian matrix to u-space
 
Modelsubordinate_model ()
 return truth_model()
 
void active_model_key (const Pecos::ActiveKey &key)
 set the active model key within surrogate data, grid driver, and approximation classes that support the management of multiple approximation states within surrogate models
 
short surrogate_response_mode () const
 return responseMode
 
int derived_evaluation_id () const
 return the current evaluation id for this Model More...
 
size_t mi_parallel_level_index () const
 return miPLIndex
 
bool check_active_variables (const Model &sub_model)
 check sub_model for consistency in active variable counts
 
bool check_inactive_variables (const Model &sub_model)
 check sub_model for consistency in inactive variable counts
 
bool check_response_qoi (const Model &sub_model)
 check sub_model for consistency in response QoI counts
 
void asv_split (const ShortArray &orig_asv, ShortArray &actual_asv, ShortArray &approx_asv, bool build_flag)
 distributes the incoming orig_asv among actual_asv and approx_asv
 
void asv_split (const ShortArray &orig_asv, Short2DArray &indiv_asv)
 distributes the incoming orig_asv among actual_asv and approx_asv
 
void init_model_constraints (Model &model)
 initialize model with linear/nonlinear constraint data that could change once per set of evaluations (e.g., an outer iterator execution) More...
 
void init_model_labels (Model &model)
 initialize model with active/inactive variable label data that could change once per set of evaluations (e.g., an outer iterator execution)
 
void init_model_inactive_variables (Model &model)
 initialize model with inactive variable values/bounds data that could change once per set of evaluations (e.g., an outer iterator execution)
 
void update_model_active_variables (Model &model)
 update model with active variable values/bounds data
 
void update_model_distributions (Model &model)
 update model with random variable distribution data
 
void update_variables_from_model (const Model &model)
 update current variables/bounds with data from model
 
void update_distributions_from_model (const Model &model)
 update current random variable distributions with data from model
 
void update_response_from_model (const Model &model)
 update response/constraints with data from model
 
void check_key (int key1, int key2) const
 check for consistency in response map keys
 
bool force_rebuild ()
 evaluate whether a rebuild of the approximation should be forced based on changes in the inactive data More...
 
void asv_combine (const ShortArray &actual_asv, const ShortArray &approx_asv, ShortArray &combined_asv)
 reconstitutes a combined_asv from actual_asv and approx_asv
 
void response_combine (const Response &actual_response, const Response &approx_response, Response &combined_response)
 overlays actual_response and approx_response to update combined_response
 
void aggregate_response (const Response &hf_resp, const Response &lf_resp, Response &agg_resp)
 aggregate {HF,LF} response data to create a new response with 2x size
 
void insert_response (const Response &response, size_t position, Response &agg_response)
 insert a single response into an aggregated response in the specified position
 
- Protected Member Functions inherited from Model
 Model (BaseConstructor, ProblemDescDB &problem_db)
 constructor initializing the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More...
 
 Model (LightWtBaseConstructor, ProblemDescDB &problem_db, ParallelLibrary &parallel_lib, const SharedVariablesData &svd, bool share_svd, const SharedResponseData &srd, bool share_srd, const ActiveSet &set, short output_level)
 constructor initializing base class for derived model class instances constructed on the fly
 
 Model (LightWtBaseConstructor, ProblemDescDB &problem_db, ParallelLibrary &parallel_lib)
 constructor initializing base class for recast model instances More...
 
void initialize_distribution (Pecos::MultivariateDistribution &mv_dist, bool active_only=false)
 initialize distribution types from problemDescDB More...
 
void initialize_distribution_parameters (Pecos::MultivariateDistribution &mv_dist, bool active_only=false)
 initialize distribution parameters from problemDescDB
 
void set_ie_asynchronous_mode (int max_eval_concurrency)
 default logic for defining asynchEvalFlag and evaluationCapacity based on ie_pl settings
 
void assign_max_strings (const Pecos::MultivariateDistribution &mv_dist, Variables &vars)
 assign all of the longest possible string values into vars
 
SSCIter max_string (const StringSet &ss)
 return iterator for longest string value found in string set
 
SRMCIter max_string (const StringRealMap &srm)
 return iterator for longest string value found in string map
 
SizetMultiArrayConstView initialize_x0_bounds (const SizetArray &original_dvv, bool &active_derivs, bool &inactive_derivs, RealVector &x0, RealVector &fd_lb, RealVector &fd_ub) const
 Initialize data needed for computing finite differences (active/inactive, center point, and bounds)
 
Real forward_grad_step (size_t num_deriv_vars, size_t xj_index, Real x0_j, Real lb_j, Real ub_j)
 Compute the forward step for a finite difference gradient; updates shortStep.
 
EvaluationsDBState evaluations_db_state (const Interface &interface)
 Return the interface flag for the EvaluationsDB state.
 
EvaluationsDBState evaluations_db_state (const Model &model)
 Return the model flag for the EvaluationsDB state.
 
void asynch_eval_store (const Interface &interface, const int &id, const Response &response)
 Store the response portion of an interface evaluation. Called from rekey_response_map.
 
void asynch_eval_store (const Model &model, const int &id, const Response &response)
 Exists to support storage of interface evaluations. No-op so that rekey_response_map<Model> can be generated.
 
template<typename MetaType >
void rekey_response_map (MetaType &meta_object, const IntResponseMap &resp_map, IntIntMap &id_map, IntResponseMap &resp_map_rekey, bool deep_copy_resp=false)
 rekey returned jobs matched in id_map into resp_map_rekey; unmatched jobs are cached within the meta_object
 
template<typename MetaType >
void rekey_synch (MetaType &meta_object, bool block, IntIntMap &id_map, IntResponseMap &resp_map_rekey, bool deep_copy_resp=false)
 synchronize via meta_object and rekey returned jobs matched in id_map into resp_map_rekey; unmatched jobs are cached within the meta_object
 

Protected Attributes

const bool exportSurrogate
 whether to export the surrogate to file
 
const bool autoRefine
 whether to automatically refine the surrogate during the build phase
 
const size_t maxIterations
 Maximum number of times to refine the surrogate.
 
const size_t maxFuncEvals
 Maximum number of evaluations while refining a surrogate.
 
const Real convergenceTolerance
 Convergence criterion, compared to CV score for specified metric.
 
const int softConvergenceLimit
 Max number of iterations for which there is no average improvement.
 
const String refineCVMetric
 Type of error metric to test for surrogate refinement convegence.
 
const int refineCVFolds
 Number of cross validation folds for surrogate refinement.
 
- Protected Attributes inherited from SurrogateModel
SizetSet surrogateFnIndices
 for mixed response sets, this array specifies the response function subset that is approximated
 
short responseMode
 an enumeration that controls the response calculation mode in {DataFit,Hierarch}SurrModel approximate response computations More...
 
Pecos::ActiveKey activeKey
 array of indices that identify the currently active model key
 
short corrType
 type of correction: additive, multiplicative, or combined
 
int surrModelEvalCntr
 counter for calls to derived_evaluate()/derived_evaluate_nowait(); used to key response maps from SurrogateModels
 
IntResponseMap surrResponseMap
 map of surrogate responses returned by derived_synchronize() and derived_synchronize_nowait()
 
size_t approxBuilds
 number of calls to build_approximation() More...
 
size_t miPLIndex
 the index of the active metaiterator-iterator parallelism level (corresponding to ParallelConfiguration::miPLIters) used at runtime
 
RealVector referenceCLBnds
 stores a reference copy of active continuous lower bounds when the approximation is built; used to detect when a rebuild is required.
 
RealVector referenceCUBnds
 stores a reference copy of active continuous upper bounds when the approximation is built; used to detect when a rebuild is required.
 
IntVector referenceDILBnds
 stores a reference copy of active discrete int lower bounds when the approximation is built; used to detect when a rebuild is required.
 
IntVector referenceDIUBnds
 stores a reference copy of active discrete int upper bounds when the approximation is built; used to detect when a rebuild is required.
 
RealVector referenceDRLBnds
 stores a reference copy of active discrete real lower bounds when the approximation is built; used to detect when a rebuild is required.
 
RealVector referenceDRUBnds
 stores a reference copy of active discrete real upper bounds when the approximation is built; used to detect when a rebuild is required.
 
RealVector referenceICVars
 stores a reference copy of the inactive continuous variables when the approximation is built using a Distinct view; used to detect when a rebuild is required.
 
IntVector referenceIDIVars
 stores a reference copy of the inactive discrete int variables when the approximation is built using a Distinct view; used to detect when a rebuild is required.
 
StringMultiArray referenceIDSVars
 stores a reference copy of the inactive discrete string variables when the approximation is built using a Distinct view; used to detect when a rebuild is required.
 
RealVector referenceIDRVars
 stores a reference copy of the inactive discrete real variables when the approximation is built using a Distinct view; used to detect when a rebuild is required.
 
- Protected Attributes inherited from Model
EvaluationsDBState modelEvaluationsDBState
 Whether to write model evals to the evaluations DB.
 
EvaluationsDBState interfEvaluationsDBState
 Whether to write interface evals to the evaluations DB.
 
Variables currentVariables
 the set of current variables used by the model for performing function evaluations
 
size_t numDerivVars
 the number of active continuous variables used in computing most response derivatives (i.e., in places such as quasi-Hessians and response corrections where only the active continuous variables are supported)
 
Response currentResponse
 the set of current responses that holds the results of model function evaluations
 
size_t numFns
 the number of functions in currentResponse
 
Constraints userDefinedConstraints
 Explicit constraints on variables are maintained in the Constraints class hierarchy. Currently, this includes linear constraints and bounds, but could be extended in the future to include other explicit constraints which (1) have their form specified by the user, and (2) are not catalogued in Response since their form and coefficients are published to an iterator at startup.
 
String modelId
 model identifier string from the input file
 
String modelType
 type of model: simulation, nested, or surrogate
 
String surrogateType
 type of surrogate model: local_*, multipoint_*, global_*, or hierarchical
 
String gradientType
 type of gradient data: analytic, numerical, mixed, or none
 
String methodSource
 source of numerical gradient routine: dakota or vendor
 
String intervalType
 type of numerical gradient interval: central or forward
 
String hessianType
 type of Hessian data: analytic, numerical, quasi, mixed, or none
 
RealVector fdGradStepSize
 relative finite difference step size for numerical gradients More...
 
String fdGradStepType
 type of finite difference step to use for numerical gradient: relative - step length is relative to x absolute - step length is what is specified bounds - step length is relative to range of x
 
RealVector fdHessByGradStepSize
 relative finite difference step size for numerical Hessians estimated using first-order differences of gradients More...
 
RealVector fdHessByFnStepSize
 relative finite difference step size for numerical Hessians estimated using second-order differences of function values More...
 
String fdHessStepType
 type of finite difference step to use for numerical Hessian: relative - step length is relative to x absolute - step length is what is specified bounds - step length is relative to range of x
 
bool ignoreBounds
 option to ignore bounds when computing finite diffs
 
bool centralHess
 option to use old 2nd-order finite diffs for Hessians
 
bool warmStartFlag
 if in warm-start mode, don't reset accumulated data (e.g., quasiHessians)
 
bool supportsEstimDerivs
 whether model should perform or forward derivative estimation
 
String quasiHessType
 quasi-Hessian type: bfgs, damped_bfgs, sr1
 
IntSet gradIdAnalytic
 analytic id's for mixed gradients
 
IntSet gradIdNumerical
 numerical id's for mixed gradients
 
IntSet hessIdAnalytic
 analytic id's for mixed Hessians
 
IntSet hessIdNumerical
 numerical id's for mixed Hessians
 
IntSet hessIdQuasi
 quasi id's for mixed Hessians
 
IntArray messageLengths
 length of packed MPI buffers containing vars, vars/set, response, and PRPair
 
bool mappingInitialized
 track use of initialize_mapping() and finalize_mapping()
 
ProblemDescDBprobDescDB
 class member reference to the problem description database More...
 
ParallelLibraryparallelLib
 class member reference to the parallel library
 
ParConfigLIter modelPCIter
 the ParallelConfiguration node used by this Model instance
 
short componentParallelMode
 the component parallelism mode: NO_PARALLEL_MODE, SURROGATE_MODEL_MODE,
 
bool asynchEvalFlag
 flags asynch evaluations (local or distributed)
 
int evaluationCapacity
 capacity for concurrent evaluations supported by the Model
 
short outputLevel
 output verbosity level: {SILENT,QUIET,NORMAL,VERBOSE,DEBUG}_OUTPUT
 
Pecos::MultivariateDistribution mvDist
 the multivariate random variable distribution (in probability space corresponding to currentVariables)
 
BoolDeque primaryRespFnSense
 array of flags (one per primary function) for switching the sense to maximize the primary function (default is minimize)
 
RealVector primaryRespFnWts
 primary response function weightings (either weights for multiobjective optimization or weighted least squares)
 
bool hierarchicalTagging
 whether to perform hierarchical evalID tagging of params/results
 
ScalingOptions scalingOpts
 user-provided scaling data from the problem DB, possibly modified by Recasting
 
String evalTagPrefix
 cached evalTag Prefix from parents to use at evaluate time
 
EvaluationStore & evaluationsDB
 reference to the global evaluation database
 

Private Member Functions

void import_points (unsigned short tabular_format, bool use_var_labels, bool active_only)
 optionally read surrogate data points from provided file More...
 
void initialize_export ()
 initialize file stream for exporting surrogate evaluations More...
 
void finalize_export ()
 finalize file stream for exporting surrogate evaluations More...
 
void export_point (int eval_id, const Variables &vars, const Response &resp)
 initialize file stream for exporting surrogate evaluations More...
 
void derived_synchronize_approx (bool block, IntResponseMap &approx_resp_map_rekey)
 Common code for processing of approximate response maps shared by derived_synchronize() and derived_synchronize_nowait()
 
void update_local_reference ()
 Updates fit arrays for local or multipoint approximations.
 
void build_local_multipoint ()
 Builds a local or multipoint approximation using actualModel. More...
 
void build_local_multipoint (const Variables &vars, const IntResponsePair &response_pr)
 Builds a local or multipoint approximation using actualModel.
 
void update_global_reference ()
 Updates fit arrays for global approximations.
 
void build_global ()
 Builds a global approximation using daceIterator. More...
 
void rebuild_global ()
 Rebuilds a global approximation by generating new data using daceIterator and appending to approxInterface. More...
 
void refine_surrogate ()
 Refine the built surrogate until convergence criteria are met.
 
void clear_approx_interface ()
 clear current data from approxInterface
 
void update_approx_interface (const Variables &vars, const IntResponsePair &response_pr)
 update anchor data in approxInterface
 
void build_approx_interface ()
 build the approxInterface surrogate, passing variable bounds
 
bool consistent (const Variables &vars) const
 test if inactive state is consistent
 
bool inside (const Variables &vars) const
 test if active vars are within [l_bnds, u_bnds]
 
bool active_vars_compare (const Variables &vars, const Pecos::SurrogateDataVars &sdv) const
 test for exact equality in values between active vars and sdv
 

Private Attributes

DiscrepancyCorrection deltaCorr
 manages construction and application of correction functions that are applied to a surrogate model (DataFitSurr or HierarchSurr) in order to reproduce high fidelity data.
 
IntIntMap truthIdMap
 map from actualModel/highFidelityModel evaluation ids to DataFitSurrModel/HierarchSurrModel ids
 
IntIntMap surrIdMap
 map from approxInterface/lowFidelityModel evaluation ids to DataFitSurrModel/HierarchSurrModel ids
 
IntResponseMap cachedApproxRespMap
 map of approximate responses retrieved in derived_synchronize_nowait() that could not be returned since corresponding truth model response portions were still pending.
 
IntVariablesMap rawVarsMap
 map of raw continuous variables used by apply_correction(). Model::varsList cannot be used for this purpose since it does not contain lower level variables sets from finite differencing.
 
int pointsTotal
 total points the user specified to construct the surrogate
 
short pointsManagement
 configuration for points management in build_global()
 
String pointReuse
 type of point reuse for approximation builds: all, region (default if points file), or none (default if no points file)
 
String importPointsFile
 file name from import_build_points_file specification
 
String exportPointsFile
 file name from export_approx_points_file specification
 
unsigned short exportFormat
 file export format for variables and approximate responses
 
std::ofstream exportFileStream
 output file stream for export_approx_points_file specification
 
String exportVarianceFile
 file name from export_approx_variance_file specification
 
unsigned short exportVarianceFormat
 file export format for variables and approximate response variance
 
std::ofstream exportVarianceFileStream
 output file stream for export_approx_variance_file specification
 
Interface approxInterface
 manages the building and subsequent evaluation of the approximations (required for both global and local)
 
Model actualModel
 the truth model which provides evaluations for building the surrogate (optional for global, required for local) More...
 
Iterator daceIterator
 selects parameter sets on which to evaluate actualModel in order to generate the necessary data for building global approximations (optional for global since restart data may also be used)
 

Additional Inherited Members

- Static Public Member Functions inherited from Model
static void active_variables (const RealVector &config_vars, Model &model)
 set the specified configuration to the Model's inactive vars, converting from real to integer or through index to string value as needed More...
 
static void inactive_variables (const RealVector &config_vars, Model &model)
 set the specified configuration to the Model's inactive vars, converting from real to integer or through index to string value as needed More...
 
static void inactive_variables (const RealVector &config_vars, Model &model, Variables &updated_vars)
 
static void evaluate (const RealMatrix &samples_matrix, Model &model, RealMatrix &resp_matrix)
 Bulk synchronously evaluate the model for each column (of active variables) in the samples matrix and return as columns of the response matrix.
 
static void evaluate (const VariablesArray &sample_vars, Model &model, RealMatrix &resp_matrix)
 Bulk synchronously evaluate the model for each entry (of active variables) in the samples vector and return as columns of the response matrix.
 
- Static Protected Member Functions inherited from Model
static String user_auto_id ()
 return the next available model ID for no-ID user methods More...
 
static String no_spec_id ()
 return the next available model ID for on-the-fly methods More...
 

Detailed Description

Derived model class within the surrogate model branch for managing data fit surrogates (global and local)

The DataFitSurrModel class manages global or local approximations (surrogates that involve data fits) that are used in place of an expensive model. The class contains an approxInterface (required for both global and local) which manages the approximate function evaluations, an actualModel (optional for global, required for local) which provides truth evaluations for building the surrogate, and a daceIterator (optional for global, not used for local) which selects parameter sets on which to evaluate actualModel in order to generate the necessary data for building global approximations.

Member Function Documentation

bool finalize_mapping ( )
protectedvirtual

Inactive variables must be propagated when a HierarchSurrModel is employed by a sub-iterator (e.g., OUU with MLMC or MLPCE). In current use cases, this can occur once per sub-iterator execution within Model::initialize_mapping().

Reimplemented from Model.

References DataFitSurrModel::actualModel, Model::finalize_mapping(), and Model::is_null().

void update_from_model ( const Model model)
protectedvirtual

update current variables/labels/bounds/targets with data from model

Update values and labels in currentVariables and bound/linear/nonlinear constraints in userDefinedConstraints from variables and constraints data within model.

Reimplemented from SurrogateModel.

References Model::is_null(), SurrogateModel::update_distributions_from_model(), SurrogateModel::update_response_from_model(), and SurrogateModel::update_variables_from_model().

Referenced by DataFitSurrModel::DataFitSurrModel(), and DataFitSurrModel::update_from_subordinate_model().

void derived_evaluate ( const ActiveSet set)
protectedvirtual
void derived_evaluate_nowait ( const ActiveSet set)
protectedvirtual
const IntResponseMap & derived_synchronize ( )
protectedvirtual

Blocking retrieval of asynchronous evaluations from actualModel, approxInterface, or both (mixed case). For the approxInterface portion, apply correction (if active) to each response in the array. derived_synchronize() is designed for the general case where derived_evaluate_nowait() may be inconsistent in its use of actual evaluations, approximate evaluations, or both.

Reimplemented from Model.

References DataFitSurrModel::actualModel, SurrogateModel::aggregate_response(), SurrogateModel::check_key(), DataFitSurrModel::component_parallel_mode(), DiscrepancyCorrection::compute(), DataFitSurrModel::deltaCorr, DataFitSurrModel::derived_synchronize_approx(), Model::outputLevel, Model::rekey_synch(), SurrogateModel::response_combine(), SurrogateModel::responseMode, DataFitSurrModel::surrIdMap, SurrogateModel::surrResponseMap, and DataFitSurrModel::truthIdMap.

const IntResponseMap & derived_synchronize_nowait ( )
protectedvirtual

Nonblocking retrieval of asynchronous evaluations from actualModel, approxInterface, or both (mixed case). For the approxInterface portion, apply correction (if active) to each response in the map. derived_synchronize_nowait() is designed for the general case where derived_evaluate_nowait() may be inconsistent in its use of actual evals, approx evals, or both.

Reimplemented from Model.

References Dakota::abort_handler(), DataFitSurrModel::actualModel, SurrogateModel::aggregate_response(), DataFitSurrModel::cachedApproxRespMap, DataFitSurrModel::component_parallel_mode(), DiscrepancyCorrection::compute(), DataFitSurrModel::deltaCorr, DataFitSurrModel::derived_synchronize_approx(), Model::outputLevel, Model::rekey_synch(), SurrogateModel::response_combine(), SurrogateModel::responseMode, DataFitSurrModel::surrIdMap, SurrogateModel::surrResponseMap, and DataFitSurrModel::truthIdMap.

void build_approximation ( )
protectedvirtual

Builds the local/multipoint/global approximation using daceIterator/actualModel to generate new data points.

This function constructs a new approximation, discarding any previous data. It constructs any required data for SurrogateData::{vars,resp}Data and does not define an anchor point for SurrogateData::anchor{Vars,Resp}, so is an unconstrained build.

Reimplemented from Model.

References DataFitSurrModel::actualModel, DataFitSurrModel::build_global(), DataFitSurrModel::build_local_multipoint(), DataFitSurrModel::clear_approx_interface(), Dakota::strbegins(), Model::surrogateType, DataFitSurrModel::update_global_reference(), DataFitSurrModel::update_local_reference(), and DataFitSurrModel::update_model().

Referenced by DataFitSurrModel::derived_evaluate(), and DataFitSurrModel::derived_evaluate_nowait().

bool build_approximation ( const Variables vars,
const IntResponsePair &  response_pr 
)
protectedvirtual

Builds the local/multipoint/global approximation using daceIterator/actualModel to generate new data points that augment the passed vars/response anchor point.

This function constructs a new approximation, discarding any previous data. It uses the passed data to populate SurrogateData::anchor{Vars,Resp} and constructs any required data points for SurrogateData::{vars,resp}Data.

Reimplemented from Model.

References DataFitSurrModel::actualModel, DataFitSurrModel::build_global(), DataFitSurrModel::build_local_multipoint(), Dakota::strbegins(), Model::surrogateType, DataFitSurrModel::update_approx_interface(), DataFitSurrModel::update_global_reference(), DataFitSurrModel::update_local_reference(), and DataFitSurrModel::update_model().

void rebuild_approximation ( )
protectedvirtual

Rebuilds the local/multipoint/global approximation using daceIterator/actualModel to generate an increment of appended data.

This function updates an existing approximation, by appending new data. It does not define an anchor point, so is an unconstrained build.

Reimplemented from Model.

References DataFitSurrModel::actualModel, DataFitSurrModel::build_local_multipoint(), Model::outputLevel, DataFitSurrModel::rebuild_global(), Dakota::strbegins(), Model::surrogateType, and DataFitSurrModel::update_model().

Referenced by DataFitSurrModel::append_approximation(), DataFitSurrModel::replace_approximation(), and DataFitSurrModel::update_approximation().

void update_approximation ( bool  rebuild_flag)
protectedvirtual

replaces the approximation data with daceIterator results and rebuilds the approximation if requested

This function populates/replaces SurrogateData::anchor{Vars,Resp} and rebuilds the approximation, if requested. It does not clear other data (i.e., SurrogateData::{vars,resp}Data) and does not update the actualModel with revised bounds, labels, etc. Thus, it updates data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References Iterator::all_responses(), Iterator::all_samples(), Iterator::all_variables(), DataFitSurrModel::approxInterface, Iterator::compact_mode(), DataFitSurrModel::daceIterator, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

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

replaces the anchor point, and rebuilds the approximation if requested

This function populates/replaces SurrogateData::anchor{Vars,Resp} and rebuilds the approximation, if requested. It does not clear other data (i.e., SurrogateData::{vars,resp}Data) and does not update the actualModel with revised bounds, labels, etc. Thus, it updates data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

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

replaces the current points array and rebuilds the approximation if requested

This function populates/replaces SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested. It does not clear other data (i.e., SurrogateData::anchor{Vars,Resp}) and does not update the actualModel with revised bounds, labels, etc. Thus, it updates data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

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

replaces the current points array and rebuilds the approximation if requested

This function populates/replaces SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested. It does not clear other data (i.e., SurrogateData::anchor{Vars,Resp}) and does not update the actualModel with revised bounds, labels, etc. Thus, it updates data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

void append_approximation ( bool  rebuild_flag)
protectedvirtual

appends daceIterator results to a global approximation and rebuilds it if requested

This function appends all{Samples,Variables,Responses} to SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested.

Reimplemented from Model.

References Iterator::all_responses(), Iterator::all_samples(), Iterator::all_variables(), Interface::append_approximation(), DataFitSurrModel::approxInterface, Iterator::compact_mode(), DataFitSurrModel::daceIterator, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), and Model::surrogateType.

Referenced by DataFitSurrModel::build_global(), DataFitSurrModel::rebuild_global(), and DataFitSurrModel::refine_surrogate().

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

appends a point to a global approximation and rebuilds it if requested

This function appends one point to SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested. It does not modify other data (i.e., SurrogateData::anchor{Vars,Resp}) and does not update the actualModel with revised bounds, labels, etc. Thus, it appends to data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References Interface::append_approximation(), DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), and Model::surrogateType.

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

appends a matrix of points to a global approximation and rebuilds it if requested

This function appends multiple points to SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested. It does not modify other data (i.e., SurrogateData::anchor{Vars,Resp}) and does not update the actualModel with revised bounds, labels, etc. Thus, it appends to data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References Interface::append_approximation(), DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), and Model::surrogateType.

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

appends an array of points to a global approximation and rebuilds it if requested

This function appends multiple points to SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested. It does not modify other data (i.e., SurrogateData::anchor{Vars,Resp}) and does not update the actualModel with revised bounds, labels, etc. Thus, it appends to data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References Interface::append_approximation(), DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), and Model::surrogateType.

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

appends an map of points to a global approximation and rebuilds it if requested

This function appends multiple points to SurrogateData::{vars,resp}Data and rebuilds the approximation, if requested. It does not modify other data (i.e., SurrogateData::anchor{Vars,Resp}) and does not update the actualModel with revised bounds, labels, etc. Thus, it appends to data from a previous call to build_approximation(), and is not intended to be used in isolation.

Reimplemented from Model.

References Interface::append_approximation(), DataFitSurrModel::approxInterface, Model::outputLevel, DataFitSurrModel::rebuild_approximation(), and Model::surrogateType.

void derived_init_communicators ( ParLevLIter  pl_iter,
int  max_eval_concurrency,
bool  recurse_flag = true 
)
protectedvirtual

set up actualModel for parallel operations

asynchronous flags need to be initialized for the sub-models. In addition, max_eval_concurrency is the outer level iterator concurrency, not the DACE concurrency that actualModel will see, and recomputing the message_lengths on the sub-model is probably not a bad idea either. Therefore, recompute everything on actualModel using init_communicators.

Reimplemented from Model.

References DataFitSurrModel::actualModel, DataFitSurrModel::approxInterface, DataFitSurrModel::daceIterator, Model::derivative_concurrency(), ProblemDescDB::get_db_method_node(), ProblemDescDB::get_db_model_node(), Iterator::init_communicators(), Model::init_communicators(), Iterator::is_null(), Model::is_null(), Iterator::iterated_model(), Iterator::maximum_evaluation_concurrency(), Iterator::method_id(), Interface::minimum_points(), Model::model_id(), Model::probDescDB, ProblemDescDB::set_db_list_nodes(), ProblemDescDB::set_db_method_node(), and ProblemDescDB::set_db_model_nodes().

void import_points ( unsigned short  tabular_format,
bool  use_var_labels,
bool  active_only 
)
private

optionally read surrogate data points from provided file

Constructor helper to read the points file once, if provided, and then reuse its data as appropriate within build_global(). Surrogate data imports default to active/inactive variables, but user can override to active only

process arrays of data from TabularIO::read_data_tabular() above

References DataFitSurrModel::actualModel, Response::copy(), Variables::copy(), Model::current_response(), Model::current_variables(), Model::currentResponse, Model::currentVariables, Dakota::data_pairs, ParamResponsePair::eval_id(), Model::evaluation_cache(), DataFitSurrModel::importPointsFile, ParamResponsePair::interface_id(), Model::interface_id(), Model::is_null(), Model::model_id(), Model::numFns, Model::outputLevel, Model::parallelLib, Model::restart_file(), Variables::total_active(), Variables::tv(), and ParallelLibrary::write_restart().

Referenced by DataFitSurrModel::DataFitSurrModel().

void initialize_export ( )
private
void finalize_export ( )
private

finalize file stream for exporting surrogate evaluations

Constructor helper to export approximation-based evaluations to a file.

References DataFitSurrModel::exportFileStream, DataFitSurrModel::exportPointsFile, DataFitSurrModel::exportVarianceFile, and DataFitSurrModel::exportVarianceFileStream.

Referenced by DataFitSurrModel::~DataFitSurrModel().

void export_point ( int  eval_id,
const Variables vars,
const Response resp 
)
private
void build_local_multipoint ( )
private
void build_global ( )
private
void rebuild_global ( )
private

Member Data Documentation

Model actualModel
private

the truth model which provides evaluations for building the surrogate (optional for global, required for local)

actualModel is unrestricted in type; arbitrary nestings are possible.

Referenced by DataFitSurrModel::active_model_key(), DataFitSurrModel::asv_inflate_build(), DataFitSurrModel::asv_split_eval(), DataFitSurrModel::build_approx_interface(), DataFitSurrModel::build_approximation(), DataFitSurrModel::build_global(), DataFitSurrModel::build_local_multipoint(), DataFitSurrModel::consistent(), DataFitSurrModel::DataFitSurrModel(), DataFitSurrModel::declare_sources(), DataFitSurrModel::derived_evaluate(), DataFitSurrModel::derived_evaluate_nowait(), DataFitSurrModel::derived_free_communicators(), DataFitSurrModel::derived_init_communicators(), DataFitSurrModel::derived_init_serial(), DataFitSurrModel::derived_set_communicators(), DataFitSurrModel::derived_subordinate_models(), DataFitSurrModel::derived_synchronize(), DataFitSurrModel::derived_synchronize_nowait(), DataFitSurrModel::estimate_partition_bounds(), DataFitSurrModel::evaluation_cache(), DataFitSurrModel::finalize_mapping(), DataFitSurrModel::fine_grained_evaluation_counters(), DataFitSurrModel::import_points(), DataFitSurrModel::inactive_view(), DataFitSurrModel::initialize_mapping(), DataFitSurrModel::inside(), DataFitSurrModel::nested_acv1_indices(), DataFitSurrModel::nested_acv2_targets(), DataFitSurrModel::nested_variable_mappings(), DataFitSurrModel::primary_response_fn_weights(), DataFitSurrModel::print_evaluation_summary(), DataFitSurrModel::qoi(), DataFitSurrModel::query_distribution_parameter_derivatives(), DataFitSurrModel::rebuild_approximation(), DataFitSurrModel::resize_from_subordinate_model(), DataFitSurrModel::restart_file(), DataFitSurrModel::run_dace(), DataFitSurrModel::serve_run(), DataFitSurrModel::stop_servers(), DataFitSurrModel::surrogate_response_mode(), DataFitSurrModel::truth_model(), DataFitSurrModel::update_from_subordinate_model(), DataFitSurrModel::update_global_reference(), DataFitSurrModel::update_local_reference(), and DataFitSurrModel::warm_start_flag().


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