$extrastylesheet
Dakota  Version 6.2
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
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

List of all members.

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 &export_points_file=String(), unsigned short export_format=TABULAR_ANNOTATED, const String &import_points_file=String(), unsigned short import_format=TABULAR_ANNOTATED, bool import_active_only=false)
 alternate constructor for instantiations on the fly
 ~DataFitSurrModel ()
 destructor
void total_points (int points)
 set pointsTotal and pointsManagement mode

Protected Member Functions

void derived_compute_response (const ActiveSet &set)
 portion of compute_response() specific to DataFitSurrModel
void derived_asynch_compute_response (const ActiveSet &set)
 portion of asynch_compute_response() specific to DataFitSurrModel
const IntResponseMap & derived_synchronize ()
 portion of synchronize() specific to DataFitSurrModel
const IntResponseMap & derived_synchronize_nowait ()
 portion of synchronize_nowait() specific to DataFitSurrModel
Iteratorsubordinate_iterator ()
 return daceIterator
Modelsurrogate_model ()
 return this model instance
Modeltruth_model ()
 return actualModel
void derived_subordinate_models (ModelList &ml, bool recurse_flag)
 return actualModel (and optionally its sub-models)
void update_from_subordinate_model (bool recurse_flag=true)
 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 IntSet &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.
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 vars/response anchor point.
void update_approximation (bool rebuild_flag)
 replaces the approximation data with daceIterator results and rebuilds the approximation if requested
void update_approximation (const Variables &vars, const IntResponsePair &response_pr, bool rebuild_flag)
 replaces the anchor point, and rebuilds the approximation if requested
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
void update_approximation (const RealMatrix &samples, const IntResponseMap &resp_map, bool rebuild_flag)
 replaces the current points array and rebuilds the approximation if requested
void append_approximation (bool rebuild_flag)
 appends daceIterator results to a global approximation and rebuilds it if requested
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
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
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
void pop_approximation (bool save_surr_data, bool rebuild_flag=false)
 remove approximation data added on previous append_approximation() call or a specified number of points
void restore_approximation ()
 restore a previous approximation data state
bool restore_available ()
 query for whether a trial increment is restorable
void finalize_approximation ()
 finalize data fit by applying all previous trial increments
void store_approximation ()
 store the current data fit approximation for later combination
void combine_approximation (short corr_type)
 combine the current data fit approximation with one previously stored
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 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
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
int evaluation_id () const
 return the current evaluation id for the DataFitSurrModel
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 eval_tag_prefix (const String &eval_id_str)
 set the hierarchical eval ID tag prefix

Private Member Functions

void import_points (unsigned short tabular_format, bool active_only)
 optionally read surrogate data points from provided file
void initialize_export ()
 initialize file stream for exporting surrogate evaluations
void manage_data_recastings ()
 initialize manageRecasting and recastFlags for data import/export
void export_point (int eval_id, const Variables &vars, const Response &resp)
 initialize file stream for exporting surrogate evaluations
void derived_synchronize_approx (const IntResponseMap &approx_resp_map, IntResponseMap &approx_resp_map_rekey)
 Common code for processing of approximate response maps shared by derived_synchronize() and derived_synchronize_nowait()
void update_global ()
 Updates fit arrays for global approximations.
void update_local_multipoint ()
 Updates fit arrays for local or multipoint approximations.
void build_global ()
 Builds a global approximation using daceIterator.
void build_local_multipoint ()
 Builds a local or multipoint approximation using actualModel.
void update_actual_model ()
 update actualModel with data from current variables/labels/bounds/targets
void update_from_actual_model ()
 update current variables/labels/bounds/targets with data from actualModel
bool inside (const RealVector &c_vars, const IntVector &di_vars, const RealVector &dr_vars)
 test if c_vars and d_vars are within [c_l_bnds,c_u_bnds] and [d_l_bnds,d_u_bnds]

Private Attributes

int surrModelEvalCntr
 number of calls to derived_compute_response()/ derived_asynch_compute_response()
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)
bool manageRecasting
 flag indicating need to manage data recastings when importing build data or exporting approximate evaluations
BoolDeque recastFlags
 a key indicating which models within a model recursion involve recasting
String importPointsFile
 file name from import_points_file specification
String exportPointsFile
 file name from export_points_file specification
unsigned short exportFormat
 file export format for variables and approximate responses
std::ofstream exportFileStream
 file name for export_points_file specification
VariablesList reuseFileVars
 array of variables sets read from the import_points_file
ResponseList reuseFileResponses
 array of response sets read from the import_points_file
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)
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)
String evalTagPrefix
 cached evalTag Prefix from parents to use at compute_response time

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.


Constructor & Destructor Documentation

~DataFitSurrModel ( ) [inline]

destructor

Virtual destructor handles referenceCount at Strategy level.

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


Member Function Documentation

void derived_compute_response ( const ActiveSet set) [protected, virtual]
void derived_asynch_compute_response ( const ActiveSet set) [protected, virtual]
const IntResponseMap & derived_synchronize ( ) [protected, virtual]

portion of synchronize() specific to DataFitSurrModel

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_asynch_compute_response() may be inconsistent in its use of actual evaluations, approximate evaluations, or both.

Reimplemented from Model.

References DataFitSurrModel::actualModel, DataFitSurrModel::approxInterface, DataFitSurrModel::component_parallel_mode(), DiscrepancyCorrection::compute(), SurrogateModel::deltaCorr, DataFitSurrModel::derived_synchronize_approx(), Model::outputLevel, SurrogateModel::response_mapping(), SurrogateModel::responseMode, SurrogateModel::surrIdMap, SurrogateModel::surrResponseMap, Interface::synch(), Model::synchronize(), and SurrogateModel::truthIdMap.

const IntResponseMap & derived_synchronize_nowait ( ) [protected, virtual]

portion of synchronize_nowait() specific to DataFitSurrModel

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_asynch_compute_response() may be inconsistent in its use of actual evals, approx evals, or both.

Reimplemented from Model.

References Dakota::abort_handler(), DataFitSurrModel::actualModel, DataFitSurrModel::approxInterface, SurrogateModel::cachedApproxRespMap, DataFitSurrModel::component_parallel_mode(), DiscrepancyCorrection::compute(), SurrogateModel::deltaCorr, DataFitSurrModel::derived_synchronize_approx(), Model::outputLevel, SurrogateModel::response_mapping(), SurrogateModel::responseMode, SurrogateModel::surrIdMap, SurrogateModel::surrResponseMap, Interface::synch_nowait(), Model::synchronize_nowait(), and SurrogateModel::truthIdMap.

void build_approximation ( ) [protected, virtual]
bool build_approximation ( const Variables vars,
const IntResponsePair &  response_pr 
) [protected, virtual]
void update_approximation ( bool  rebuild_flag) [protected, virtual]

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(), SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Iterator::compact_mode(), DataFitSurrModel::daceIterator, Model::numFns, Interface::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

void update_approximation ( const Variables vars,
const IntResponsePair &  response_pr,
bool  rebuild_flag 
) [protected, virtual]

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 SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Model::numFns, Interface::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

void update_approximation ( const VariablesArray &  vars_array,
const IntResponseMap &  resp_map,
bool  rebuild_flag 
) [protected, virtual]

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 SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Model::numFns, Interface::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

void update_approximation ( const RealMatrix &  samples,
const IntResponseMap &  resp_map,
bool  rebuild_flag 
) [protected, virtual]

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 SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Model::numFns, Interface::rebuild_approximation(), Model::surrogateType, and Interface::update_approximation().

void append_approximation ( bool  rebuild_flag) [protected, virtual]

appends daceIterator results 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 Iterator::all_responses(), Iterator::all_samples(), Iterator::all_variables(), Interface::append_approximation(), SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Iterator::compact_mode(), DataFitSurrModel::daceIterator, Model::numFns, Interface::rebuild_approximation(), and Model::surrogateType.

void append_approximation ( const Variables vars,
const IntResponsePair &  response_pr,
bool  rebuild_flag 
) [protected, virtual]

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(), SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Model::numFns, Interface::rebuild_approximation(), and Model::surrogateType.

void append_approximation ( const VariablesArray &  vars_array,
const IntResponseMap &  resp_map,
bool  rebuild_flag 
) [protected, virtual]

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(), SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Model::numFns, Interface::rebuild_approximation(), and Model::surrogateType.

void append_approximation ( const RealMatrix &  samples,
const IntResponseMap &  resp_map,
bool  rebuild_flag 
) [protected, virtual]

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(), SurrogateModel::approxBuilds, DataFitSurrModel::approxInterface, Model::numFns, Interface::rebuild_approximation(), and Model::surrogateType.

void derived_init_communicators ( ParLevLIter  pl_iter,
int  max_eval_concurrency,
bool  recurse_flag = true 
) [protected, virtual]

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

int evaluation_id ( ) const [inline, protected, virtual]

return the current evaluation id for the DataFitSurrModel

return the DataFitSurrModel evaluation count. Due to possibly intermittent use of surrogate bypass, this is not the same as either the approxInterface or actualModel model evaluation counts. It also does not distinguish duplicate evals.

Reimplemented from Model.

References DataFitSurrModel::surrModelEvalCntr.

void import_points ( unsigned short  tabular_format,
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

References Variables::cv(), Variables::div(), Variables::drv(), Variables::dsv(), Response::is_null(), Variables::is_null(), and Variables::tv().

Referenced by DataFitSurrModel::DataFitSurrModel().

void initialize_export ( ) [private]

initialize file stream for exporting surrogate evaluations

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

Referenced by DataFitSurrModel::DataFitSurrModel().

void manage_data_recastings ( ) [private]

initialize manageRecasting and recastFlags for data import/export

Constructor helper to manage model recastings for data import/export.

Referenced by DataFitSurrModel::DataFitSurrModel().

void export_point ( int  eval_id,
const Variables vars,
const Response resp 
) [private]

initialize file stream for exporting surrogate evaluations

Constructor helper to export approximation-based evaluations to a file. Exports all variables, so it's clear at what values of inactive it was built at

References RecastModel::inverse_transform_response(), Model::model_rep(), and RecastModel::transform_variables().

Referenced by DataFitSurrModel::derived_compute_response().

void build_global ( ) [private]

Builds a global approximation using daceIterator.

Determine points to use in building the approximation and then evaluate them on actualModel using daceIterator. Any changes to the bounds should be performed by setting them at a higher level (e.g., SurrBasedOptStrategy).

References Dakota::abort_handler(), Iterator::active_set(), DataFitSurrModel::actualModel, Iterator::all_responses(), Iterator::all_samples(), Iterator::all_variables(), Interface::append_approximation(), Interface::approximation_data(), DataFitSurrModel::approxInterface, SurrogateModel::asv_mapping(), Iterator::compact_mode(), DataFitSurrModel::component_parallel_mode(), Variables::continuous_variables(), Model::currentVariables, Variables::cv(), Model::cv(), DataFitSurrModel::daceIterator, Dakota::data_pairs, Variables::discrete_int_variables(), Variables::discrete_real_variables(), Variables::div(), Model::div(), Variables::drv(), Model::drv(), Iterator::eval_tag_prefix(), DataFitSurrModel::evalTagPrefix, Model::hierarchicalTagging, DataFitSurrModel::importPointsFile, DataFitSurrModel::inside(), Model::interface_id(), RecastModel::inverse_transform_variables(), Iterator::is_null(), Model::is_null(), DataFitSurrModel::manageRecasting, Interface::minimum_points(), SurrogateModel::miPLIndex, Model::model_rep(), Model::modelList, Model::modelPCIter, Iterator::num_samples(), Model::outputLevel, DataFitSurrModel::pointReuse, DataFitSurrModel::pointsManagement, DataFitSurrModel::pointsTotal, DataFitSurrModel::recastFlags, Interface::recommended_points(), DataFitSurrModel::reuseFileResponses, DataFitSurrModel::reuseFileVars, Iterator::run(), Iterator::sampling_reset(), DataFitSurrModel::surrModelEvalCntr, and SurrogateModel::surrogateFnIndices.

Referenced by DataFitSurrModel::build_approximation().

void build_local_multipoint ( ) [private]
void update_actual_model ( ) [private]

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

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

References Dakota::abort_handler().

Referenced by DataFitSurrModel::build_approximation(), DataFitSurrModel::derived_asynch_compute_response(), and DataFitSurrModel::derived_compute_response().

void update_from_actual_model ( ) [private]

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

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

References Dakota::abort_handler().

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


Member Data Documentation

Model actualModel [private]

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