Class for the reliability methods within DAKOTA/UQ. More...
Public Member Functions | |
NonDLocalReliability (Model &model) | |
constructor | |
~NonDLocalReliability () | |
destructor | |
void | quantify_uncertainty () |
performs an uncertainty propagation using analytical reliability methods which solve constrained optimization problems to obtain approximations of the cumulative distribution function of response | |
void | print_results (std::ostream &s) |
print the approximate mean, standard deviation, and importance factors when using the mean value method or the CDF/CCDF information when using MPP-search-based reliability methods | |
String | uses_method () const |
return name of active MPP optimizer | |
void | method_recourse () |
perform an MPP optimizer method switch due to a detected conflict | |
Private Member Functions | |
void | initial_taylor_series () |
convenience function for performing the initial limit state Taylor-series approximation | |
void | mean_value () |
convenience function for encapsulating the simple Mean Value computation of approximate statistics and importance factors | |
void | mpp_search () |
convenience function for encapsulating the reliability methods that employ a search for the most probable point (AMV, AMV+, FORM, SORM) | |
void | initialize_class_data () |
convenience function for initializing class scope arrays | |
void | initialize_level_data () |
convenience function for initializing/warm starting MPP search data for each response function prior to level 0 | |
void | initialize_mpp_search_data () |
convenience function for initializing/warm starting MPP search data for each z/p/beta level for each response function | |
void | update_mpp_search_data (const Variables &vars_star, const Response &resp_star) |
convenience function for updating MPP search data for each z/p/beta level for each response function | |
void | update_level_data () |
convenience function for updating z/p/beta level data and final statistics following MPP convergence | |
void | update_pma_reliability_level () |
update requestedCDFRelLevel from prescribed probabilities or prescribed generalized reliabilities by inverting second-order integrations | |
void | update_limit_state_surrogate () |
convenience function for passing the latest variables/response data to the data fit embedded within uSpaceModel | |
void | assign_mean_data () |
update mostProbPointX/U, computedRespLevel, fnGradX/U, and fnHessX/U from ranVarMeansX/U, fnValsMeanX, fnGradsMeanX, and fnHessiansMeanX | |
void | dg_ds_eval (const RealVector &x_vars, const RealVector &fn_grad_x, RealVector &final_stat_grad) |
convenience function for evaluating dg/ds | |
Real | probability (const Real &beta, bool cdf_flag) |
Convert beta to a probability using either a first-order or second-order integration. | |
Real | reliability (const Real &p, bool cdf_flag) |
Convert probability to beta using the inverse of a first-order or second-order integration. | |
bool | reliability_residual (const Real &p, const Real &beta, const RealVector &kappa, Real &res) |
compute the residual for inversion of second-order probability corrections using Newton's method (called by reliability(p)) | |
Real | reliability_residual_derivative (const Real &p, const Real &beta, const RealVector &kappa) |
compute the residual derivative for inversion of second-order probability corrections using Newton's method (called by reliability(p)) | |
void | principal_curvatures () |
Compute the kappaU vector of principal curvatures from fnHessU. | |
Private Attributes | |
RealVector | meanStats |
means of response functions (calculated in initial_taylor_series()) | |
RealVector | stdDevStats |
std deviations of response functions (calculated in initial_taylor_series()) | |
RealVector | fnGradX |
actual x-space gradient for current function from most recent response evaluation | |
RealVector | fnGradU |
u-space gradient for current function updated from fnGradX and Jacobian dx/du | |
RealSymMatrix | fnHessX |
actual x-space Hessian for current function from most recent response evaluation | |
RealSymMatrix | fnHessU |
u-space Hessian for current function updated from fnHessX and Jacobian dx/du | |
RealVector | kappaU |
principal curvatures derived from eigenvalues of orthonormal transformation of fnHessU | |
RealVector | fnValsMeanX |
response function values evaluated at mean x | |
RealMatrix | fnGradsMeanX |
response function gradients evaluated at mean x | |
RealSymMatrixArray | fnHessiansMeanX |
response function Hessians evaluated at mean x | |
RealVector | ranVarMeansU |
vector of means for all uncertain random variables in u-space | |
RealVector | initialPtU |
initial guess for MPP search in u-space | |
RealVector | mostProbPointX |
location of MPP in x-space | |
RealVector | mostProbPointU |
location of MPP in u-space | |
RealVectorArray | prevMPPULev0 |
array of converged MPP's in u-space for level 0. Used for warm-starting initialPtU within RBDO. | |
RealMatrix | prevFnGradDLev0 |
matrix of limit state sensitivities w.r.t. inactive/design variables for level 0. Used for warm-starting initialPtU within RBDO. | |
RealMatrix | prevFnGradULev0 |
matrix of limit state sensitivities w.r.t. active/uncertain variables for level 0. Used for warm-starting initialPtU within RBDO. | |
RealVector | prevICVars |
previous design vector. Used for warm-starting initialPtU within RBDO. | |
ShortArray | prevCumASVLev0 |
accumulation (using |=) of all previous design ASV's from requested finalStatistics. Used to detect availability of prevFnGradDLev0 data for warm-starting initialPtU within RBDO. | |
bool | npsolFlag |
flag representing the optimization MPP search algorithm selection (NPSOL SQP or OPT++ NIP) | |
bool | warmStartFlag |
flag indicating the use of warm starts | |
bool | nipModeOverrideFlag |
flag indicating the use of move overrides within OPT++ NIP | |
bool | curvatureDataAvailable |
flag indicating that sufficient data (i.e., fnGradU, fnHessU, mostProbPointU) is available for computing principal curvatures | |
short | integrationOrder |
integration order (1 or 2) provided by integration specification | |
short | secondOrderIntType |
type of second-order integration: Breitung, Hohenbichler-Rackwitz, or Hong | |
Real | curvatureThresh |
cut-off value for 1/sqrt() term in second-order probability corrections. | |
short | taylorOrder |
order of Taylor series approximations (1 or 2) in MV/AMV/AMV+ derived from hessianType | |
RealMatrix | impFactor |
importance factors predicted by MV | |
int | npsolDerivLevel |
derivative level for NPSOL executions (1 = analytic grads of objective fn, 2 = analytic grads of constraints, 3 = analytic grads of both). | |
unsigned short | warningBits |
set of warnings accumulated during execution |
Class for the reliability methods within DAKOTA/UQ.
The NonDLocalReliability class implements the following reliability methods through the support of different limit state approximation and integration options: mean value (MVFOSM/MVSOSM), advanced mean value method (AMV, AMV^2) in x- or u-space, iterated advanced mean value method (AMV+, AMV^2+) in x- or u-space, two-point adaptive nonlinearity approximation (TANA) in x- or u-space, first order reliability method (FORM), and second order reliability method (SORM). All options except mean value employ an optimizer (currently NPSOL SQP or OPT++ NIP) to solve an equality-constrained optimization problem for the most probable point (MPP). The MPP search may be formulated as the reliability index approach (RIA) for mapping response levels to reliabilities/probabilities or as the performance measure approach (PMA) for performing the inverse mapping of reliability/probability levels to response levels.
void initial_taylor_series | ( | ) | [private] |
convenience function for performing the initial limit state Taylor-series approximation
An initial first- or second-order Taylor-series approximation is required for MV/AMV/AMV+/TANA or for the case where meanStats or stdDevStats (from MV) are required within finalStatistics for subIterator usage of NonDLocalReliability.
References Response::active_set_request_vector(), Iterator::activeSet, Model::component_parallel_mode(), Model::compute_response(), Model::continuous_variables(), Dakota::copy_data(), Model::current_response(), NonD::finalStatistics, NonDLocalReliability::fnGradsMeanX, NonDLocalReliability::fnHessiansMeanX, NonDLocalReliability::fnValsMeanX, Response::function_gradients(), Response::function_hessians(), Response::function_values(), Iterator::hessianType, Iterator::iteratedModel, NonDLocalReliability::meanStats, NonDReliability::mppSearchType, NonD::natafTransform, Iterator::numFunctions, NonD::numUncertainVars, ActiveSet::request_vector(), NonD::requestedGenRelLevels, NonD::requestedProbLevels, NonD::requestedRelLevels, NonD::requestedRespLevels, NonDLocalReliability::stdDevStats, Iterator::subIteratorFlag, NonDLocalReliability::taylorOrder, and NonDReliability::uSpaceModel.
Referenced by NonDLocalReliability::quantify_uncertainty().
void initialize_class_data | ( | ) | [private] |
convenience function for initializing class scope arrays
Initialize class-scope arrays and perform other start-up activities, such as evaluating median limit state responses.
References Response::active_set_derivative_vector(), NonD::finalStatistics, NonDReliability::importanceSampler, NonD::initialize_random_variables(), NonDReliability::integrationRefinement, Iterator::iterator_rep(), NonDReliability::mppModel, NonD::natafTransform, Iterator::numFunctions, NonDReliability::numRelAnalyses, NonD::numUncertainVars, NonDLocalReliability::prevCumASVLev0, NonDLocalReliability::prevFnGradDLev0, NonDLocalReliability::prevFnGradULev0, NonDLocalReliability::prevMPPULev0, NonDLocalReliability::ranVarMeansU, Iterator::subIteratorFlag, Model::update_from_subordinate_model(), and NonDLocalReliability::warmStartFlag.
Referenced by NonDLocalReliability::mpp_search().
void initialize_level_data | ( | ) | [private] |
convenience function for initializing/warm starting MPP search data for each response function prior to level 0
For a particular response function prior to the first z/p/beta level, initialize/warm-start optimizer initial guess (initialPtU), expansion point (mostProbPointX/U), and associated response data (computedRespLevel, fnGradX/U, and fnHessX/U).
References Iterator::activeSet, NonDLocalReliability::assign_mean_data(), Model::component_parallel_mode(), Model::compute_response(), NonDReliability::computedRespLevel, Model::continuous_variable_ids(), Model::continuous_variables(), Dakota::copy_data(), Model::current_response(), NonDLocalReliability::curvatureDataAvailable, NonDLocalReliability::fnGradU, NonDLocalReliability::fnGradX, NonDLocalReliability::fnHessU, NonDLocalReliability::fnHessX, Response::function_gradient(), Response::function_hessians(), Response::function_values(), Model::inactive_continuous_variables(), NonDLocalReliability::initialPtU, Iterator::iteratedModel, NonDLocalReliability::mostProbPointU, NonDLocalReliability::mostProbPointX, NonDReliability::mppSearchType, NonD::natafTransform, NonDReliability::numRelAnalyses, NonD::numUncertainVars, NonDLocalReliability::prevCumASVLev0, NonDLocalReliability::prevFnGradDLev0, NonDLocalReliability::prevFnGradULev0, NonDLocalReliability::prevICVars, NonDLocalReliability::prevMPPULev0, ActiveSet::request_value(), ActiveSet::request_values(), NonD::requestedRespLevels, NonDReliability::respFnCount, Iterator::subIteratorFlag, Model::surrogate_function_indices(), NonDLocalReliability::taylorOrder, NonDLocalReliability::update_limit_state_surrogate(), NonDReliability::uSpaceModel, and NonDLocalReliability::warmStartFlag.
Referenced by NonDLocalReliability::mpp_search().
void initialize_mpp_search_data | ( | ) | [private] |
convenience function for initializing/warm starting MPP search data for each z/p/beta level for each response function
For a particular response function at a particular z/p/beta level, warm-start or reset the optimizer initial guess (initialPtU), expansion point (mostProbPointX/U), and associated response data (computedRespLevel, fnGradX/U, and fnHessX/U).
References NonDLocalReliability::assign_mean_data(), NonD::cdfFlag, NonD::computedRelLevels, NonDLocalReliability::fnGradU, NonDLocalReliability::initialPtU, NonDReliability::levelCount, NonDLocalReliability::mostProbPointU, NonDReliability::mppSearchType, NonD::numUncertainVars, NonDReliability::requestedCDFRelLevel, NonDReliability::requestedRespLevel, NonD::requestedRespLevels, NonDReliability::respFnCount, and NonDLocalReliability::warmStartFlag.
Referenced by NonDLocalReliability::mpp_search().
convenience function for updating MPP search data for each z/p/beta level for each response function
Includes case-specific logic for updating MPP search data for the AMV/AMV+/TANA/NO_APPROX methods.
References Response::active_set(), Response::active_set_request_vector(), Iterator::activeSet, NonDReliability::approxConverged, NonDReliability::approxIters, NonD::cdfFlag, Model::component_parallel_mode(), Model::compute_response(), NonDReliability::computedRelLevel, NonDReliability::computedRespLevel, Model::continuous_variable_ids(), Model::continuous_variables(), Variables::continuous_variables(), Iterator::convergenceTol, Variables::copy(), Dakota::copy_data(), Model::current_response(), Model::current_variables(), NonDLocalReliability::curvatureDataAvailable, Dakota::data_pairs, NonD::finalStatistics, NonDLocalReliability::fnGradU, NonDLocalReliability::fnGradX, NonDLocalReliability::fnHessU, NonDLocalReliability::fnHessX, Response::function_gradient(), Response::function_gradient_copy(), Response::function_hessians(), Response::function_values(), NonDLocalReliability::initialPtU, NonDLocalReliability::integrationOrder, Model::interface_id(), Iterator::iteratedModel, NonDReliability::levelCount, Dakota::lookup_by_val(), Iterator::maxIterations, NonDLocalReliability::mostProbPointU, NonDLocalReliability::mostProbPointX, NonDReliability::mppSearchType, NonD::natafTransform, Iterator::numFunctions, NonD::numNormalVars, NonD::numUncertainVars, NonDLocalReliability::reliability(), ActiveSet::request_value(), ActiveSet::request_values(), ActiveSet::request_vector(), NonDReliability::requestedCDFProbLevel, NonDReliability::requestedCDFRelLevel, NonD::requestedProbLevels, NonD::requestedRelLevels, NonDReliability::requestedRespLevel, NonD::requestedRespLevels, NonDReliability::respFnCount, NonDReliability::statCount, NonDLocalReliability::taylorOrder, NonDLocalReliability::update_limit_state_surrogate(), NonDReliability::uSpaceModel, NonDLocalReliability::warmStartFlag, and NonDLocalReliability::warningBits.
Referenced by NonDLocalReliability::mpp_search().
void update_level_data | ( | ) | [private] |
convenience function for updating z/p/beta level data and final statistics following MPP convergence
Updates computedRespLevels/computedProbLevels/computedRelLevels, finalStatistics, warm start, and graphics data.
References Dakota::abort_handler(), Response::active_set_derivative_vector(), Response::active_set_request_vector(), Graphics::add_datapoint(), NonD::cdfFlag, NonD::computedGenRelLevels, NonD::computedProbLevels, NonDReliability::computedRelLevel, NonD::computedRelLevels, NonDReliability::computedRespLevel, NonD::computedRespLevels, NonDLocalReliability::curvatureThresh, Dakota::dakota_graphics, NonDLocalReliability::dg_ds_eval(), NonD::finalStatistics, NonDLocalReliability::fnGradU, NonDLocalReliability::fnGradX, Response::function_gradient(), Response::function_value(), NonDLocalReliability::integrationOrder, NonDLocalReliability::kappaU, NonDReliability::levelCount, NonDLocalReliability::mostProbPointU, NonDLocalReliability::mostProbPointX, Graphics::new_dataset(), Iterator::numFunctions, NonD::numUncertainVars, NonDLocalReliability::prevCumASVLev0, NonDLocalReliability::prevFnGradDLev0, NonDLocalReliability::prevFnGradULev0, NonDLocalReliability::prevMPPULev0, NonDLocalReliability::probability(), NonD::requestedGenRelLevels, NonD::requestedProbLevels, NonD::requestedRelLevels, NonD::requestedRespLevels, NonDReliability::respFnCount, NonD::respLevelTarget, NonDLocalReliability::secondOrderIntType, NonDReliability::statCount, Iterator::subIteratorFlag, NonDLocalReliability::warmStartFlag, and NonDLocalReliability::warningBits.
Referenced by NonDLocalReliability::mpp_search().
void update_pma_reliability_level | ( | ) | [private, virtual] |
update requestedCDFRelLevel from prescribed probabilities or prescribed generalized reliabilities by inverting second-order integrations
For PMA SORM with prescribed p-level or prescribed generalized beta-level, requestedCDFRelLevel must be updated. This virtual function redefinition is called from NonDReliability::PMA_constraint_eval().
Reimplemented from NonDReliability.
References Variables::continuous_variables(), Dakota::copy_data(), Model::current_response(), Model::current_variables(), NonDLocalReliability::curvatureDataAvailable, NonDLocalReliability::fnGradU, NonDLocalReliability::fnHessU, Response::function_gradient(), Response::function_hessians(), NonDLocalReliability::integrationOrder, NonDReliability::levelCount, NonDLocalReliability::mostProbPointU, NonDReliability::mppSearchType, NonDLocalReliability::reliability(), NonDReliability::requestedCDFProbLevel, NonDReliability::requestedCDFRelLevel, NonD::requestedProbLevels, NonD::requestedRelLevels, NonD::requestedRespLevels, NonDReliability::respFnCount, and NonDReliability::uSpaceModel.
void dg_ds_eval | ( | const RealVector & | x_vars, |
const RealVector & | fn_grad_x, | ||
RealVector & | final_stat_grad | ||
) | [private] |
convenience function for evaluating dg/ds
Computes dg/ds where s = design variables. Supports potentially overlapping cases of design variable augmentation and insertion.
References Response::active_set_derivative_vector(), Iterator::activeSet, Model::all_continuous_variable_ids(), Model::component_parallel_mode(), Model::compute_response(), Dakota::contains(), Model::continuous_variable_ids(), Model::continuous_variables(), Dakota::copy_data(), Model::current_response(), ActiveSet::derivative_vector(), NonD::finalStatistics, Response::function_gradient(), Response::function_gradients(), Model::inactive_continuous_variable_ids(), Iterator::iteratedModel, NonDReliability::mppSearchType, NonD::natafTransform, Iterator::primaryACVarMapIndices, ActiveSet::request_value(), ActiveSet::request_values(), NonDReliability::respFnCount, Iterator::secondaryACVarMapTargets, and NonDReliability::uSpaceModel.
Referenced by NonDLocalReliability::mean_value(), NonDLocalReliability::mpp_search(), and NonDLocalReliability::update_level_data().
Real probability | ( | const Real & | beta, |
bool | cdf_flag | ||
) | [private] |
Convert beta to a probability using either a first-order or second-order integration.
Converts beta into a probability using either first-order (FORM) or second-order (SORM) integration. The SORM calculation first calculates the principal curvatures at the MPP (using the approach in Ch. 8 of Haldar & Mahadevan), and then applies correction formulations from the literature (Breitung, Hohenbichler-Rackwitz, or Hong).
References NonDLocalReliability::curvatureDataAvailable, NonDLocalReliability::curvatureThresh, NonDAdaptImpSampling::get_probability(), NonDReliability::importanceSampler, NonDAdaptImpSampling::initialize(), NonDLocalReliability::integrationOrder, NonDReliability::integrationRefinement, Iterator::iterator_rep(), NonDLocalReliability::kappaU, NonDLocalReliability::mostProbPointU, NonD::numUncertainVars, NonDLocalReliability::principal_curvatures(), NonDReliability::requestedRespLevel, NonDReliability::respFnCount, Iterator::run_iterator(), NonDLocalReliability::secondOrderIntType, and NonDLocalReliability::warningBits.
Referenced by NonDLocalReliability::mean_value(), and NonDLocalReliability::update_level_data().
Real reliability | ( | const Real & | p, |
bool | cdf_flag | ||
) | [private] |
Convert probability to beta using the inverse of a first-order or second-order integration.
Converts a probability into a reliability using the inverse of the first-order or second-order integrations implemented in NonDLocalReliability::probability().
References Iterator::convergenceTol, NonDLocalReliability::curvatureDataAvailable, NonDLocalReliability::integrationOrder, NonDLocalReliability::kappaU, NonDLocalReliability::principal_curvatures(), NonDLocalReliability::reliability_residual(), NonDLocalReliability::reliability_residual_derivative(), and NonDLocalReliability::warningBits.
Referenced by NonDLocalReliability::mean_value(), NonDLocalReliability::mpp_search(), NonDLocalReliability::update_mpp_search_data(), and NonDLocalReliability::update_pma_reliability_level().