$extrastylesheet
Dakota
Version 6.2
|
Efficient Subspace Method (ESM), as proposed by Hany S. Abdel-Khalik. More...
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 EfficientSubspaceMethod * | esmInstance |
instance of this class for use in static member functions |
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
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] |
determine if the reduced basis yields acceptable reconstruction error, based on sampling in the orthogonal complement of the reduced basis
This function is experimental and needs to be carefully reviewed and cleaned up
References Iterator::activeSet, Model::aleatory_distribution_parameters(), Model::compute_response(), Model::continuous_variables(), Model::current_response(), Response::function_values(), Iterator::iteratedModel, Iterator::maxFunctionEvals, EfficientSubspaceMethod::nullspaceTol, Analyzer::numContinuousVars, Analyzer::numFunctions, Iterator::outputLevel, EfficientSubspaceMethod::reducedBasis, EfficientSubspaceMethod::reducedRank, ActiveSet::request_values(), EfficientSubspaceMethod::totalEvals, EfficientSubspaceMethod::totalSamples, and EfficientSubspaceMethod::varsMatrix.
Referenced by EfficientSubspaceMethod::quantify_uncertainty().
void reduced_space_uq | ( | ) | [private] |
experimental method to demonstrate creating a RecastModel and perform sampling-based UQ in the reduced space
This function is experimental and needs to be reviewed and cleaned up. In particular the translation of the correlations from full to reduced space is likely wrong. Transformation may be correct for covariance, but likely not correlations.
References Model::assign_rep(), NonD::construct_lhs(), Model::free_communicators(), NonD::generate_system_seed(), Model::init_communicators(), Iterator::iteratedModel, EfficientSubspaceMethod::map_xi_to_x(), Iterator::methodPCIter, EfficientSubspaceMethod::miPLIndex, Analyzer::numContinuousVars, Analyzer::numFunctions, Iterator::print_results(), EfficientSubspaceMethod::reducedRank, Iterator::run(), Iterator::sampling_reset(), EfficientSubspaceMethod::seedSpec, Iterator::sub_iterator_flag(), EfficientSubspaceMethod::subspaceSamples, EfficientSubspaceMethod::uncertain_vars_to_subspace(), and Analyzer::vary_pattern().
Referenced by EfficientSubspaceMethod::quantify_uncertainty().
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().