$extrastylesheet
Dakota  Version 6.2
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
EfficientSubspaceMethod Class Reference

Efficient Subspace Method (ESM), as proposed by Hany S. Abdel-Khalik. More...

Inheritance diagram for EfficientSubspaceMethod:
NonD Analyzer Iterator

List of all members.

Public Member Functions

 EfficientSubspaceMethod (ProblemDescDB &problem_db, Model &model)
 Standard, model-based constructor.
 ~EfficientSubspaceMethod ()
 Destructor.
void derived_init_communicators (ParLevLIter pl_iter)
 specialization of init comms due to varied use of the original model
void derived_set_communicators (ParLevLIter pl_iter)
 specialization of init comms due to varied use of the original model
void derived_free_communicators (ParLevLIter pl_iter)
 specialization of free comms due to varied use of the original model
void quantify_uncertainty ()
 ESM re-implementation of the virtual UQ iterator function.

Private Member Functions

void validate_inputs ()
 validate user-supplied input values, setting defaults, aborting on error
void init_fullspace_sampler ()
 initialize the native problem space Monte Carlo sampler
void expand_basis (bool &mach_svtol_met, bool &user_svtol_met)
 generate fullspace samples, append to matrix, and factor, returning whether tolerance met
unsigned int calculate_fullspace_samples ()
 determine the number of full space samples for next iteration, based on batchSize, limiting by remaining function evaluation budget
void generate_fullspace_samples (unsigned int diff_samples)
 sample the derivative at diff_samples points and leave temporary in dace_iterator
void append_sample_matrices (unsigned int diff_samples)
 append the fullSpaceSampler samples to the derivative and vars matrices
void compute_svd (bool &mach_svtol_met, bool &user_svtol_met)
 factor the derivative matrix and analyze singular values, assessing convergence and rank, returning whether tolerance met
void print_svd_stats ()
 print inner iteration stats after SVD
void assess_reconstruction (bool &recon_tol_met)
 determine if the reduced basis yields acceptable reconstruction error, based on sampling in the orthogonal complement of the reduced basis
void reduced_space_uq ()
 experimental method to demonstrate creating a RecastModel and perform sampling-based UQ in the reduced space
void uncertain_vars_to_subspace (Model &native_model, Model &vars_transform_model)
 translate the characterization of uncertain variables in the native_model to the reduced space of the transformed model

Static Private Member Functions

static void map_xi_to_x (const Variables &recast_xi_vars, Variables &sub_model_x_vars)
 map the active continuous recast variables to the active submodel variables (linear transformation)

Private Attributes

int seedSpec
 seed controlling all samplers
int initialSamples
 initial number of samples at which to query the truth model
int batchSize
 number of points to add at each iteration
int subspaceSamples
 number of UQ samples to perform in the reduced space
unsigned int currIter
 current iteration
unsigned int totalSamples
 total construction samples evaluated so far
unsigned int totalEvals
 total evaluations of model (accounting for UQ phase)
double userSVTol
 user-specified tolerance on singular value ratio
double nullspaceTol
 user-specified tolerance on nullspace
double svRatio
 current singular value ratio (sigma_k/sigma_0)
unsigned int reducedRank
 current approximation of system rank
RealMatrix reducedBasis
 basis for the reduced subspace
RealMatrix derivativeMatrix
 matrix of derivative data with numFunctions columns per fullspace sample; each column contains the gradient of one function at one sample point, so total matrix size is numContinuousVars * (numFunctions * numSamples) [ D1 | D2 | ... | Dnum_samples] [ dy1/dx(k=1) | dy2/dx(k=1) | ... | dyM/dx(k=1) | k=2 | ... | k=n_s ]
RealMatrix varsMatrix
 matrix of fullspace variable points samples size numContinuousVars * (numSamples)
size_t miPLIndex
 index for the active ParallelLevel within ParallelConfiguration::miPLIters
Iterator fullSpaceSampler
 Monte Carlo sampler for the full parameter space.

Static Private Attributes

static EfficientSubspaceMethodesmInstance
 instance of this class for use in static member functions

Detailed Description

Efficient Subspace Method (ESM), as proposed by Hany S. Abdel-Khalik.

ESM uses random sampling to construct a low-dimensional subspace of the full dimensional parameter space, then performs UQ in the reduced space


Member Function Documentation

void derived_init_communicators ( ParLevLIter  pl_iter) [virtual]

specialization of init comms due to varied use of the original model

This specialization is because the model is used in multiple contexts in this iterator, depending on build phase. Note that this overrides the default behavior at Iterator which recurses into any submodels.

Reimplemented from Iterator.

References EfficientSubspaceMethod::batchSize, Model::init_communicators(), Iterator::iteratedModel, and Iterator::maxEvalConcurrency.

void assess_reconstruction ( bool &  recon_tol_met) [private]
void reduced_space_uq ( ) [private]
void uncertain_vars_to_subspace ( Model native_model,
Model vars_transform_model 
) [private]

translate the characterization of uncertain variables in the native_model to the reduced space of the transformed model

transform and set the distribution parameters in the reduced model

Convert the user-specified normal random variables to the appropriate reduced space variables, based on the orthogonal transformation.

TODO: Generalize to convert other random variable types

References Dakota::abort_handler(), Model::aleatory_distribution_parameters(), Analyzer::numContinuousVars, Iterator::outputLevel, EfficientSubspaceMethod::reducedBasis, and EfficientSubspaceMethod::reducedRank.

Referenced by EfficientSubspaceMethod::reduced_space_uq().

void map_xi_to_x ( const Variables recast_xi_vars,
Variables sub_model_x_vars 
) [static, private]

map the active continuous recast variables to the active submodel variables (linear transformation)

Perform the variables mapping from recast reduced dimension variables xi to original model x variables via linear transformation. Maps only continuous variables.

References Variables::continuous_variables(), Dakota::copy_data(), EfficientSubspaceMethod::esmInstance, Iterator::outputLevel, and EfficientSubspaceMethod::reducedBasis.

Referenced by EfficientSubspaceMethod::reduced_space_uq().


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