SORM

In SORM [15] the performance function is approximated by a second-order Taylor series around the design point according to

\[G(\textbf{U}) = G(\textbf{U}^\star) + \nabla G(\textbf{U}^\star)(\textbf{U}-\textbf{U}^\star)^\intercal + \frac{1}{2}(\textbf{U}-\textbf{U}^\star)\textbf{H}(\textbf{U}-\textbf{U}^\star)(\textbf{U}-\textbf{U}^\star)^T\]

where \(\textbf{H}\) is the Hessian matrix of the second derivatives of \(G(\textbf{U})\) evaluated at \(\textbf{U}^*\). After the design point \(\textbf{U}^*\) is identified and the probability of failure \(P_{f, \text{form}}\) is calculated with FORM a correction is made according to

\[P_{f, \text{sorm}} = \Phi(-\beta_{HL}) \prod_{i=1}^{n-1} (1+\beta_{HL}\kappa_i)^{-\frac{1}{2}}\]

where \(\kappa_i\) is the i-th curvature.

The SORM class is imported using the following command:

>>> from UQpy.reliability.taylor_series.SORM import SORM

Methods

class SORM(form_object, df_step=0.01)[source]

SORM is a child class of the TaylorSeries class. Input: The SORM class requires an object of type FORM as input.

Parameters:
  • form_object (FORM) – Object of type FORM

  • df_step (Union[float, int]) – Finite difference step in standard normal space. Default: \(0.01\)

classmethod build_from_first_order(cls, distributions, runmodel_object, seed_x=None, seed_u=None, df_step=0.01, corr_x=None, corr_z=None, n_iterations=100, tolerance_u=None, tolerance_beta=None, tolerance_gradient=None)[source]
Parameters:
  • distributions (Union[None, Distribution, list[Distribution]]) – Marginal probability distributions of each random variable. Must be an object of type DistributionContinuous1D or JointIndependent.

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

  • seed_x (Union[ndarray, list, None]) – The initial starting point for the Hasofer-Lind algorithm. Either seed_u or seed_x must be provided. If seed_u is provided, it should be a point in the uncorrelated standard normal space of U. If seed_x is provided, it should be a point in the parameter space of X.

  • seed_u (Union[ndarray, list, None]) – Either seed_u or seed_x must be provided. If seed_u is provided, it should be a point in the uncorrelated standard normal space of U. If seed_x is provided, it should be a point in the parameter space of X.

  • df_step (Union[int, float]) – Finite difference step in standard normal space. Default: \(0.01\)

  • corr_x (Union[ndarray, list, None]) – Covariance matrix If corr_x is provided, it is the correlation matrix (\(\mathbf{C_X}\)) of the random vector X .

  • corr_z (Union[ndarray, list, None]) – Covariance matrix If corr_z is provided, it is the correlation matrix (\(\mathbf{C_Z}\)) of the standard normal random vector Z . Default: corr_z is specified as the identity matrix. Default: corr_z is specified as the identity matrix.

  • n_iterations (int) – Maximum number of iterations for the HLRF algorithm. Default: \(100\)

  • tolerance_u (Union[float, int, None]) – Convergence threshold for criterion \(||\mathbf{U}^{k} - \mathbf{U}^{k-1}||_2 \leq\) tolerance_u of the HLRF algorithm. Default: \(1.0e-3\)

  • tolerance_beta (Union[float, int, None]) – Convergence threshold for criterion \(||\beta_{HL}^{k}-\beta_{HL}^{k-1}||_2 \leq\) tolerance_beta of the HLRF algorithm. Default: \(1.0e-3\)

  • tolerance_gradient (Union[float, int, None]) – Convergence threshold for criterion \(||\nabla G(\mathbf{U}^{k})- \nabla G(\mathbf{U}^{k-1})||_2 \leq\) tolerance_gradient of the HLRF algorithm. Default: \(1.0e-3\)

Any number of tolerances can be provided. Only the provided tolerances will be considered for the convergence of the algorithm. In case none of the tolerances are provided then they are considered equal to \(1e-3\) and all are checked for the convergence.

Attributes

SORM.beta_second_order: list

Hasofer-Lind reliability index using the SORM method.

SORM.failure_probability: float

FORM probability of failure \(\Phi(-\beta_{HL}) \prod_{i=1}^{n-1} (1+\beta_{HL}\kappa_i)^{-\frac{1}{2}}\).

Examples