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.solve
— Methodsolve(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.FORM
— TypeFORM <: AbstractReliabililyAnalysisMethod
Type used to perform reliability analysis using First-Order Reliability Method (FORM).
Submethod::Fortuna.FORMSubmethod
Fortuna.MCFOSM
— TypeMCFOSM <: FORMSubmethod
Type used to perform reliability analysis using Mean-Centered First-Order Second-Moment (MCFOSM) method.
Fortuna.MCFOSMCache
— TypeMCFOSMCache
Type used to store results of reliability analysis performed using Mean-Centered First-Order Second-Moment (MCFOSM) method.
β::Float64
: Reliability index $\beta$
Fortuna.HLRF
— TypeHLRF <: 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.HLRFCache
— TypeHLRFCache
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.iHLRF
— TypeiHLRF <: 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.iHLRFCache
— TypeiHLRFCache
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