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 theTaylorSeriesclass.- Parameters:
distributions (
Union[None,Distribution,list[Distribution]]) – Marginal probability distributions of each random variable. Must be an object of typeDistributionContinuous1DorJointIndependent.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_uof 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_betaof 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_gradientof the HLRF algorithm. Default: \(1.0e-3\)
- By default, all three tolerances must be satisfied for convergence.
Specifying a tolerance as
Nonewill 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})}\).