Subset Simulation

In the subset simulation method [13] the probability of failure \(P_f\) is approximated by a product of probabilities of more frequent events. That is, the failure event \(G = \{\textbf{X} \in \mathbb{R}^n:g(\textbf{X}) \leq 0\}\), is expressed as the of union of M nested intermediate events \(G_1,G_2,\cdots,G_M\) such that \(G_1 \supset G_2 \supset \cdots \supset G_M\), and \(G = \cap_{i=1}^{M} G_i\). The intermediate failure events are defined as \(G_i=\{g(\textbf{X})\le b_i\}\), where \(b_1>b_2>\cdots>b_M=0\) are non-negative thresholds selected such that each conditional probability \(P(G_{i+1} | G_{i}),\ i=1,2,\cdots,M-1\) equals a target probability value \(p_0\). The probability of failure \(P_f\) is estimated as:

\[P_f = P\left(\bigcap_{i=1}^M G_i\right) = P(G_1)\prod_{i=1}^{M-1} P(G_{i+1} | G_{i})\]

where the probability \(P(G_1)\) is computed through Monte Carlo simulations. In order to estimate the conditional probabilities \(P(G_{i+1}|G_i),~i=1,2,\cdots,M-1\) generation of Markov Chain Monte Carlo (MCMC) samples from the conditional pdf \(p_{\textbf{X}}(\textbf{x}|G_i)\) is required. In the context of subset simulation, the Markov chains are constructed through a two-step acceptance/rejection criterion. Starting from a Markov chain state \(\textbf{X}\) and a proposal distribution \(q(\cdot|\textbf{X})\), a candidate sample \(\textbf{W}\) is generated. In the first stage, the sample \(\textbf{W}\) is accepted/rejected with probability

\[\alpha=\min\bigg\{1, \frac{p_\textbf{X}(\textbf{w})q(\textbf{x}|\textbf{W})}{p_\textbf{X}(\textbf{x})q(\textbf{w}|\textbf{X})}\bigg\}\]

and in the second stage is accepted/rejected based on whether the sample belongs to the failure region \(G_i\). SubsetSimulation can be used with any of the available (or custom) MCMC classes in the Sampling module.

The SubsetSimulation class is imported using the following command:

>>> from UQpy.reliability.SubsetSimulation import SubsetSimulation

Methods

class SubsetSimulation(runmodel_object, sampling, samples_init=None, conditional_probability=0.1, nsamples_per_subset=1000, max_level=10)[source]

Perform Subset Simulation to estimate probability of failure.

This class estimates probability of failure for a user-defined model using Subset Simulation. The class can use one of several MCMC algorithms to draw conditional samples.

Parameters:
  • runmodel_object (RunModel) – The computational model. It should be of type RunModel.

  • sampling (MCMC) – Specifies the MCMC algorithm.

  • samples_init (Optional[ndarray]) – A set of samples from the specified probability distribution. These are the samples from the original distribution. They are not conditional samples. The samples must be an array of size samples_number_per_subset x dimension. If samples_init is not specified, the SubsetSimulation class will use the MCMC class created with the aid of sampling to draw the initial samples.

  • conditional_probability (Union[float, int]) – Conditional probability for each conditional level. Default: \(0.1\)

  • nsamples_per_subset (int) – Number of samples to draw in each conditional level. Default: \(1000\)

  • max_level (int) – Maximum number of allowable conditional levels. Default: \(10\)

Attributes

SubsetSimulation.dependent_chains_CoV: float

Coefficient of variation of the probability of failure estimate with dependent chains.

SubsetSimulation.failure_probability: float

Probability of failure estimate.

SubsetSimulation.independent_chains_CoV: float

Coefficient of variation of the probability of failure estimate assuming independent chains.

SubsetSimulation.performance_function_per_level: list

A list of arrays containing the evaluation of the performance function at each sample in each conditional level. The size of the list is equal to the number of levels.

SubsetSimulation.performance_threshold_per_level: list

Threshold value of the performance function for each conditional level. The size of the list is equal to the number of levels.

SubsetSimulation.samples: list

A list of arrays containing the samples in each conditional level. The size of the list is equal to the number of levels.

Examples