Sparse Ensemble Kalman Inversion
EnsembleKalmanProcesses.SparseInversion — Type
A sparse ensemble Kalman Inversion process.
struct SparseInversion{FT<:AbstractFloat} <: EnsembleKalmanProcesses.ProcessFields
γ::AbstractFloat: upper limit of l1-normthreshold_value::AbstractFloat: threshold below which the norm of parameters is pruned to zerouc_idx::Union{Colon, AbstractVector}: indices of parameters included in the evaluation of l1-norm constraintreg::AbstractFloat: a small regularization value to enhance robustness of convex optimization
Constructors
SparseInversion(; γ, threshold_value, uc_idx, reg)SparseInversion(γ, threshold_value, uc_idx, reg)SparseInversion(γ; threshold_value, uc_idx, reg)EnsembleKalmanProcesses.sparse_eki_update — Function
sparse_eki_update(
ekp::EnsembleKalmanProcess{FT<:Real, IT, SparseInversion{FT<:Real}},
u::AbstractArray{FT<:Real, 2},
g::AbstractArray{FT<:Real, 2},
y::AbstractArray{FT<:Real, 2},
obs_noise_cov::Union{AbstractArray{CT<:Real, 2}, LinearAlgebra.UniformScaling{CT<:Real}}
) -> Any
Return the sparse updated parameter vectors given their current values and the corresponding forward model evaluations, using the inversion algorithm from eqns. (3.7) and (3.14) of Schneider et al. (2021).
Localization is applied following Tong and Morzfeld (2022).
EnsembleKalmanProcesses.sparse_qp — Function
sparse_qp(
ekp::EnsembleKalmanProcess{FT, IT, SparseInversion{FT}},
v_j::Array{FT, 1},
cov_vv_inv::AbstractArray{FT, 2},
H_u::AbstractArray{FT, 2},
H_g::AbstractArray{FT, 2},
y_j::Array{FT, 1};
H_uc
) -> Any
Solve the per-ensemble-member quadratic programme with ℓ₁-norm sparsity constraint and return the updated parameter vector for ensemble member j.