FORM

In FORM [15], the performance function is linearized according to

\[G(\textbf{U}) \approx G(\textbf{U}^\star) + \nabla G(\textbf{U}^\star)(\textbf{U}-\textbf{U}^\star)^\intercal\]

where \(\textbf{U}^\star\) is the expansion point, \(G(\textbf{U})\) is the performance function evaluated in the standard normal space and \(\nabla G(\textbf{U}^\star)\) is the gradient of \(G(\textbf{U})\) evaluated at \(\textbf{U}^\star\). The probability failure can be calculated by

\[P_{f, \text{form}} = \Phi(-\beta_{HL})\]

where \(\Phi(\cdot)\) is the standard normal cumulative distribution function and \(\beta_{HL}=||\textbf{U}^*||\) is the norm of the design point known as the Hasofer-Lind reliability index calculated with the iterative Hasofer-Lind-Rackwitz-Fiessler (HLRF) algorithm. The convergence criteria used for HLRF algorithm are:

\[\text{tolerance}_{\textbf{U}}:\ ||\textbf{U}^{k} - \textbf{U}^{k-1}||_2 \leq 10^{-3}\]
\[\text{tolerance}_\beta:\ ||\beta_{HL}^{k} - \beta_{HL}^{k-1}||_2 \leq 10^{-3}\]
\[\text{tolerance}_{\nabla G(\textbf{U})}:\ ||\nabla G(\textbf{U}^{k})- \nabla G(\textbf{U}^{k-1})||_2 \leq 10^{-3}\]

The FORM class is imported using the following command:

>>> from UQpy.reliability.taylor_series.FORM import FORM

Methods

class FORM(distributions, runmodel_object, seed_x=None, seed_u=None, df_step=0.01, corr_x=None, corr_z=None, n_iterations=100, tolerance_u=0.001, tolerance_beta=0.001, tolerance_gradient=0.001)[source]

A class perform the First Order reliability Method. Each time run() is called the results are appended. This is a child class of the TaylorSeries class.

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 in the parameter space X for the Hasofer-Lind algorithm. Either seed_u or seed_x must be provided. If either seed_u or seed_x is provided, then the run() method will be executed automatically. Otherwise, the the run() method must be executed by the user.

  • seed_u (Union[ndarray, list, None]) – The initial starting point in the uncorrelated standard normal space U for the Hasofer-Lind algorithm. Either seed_u or seed_x must be provided. Default: seed_u = (0, 0, ..., 0) If either seed_u or seed_x is provided, then the run() method will be executed automatically. Otherwise, the the run() method must be executed by the user.

  • 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.

  • 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\)

By default, all three tolerances must be satisfied for convergence.

Specifying a tolerance as None will ignore that criteria.

run(seed_x=None, seed_u=None)[source]

Runs FORM.

Parameters:
  • 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.

  • 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.

Attributes

FORM.alpha: float

Direction cosine.

FORM.alpha_record: list

Record of the alpha (directional cosine).

FORM.beta: list

Hasofer-Lind reliability index.

FORM.beta_record: list

Record of all Hasofer-Lind reliability index values.

FORM.design_point_u: list

Design point in the uncorrelated standard normal space U.

FORM.design_point_x: list

Design point in the parameter space X.

FORM.error_record: list

Record of the error defined by criteria \(\text{tolerance}_\textbf{U}, \text{tolerance}_\beta, \text{tolerance}_{\nabla G(\textbf{U})}\).

FORM.failure_probability: list

FORM probability of failure \(\Phi(-\beta)\).

FORM.iterations: list

Number of model evaluations.

FORM.state_function_record: list

Record of the performance function.

FORM.state_function_gradient_record: list

Record of the model’s gradient in the standard normal space.

FORM.u_record: list

Record of all iteration points in the standard normal space U.

FORM.x_record: list

Record of all iteration points in the parameter space X.

Examples