FORM
In FORM [15], the performance function is linearized according to
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
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:
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 theTaylorSeries
class.- Parameters:
distributions (
Union
[None
,Distribution
,list
[Distribution
]]) – Marginal probability distributions of each random variable. Must be an object of typeDistributionContinuous1D
orJointIndependent
.runmodel_object (
RunModel
) – The computational model. It should be of typeRunModel
.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 therun()
method will be executed automatically. Otherwise, the therun()
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 therun()
method will be executed automatically. Otherwise, the therun()
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.error_record:
list
Record of the error defined by criteria \(\text{tolerance}_\textbf{U}, \text{tolerance}_\beta, \text{tolerance}_{\nabla G(\textbf{U})}\).