First-Order Reliability Methods

Mean-Centered First-Order Second-Moment Method

The MCFOSM method is the simplest and least computationally expensive type of reliability method. It utilizes the first-order Taylor expansion of the limit state function $g(\vec{X})$ at the mean values and the first two moments of the marginal random variables involved in the reliability problem to evaluate the reliability index. However, despite the fact that it is simple and does not require the complete knowledge of the random variables involved in the reliability problem, the MCFOSM method faces an issue known as the invariance problem. This problem arises because the resulting reliability index $\beta$ is dependent on the formulation of the limit state function $g(\vec{X})$. In other words, two equivalent limit state functions with the same failure boundaries produce two different reliability indices; thus, the use of MCFOSM method is not recommended.

Rackwitz-Fiessler Method

The RF method, also known as the Equivalent Normal method, is an efficient way to solve reliability problems involving strictly uncorrelated random variables. The RF method overcomes the invariance problem faced by the MCFOSM method by using the first-order Taylor expansion of the limit state function at a point known as the design point $\vec{x}^{*}$ that lies on the failure boundary given by $g(\vec{X}) = 0$. Since the design point $\vec{x}^{*}$ is not known a priori, the RF method is inherently an iterative method. At each iteration, the RF method replaces the original random variables with equivalent normal random variables, which allows for a direct transformation from the original non-normal space into the standard normal space in which the reliability index $\beta$ is calculated.

Plain and Improved Hasofer-Lind-Rackwitz-Fiessler Method

The HLRF method is the most accepted and efficient way to solve reliability problems involving both uncorrelated and correlated random variables. The HLRF method also overcomes the invariance problem faced by the MCFOSM method by using the first-order Taylor expansion of the limit state function at the design point $\vec{x}^{*}$. Again, since the design point $\vec{x}^{*}$ is not known a priori, the HLRF method is inherently an iterative method. At each iteration, the HLRF method performs Nataf Transformation to transformation from the original non-normal space into the standard normal space in which the reliability index $\beta$ is calculated. Fortuna.jl package implements two versions of HLRF method: plain HLRF method where the step size $\lamba$ in the negative gradient descent is always set to unity and improved HLRF (iHLRF) method where the step size $\lamba$ is determined using a line search algorithm.

API

Fortuna.solveMethod
solve(Problem::ReliabilityProblem, AnalysisMethod::FORM; diff::Symbol = :automatic)

Function used to solve reliability problems using First-Order Reliability Method (FORM).
If diff is:

  • :automatic, then the function will use automatic differentiation to compute gradients, jacobians, etc.
  • :numeric, then the function will use numeric differentiation to compute gradients, jacobians, etc.
Fortuna.FORMType
FORM <: AbstractReliabililyAnalysisMethod

Type used to perform reliability analysis using First-Order Reliability Method (FORM).

  • Submethod::Fortuna.FORMSubmethod
Fortuna.MCFOSMType
MCFOSM <: FORMSubmethod

Type used to perform reliability analysis using Mean-Centered First-Order Second-Moment (MCFOSM) method.

Fortuna.MCFOSMCacheType
MCFOSMCache

Type used to store results of reliability analysis performed using Mean-Centered First-Order Second-Moment (MCFOSM) method.

  • β::Float64: Reliability index $\beta$
Fortuna.HLRFType
HLRF <: FORMSubmethod

Type used to perform reliability analysis using Hasofer-Lind Rackwitz-Fiessler (HLRF) method.

  • MaxNumIterations::Integer: Maximum number of iterations

  • ϵ₁::Real: Convergance criterion #1 $\epsilon_{1}$

  • ϵ₂::Real: Convergance criterion #1 $\epsilon_{2}$

  • x₀::Union{Nothing, Vector{<:Real}}: Starting point $x_{0}$

Fortuna.HLRFCacheType
HLRFCache

Type used to store results of reliability analysis performed using Hasofer-Lind Rackwitz-Fiessler (HLRF) method.

  • β::Float64: Reliability index $\beta$

  • PoF::Float64: Probability of failure $P_{f}$

  • x::Matrix{Float64}: Design points in X-space at each iteration $\vec{x}_{i}^{*}$

  • u::Matrix{Float64}: Design points in U-space at each iteration $\vec{u}_{i}^{*}$

  • G::Vector{Float64}: Limit state function at each iteration $G(\vec{u}_{i}^{*})$

  • ∇G::Matrix{Float64}: Gradient of the limit state function at each iteration $\nabla G(\vec{u}_{i}^{*})$

  • α::Matrix{Float64}: Normalized negative gradient of the limit state function at each iteration $\vec{\alpha}_{i}$

  • d::Matrix{Float64}: Search direction at each iteration $\vec{d}_{i}$

  • γ::Vector{Float64}: Importance vector $\vec{\gamma}$

  • Convergance::Bool: Convergance status

Fortuna.iHLRFType
iHLRF <: FORMSubmethod

Type used to perform reliability analysis using improved Hasofer-Lind Rackwitz-Fiessler (iHLRF) method.

  • MaxNumIterations::Integer: Maximum number of iterations

  • ϵ₁::Real: Convergance criterion #1 $\epsilon_{1}$

  • ϵ₂::Real: Convergance criterion #1 $\epsilon_{2}$

  • x₀::Union{Nothing, Vector{<:Real}}: Starting point $x_{0}$

  • c₀::Union{Nothing, Real}: c-coefficient applied at each iteration $c_{0}$

Fortuna.iHLRFCacheType
iHLRFCache

Type used to store results of reliability analysis performed using improved Hasofer-Lind Rackwitz-Fiessler (iHLRF) method.

  • β::Float64: Reliability index $\beta$

  • PoF::Float64: Probability of failure $P_{f}$

  • x::Matrix{Float64}: Design points in X-space at each iteration $\vec{x}_{i}^{*}$

  • u::Matrix{Float64}: Design points in U-space at each iteration $\vec{u}_{i}^{*}$

  • G::Vector{Float64}: Limit state function at each iteration $G(\vec{u}_{i}^{*})$

  • ∇G::Matrix{Float64}: Gradient of the limit state function at each iteration $\nabla G(\vec{u}_{i}^{*})$

  • α::Matrix{Float64}: Normalized negative gradient of the limit state function at each iteration $\vec{\alpha}_{i}$

  • d::Matrix{Float64}: Search direction at each iteration $\vec{d}_{i}$

  • c::Vector{Float64}: c-coefficient at each iteration $c_{i}$

  • m::Vector{Float64}: Merit function at each iteration $m_{i}$

  • λ::Vector{Float64}: Step size at each iteration $\lambda_{i}$

  • γ::Vector{Float64}: Importance vector $\vec{\gamma}$

  • Convergance::Bool: Convergance status