Dakota
Version
Explore and Predict with Confidence
|
Container class for response functions and their derivatives.
Response provides the enveloper base class.
More...
Public Member Functions | |
Response () | |
default constructor | |
Response (short type, const Variables &vars, const ProblemDescDB &problem_db) | |
standard constructor built from problem description database | |
Response (const SharedResponseData &srd, const ActiveSet &set) | |
alternate constructor that shares response data | |
Response (short type, const ActiveSet &set) | |
alternate constructor using limited data without sharing | |
Response (const SharedResponseData &srd) | |
alternate constructor using limited data (explicit disallows implicit type conversion) | |
Response (const Response &response) | |
copy constructor | |
virtual | ~Response () |
destructor | |
Response | operator= (const Response &response) |
assignment operator | |
const SharedResponseData & | shared_data () const |
return sharedRespData | |
SharedResponseData & | shared_data () |
return sharedRespData | |
size_t | num_functions () const |
return the number of response functions | |
const ActiveSet & | active_set () const |
return the active set | |
void | active_set (const ActiveSet &set) |
set the active set | |
const ShortArray & | active_set_request_vector () const |
return the active set request vector | |
ShortArray & | active_set_request_vector () |
return the active set request vector | |
void | active_set_request_vector (const ShortArray &asrv) |
set the active set request vector and verify consistent number of response functions | |
const SizetArray & | active_set_derivative_vector () const |
return the active set derivative vector | |
SizetArray & | active_set_derivative_vector () |
return the active set derivative vector | |
void | active_set_derivative_vector (const SizetArray &asdv) |
set the active set derivative vector and reshape functionGradients/functionHessians if needed | |
void | active_set_derivative_vector (SizetMultiArrayConstView asdv) |
set the active set derivative vector and reshape functionGradients/functionHessians if needed | |
const Real & | function_value (size_t i) const |
return a function value | |
Real & | function_value_view (size_t i) |
return a "view" of a function value for updating in place | |
const RealVector & | function_values () const |
return all function values | |
RealVector | function_values_view () |
return all function values as a view for updating in place | |
RealVector | function_values_view () const |
return all function values as a view for accessing the function values vector from a const response | |
void | function_value (const Real &fn_val, size_t i) |
set a function value | |
void | function_values (const RealVector &fn_vals) |
set all function values | |
const Real * | function_gradient (int i) const |
return the i-th function gradient as a const Real* | |
RealVector | function_gradient_view (int i) |
return the i-th function gradient as a SerialDenseVector view (shallow copy) for updating in place | |
RealVector | function_gradient_view (int i) const |
return the i-th function gradient as a SerialDenseVector view (shallow copy) for accessing a column vector from a const matrix | |
RealVector | function_gradient_copy (int i) const |
return the i-th function gradient as a SerialDenseVector Teuchos::Copy (deep copy) | |
const RealMatrix & | function_gradients () const |
return all function gradients | |
RealMatrix | function_gradients_view () |
return all function gradients as a view for updating in place | |
RealMatrix | function_gradients_view () const |
return all function gradients as a view for updating in place | |
void | function_gradient (const RealVector &assign_grad, int fn_index) |
set a function gradient | |
void | function_gradient (const RealVector &assign_grad, int fn_index, const SizetArray &assign_indices, const SizetArray &curr_indices) |
set a function gradient, managing dissimilar DVV | |
void | function_gradient (const RealVector &assign_grad, int fn_index, const SizetArray &assign_dvv) |
set a function gradient, managing dissimilar DVV | |
void | function_gradients (const RealMatrix &fn_grads) |
set all function gradients | |
const RealSymMatrix & | function_hessian (size_t i) const |
return the i-th function Hessian | |
RealSymMatrix | function_hessian_view (size_t i) |
return the i-th function Hessian as a Teuchos::View (shallow copy) for updating in place | |
RealSymMatrix | function_hessian_view (size_t i) const |
return the i-th function Hessian as a Teuchos::View (shallow copy) for accessing the i-th matrix within a const matrix array | |
const RealSymMatrixArray & | function_hessians () const |
return all function Hessians | |
RealSymMatrixArray | function_hessians_view () |
return all function Hessians as Teuchos::Views (shallow copies) for updating in place | |
RealSymMatrixArray | function_hessians_view () const |
return all function Hessians as Teuchos::Views (shallow copies) for updating in place | |
void | function_hessian (const RealSymMatrix &assign_hessian, size_t fn_index) |
set a function Hessian | |
void | function_hessian (const RealSymMatrix &assign_hessian, size_t fn_index, const SizetArray &assign_indices, const SizetArray &curr_indices) |
set a function Hessian, using DVV index mappings | |
void | function_hessian (const RealSymMatrix &assign_hessian, size_t fn_index, const SizetArray &assign_dvv) |
set a function Hessian, managing dissimilar DVV | |
void | function_hessians (const RealSymMatrixArray &fn_hessians) |
set all function Hessians | |
void | map_dvv_indices (const SizetArray &assign_dvv, SizetArray &assign_indices, SizetArray &curr_indices) |
define source and target indices for updating derivatives by matching assign_dvv against the current DVV | |
const IntVector & | field_lengths () const |
return the field lengths (from SharedResponseData) | |
void | field_lengths (const IntVector &field_lens) |
set the field lengths (within SharedResponseData) | |
RealVector | field_values_view (size_t i) const |
return const field values for the i-th field | |
RealVector | field_values_view (size_t i) |
return a "view" of the i-th field values for updating in place | |
void | field_values (const RealVector &field_val, size_t i) |
set the values for the i-th field | |
RealMatrix | field_gradients_view (size_t i) const |
return a view of the gradients of each element of the i-th field | |
RealSymMatrixArray | field_hessians_view (size_t i) const |
return a view of the hessians of each element of the i-th field | |
RealMatrix | field_coords_view (size_t i) |
return a "view" of the i-th field's coordinates | |
const RealMatrix | field_coords_view (size_t i) const |
return a const "view" of the i-th field's coordinates | |
void | field_coords (const RealMatrix &field_coords, size_t i) |
set the i-th field's coordinates | |
const IntVector & | num_coords_per_field () const |
return the number of coordinates each field has (from SharedResponseData) | |
const StringArray & | function_labels () const |
return the fine-grained (unrolled) response function identifier strings from sharedRespData | |
void | function_labels (const StringArray &labels) |
set the fine-grained (unrolled) response function identifier strings within sharedRespData | |
const StringArray & | field_group_labels () |
return the user-provided field group labels instead of the unrolled labels available through function_labels() | |
const std::vector< RespMetadataT > & | metadata () const |
get the (possibly empty) response metadata; (get labels through shared_data()) | |
void | metadata (const std::vector< RespMetadataT > &md) |
set the response metadata (set labels through shared_data()) | |
void | metadata (const std::vector< RespMetadataT > &md, size_t start) |
set a portion of the response metadata starting from given position | |
void | read (std::istream &s, const unsigned short format=FLEXIBLE_RESULTS) |
read a response object of specified format from a std::istream | |
void | write (std::ostream &s) const |
write a response object to a std::ostream | |
void | read_annotated (std::istream &s) |
read a response object in annotated format from a std::istream | |
void | write_annotated (std::ostream &s) const |
write a response object in annotated format to a std::ostream | |
void | read_tabular (std::istream &s) |
read responseRep::functionValues in tabular format from a std::istream | |
void | write_tabular (std::ostream &s, bool eol=true) const |
write responseRep::functionValues in tabular format to a std::ostream | |
void | write_tabular_partial (std::ostream &s, size_t start_index, size_t num_items) const |
write portion of responseRep::functionValues in tabular format to a std::ostream | |
void | write_tabular_labels (std::ostream &s, bool eol=true) const |
write the response labels in tabular format to a std::ostream | |
void | read (MPIUnpackBuffer &s) |
read a response object from a packed MPI buffer | |
void | write (MPIPackBuffer &s) const |
write a response object to a packed MPI buffer | |
Response | copy (bool deep_srd=false) const |
return a deep response copy of the contained responseRep for use in history mechanisms (SharedResponseData uses a shallow copy by default) | |
int | data_size () |
return the number of doubles active in response. Used for sizing double* response_data arrays passed into read_data and write_data. | |
void | read_data (double *response_data) |
read from an incoming double* array | |
void | write_data (double *response_data) |
write to an incoming double* array | |
void | overlay (const Response &response) |
add incoming response to functionValues/Gradients/Hessians | |
void | update (const Response &response, bool pull_metadata=false) |
Used in place of operator= when only results data updates are desired (functionValues/functionGradients/functionHessians are updated, ASV/labels/id's/etc. are not). Care is taken to allow different derivative array sizing between the two response objects. | |
void | update (const RealVector &source_fn_vals, const RealMatrix &source_fn_grads, const RealSymMatrixArray &source_fn_hessians, const ActiveSet &source_set) |
Overloaded form which allows update from components of a response object. Care is taken to allow different derivative array sizing. | |
void | update_partial (size_t start_index_target, size_t num_items, const Response &response, size_t start_index_source) |
partial update of this response object from another response object. The response objects may have different numbers of response functions. | |
void | update_partial (size_t start_index_target, size_t num_items, const RealVector &source_fn_vals, const RealMatrix &source_fn_grads, const RealSymMatrixArray &source_fn_hessians, const ActiveSet &source_set, size_t start_index_source) |
Overloaded form which allows partial update from components of a response object. The response objects may have different numbers of response functions. | |
void | reshape (size_t num_fns, size_t num_params, bool grad_flag, bool hess_flag) |
rehapes response data arrays | |
void | reshape_metadata (size_t num_meta) |
rehapes response metadata arrays | |
void | reset () |
resets all response data to zero | |
void | reset_inactive () |
resets all inactive response data to zero | |
bool | is_null () const |
function to check responseRep (does this handle contain a body) | |
virtual void | set_scalar_covariance (RealVector &scalars) |
method to set the covariance matrix defined for ExperimentResponse | |
virtual const ExperimentCovariance & | experiment_covariance () const |
retrieve the ExperimentCovariance structure | |
virtual void | set_full_covariance (std::vector< RealMatrix > &matrices, std::vector< RealVector > &diagonals, RealVector &scalars, IntVector matrix_map_indices, IntVector diagonal_map_indices, IntVector scalar_map_indices) |
method to set the full covariance matrices for ExperimentResponse | |
virtual Real | apply_covariance (const RealVector &residuals) const |
method to compute the triple product v'*inv(C)*v. | |
virtual void | apply_covariance_inv_sqrt (const RealVector &residuals, RealVector &weighted_residuals) const |
method to compute (v'*inv(C)^1/2), to compute weighted residual | |
virtual void | apply_covariance_inv_sqrt (const RealMatrix &gradients, RealMatrix &weighted_gradients) const |
virtual void | apply_covariance_inv_sqrt (const RealSymMatrixArray &hessians, RealSymMatrixArray &weighted_hessians) const |
virtual void | get_covariance_diagonal (RealVector &diagonal) const |
virtual Real | covariance_determinant () const |
covariance determinant for one experiment (default 1.0) | |
virtual Real | log_covariance_determinant () const |
log of covariance determinant for one experiment (default 0.0) | |
Protected Member Functions | |
Response (BaseConstructor, const Variables &vars, 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) | |
Response (BaseConstructor, const SharedResponseData &srd, const ActiveSet &set) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) | |
Response (BaseConstructor, const ActiveSet &set) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) | |
Response (BaseConstructor, const SharedResponseData &srd) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) | |
virtual void | copy_rep (std::shared_ptr< Response > source_resp_rep) |
Implementation of data copy for Response letters (specialized by some derived letter types); pulls base class data from source_resp_rep into the this object. | |
Protected Attributes | |
SharedResponseData | sharedRespData |
reference-counted instance of shared response data: id's, labels | |
RealVector | functionValues |
Abstract set of response functions. Ordered: [primary_scalar, primary_field, nonlinear_inequality, nonlinear_equality]. | |
RealMatrix | functionGradients |
first derivatives of the response functions More... | |
RealSymMatrixArray | functionHessians |
second derivatives of the response functions | |
IntRealMatrixMap | fieldCoords |
coordinates (independent vars like x,t) on which field values depend | |
ActiveSet | responseActiveSet |
copy of the ActiveSet used by the Model to generate a Response instance | |
std::vector< RespMetadataT > | metaData |
metadata storage | |
Private Member Functions | |
template<class Archive , typename OrdinalType , typename ScalarType > | |
void | write_sdm_col (Archive &ar, int col, const Teuchos::SerialDenseMatrix< OrdinalType, ScalarType > &sdm) const |
write a column of a SerialDenseMatrix | |
template<class Archive , typename OrdinalType , typename ScalarType > | |
void | read_sdm_col (Archive &ar, int col, Teuchos::SerialDenseMatrix< OrdinalType, ScalarType > &sdm) |
read a column of a SerialDenseMatrix | |
template<class Archive > | |
void | load (Archive &ar, const unsigned int version) |
read a Response from an archive<class Archive> | |
template<class Archive > | |
void | load_rep (Archive &ar, const unsigned int version) |
read a Response letter object from an archive | |
template<class Archive > | |
void | save (Archive &ar, const unsigned int version) const |
write a Response to an archive | |
template<class Archive > | |
void | save_rep (Archive &ar, const unsigned int version) const |
write a Response letter object to an archive | |
BOOST_SERIALIZATION_SPLIT_MEMBER() std std::shared_ptr< Response > | get_response (const SharedResponseData &srd, const ActiveSet &set) const |
Used by standard envelope constructor to instantiate a new letter class. More... | |
std::shared_ptr< Response > | get_response (short type, const ActiveSet &set) const |
Used by alternate envelope constructor to instantiate a new letter class. | |
std::shared_ptr< Response > | get_response (const SharedResponseData &srd) const |
Used by copy() to instantiate a new letter class. | |
std::shared_ptr< Response > | get_response (short type) const |
Used by read functions to instantiate a new letter class. | |
void | read_annotated_rep (std::istream &s) |
read a letter object in annotated format from a std::istream | |
void | write_annotated_rep (std::ostream &s) const |
write a letter object in annotated format to a std::ostream | |
void | read_rep (MPIUnpackBuffer &s) |
read a letter object from a packed MPI buffer | |
void | write_rep (MPIPackBuffer &s) const |
write a letter object to a packed MPI buffer | |
void | shape_rep (const ActiveSet &set, bool initialize=true) |
resizes the representation's containers | |
void | reshape_rep (size_t num_fns, size_t num_params, bool grad_flag, bool hess_flag) |
resizes the representation's containers | |
void | reshape_active_derivs (size_t num_deriv_vars) |
reshape function{Gradients,Hessians} if needed to sync with DVV | |
void | read_core (std::istream &s, const unsigned short formats, std::ostringstream &errors) |
bool | expect_derivatives (const ShortArray &asv) |
void | read_gradients (std::istream &s, const ShortArray &asv, bool expect_metadata, std::ostringstream &error) |
Read gradients from a freeform stream. Insert error messages. | |
void | read_hessians (std::istream &s, const ShortArray &asv, bool expect_metadata, std::ostringstream &error) |
Read Hessians from a freeform stream. Insert error messages. | |
void | read_labeled_fn_vals (std::istream &s, const ShortArray &asv, size_t num_metadata, std::ostringstream &errors) |
Read function values from an annotated stream. Insert error messages. | |
void | read_flexible_fn_vals (std::istream &s, const ShortArray &asv, size_t num_metadata, std::ostringstream &errors) |
Read function values from a stream in a "flexible" way – ignoring any labels. Insert error messages into errors stream. | |
bool | failure_reported (std::istream &s) |
Check for FAIL in stream. | |
Private Attributes | |
std::shared_ptr< Response > | responseRep |
pointer to the body (handle-body idiom) | |
Friends | |
class | boost::serialization::access |
bool | operator== (const Response &resp1, const Response &resp2) |
equality operator | |
bool | operator!= (const Response &resp1, const Response &resp2) |
inequality operator | |
Container class for response functions and their derivatives.
Response provides the enveloper base class.
The Response class is a container class for an abstract set of functions (functionValues) and their first (functionGradients) and second (functionHessians) derivatives. The functions may involve objective and constraint functions (optimization data set), least squares terms (parameter estimation data set), or generic response functions (uncertainty quantification data set). When field responses are present, the stored response elements are ordered: [primary_scalar, primary_field, nonlinear_inequality, nonlinear_equality].
For memory efficiency, it employs the "letter-envelope idiom" approach to reference counting and representation sharing (see Coplien "Advanced C++"), for which the base Response class serves as the envelope and one of its derived classes serves as the letter.
|
private |
Used by standard envelope constructor to instantiate a new letter class.
Used by alternate envelope constructor to instantiate a new letter class
|
protected |
first derivatives of the response functions
the gradient vectors (plural) are column vectors in the matrix (singular) with (row, col) = (variable index, response fn index).
Referenced by Response::field_gradients_view(), Response::function_gradient(), Response::function_gradient_copy(), Response::function_gradient_view(), Response::function_gradients(), and Response::function_gradients_view().