Default Configurations
Recommended Ensemble Size
The ensemble size is generally not determinable in advance. However there are several rules of thumb for calibrating a parameter vector $\theta$ that can be used as a starting point.
Parameter dimension | Ensemble size |
---|---|
$\mathrm{dim}(\theta)\leq 10$ | $N_{\mathrm{ens}} \geq 10 \cdot \mathrm{dim}(\theta)$ |
$10 \leq \mathrm{dim}(\theta)\leq 100$ | $N_{\mathrm{ens}} = 100$ |
$100\leq \mathrm{dim}(\theta)$ | $N_{\mathrm{ens}} = 100$ and SEC |
Quick links!
- What does
scheduler = ...
do? See here. - What does
localization_method = ...
do? See here. and our example - What does
failure_handler_method = ...
do? See here - What does
accelerator = ...
do? See here, and our examples
Prebuilt defaults
Defaults have been chosen for the methodology based on prior experience. The configurations can be revealed by adding the keyword
EnsembleKalmanProcess(..., verbose = true)
To use the defaults, one constructs an Ensemble Kalman Process with
EnsembleKalmanProcess(initial_parameters, observation, process)
and the following configurations (listed below) will be automatically created depending on the process
type chosen, they are listed as keyword arguments that will be automatically added into EnsembleKalmanProcess()
on creation.
For the simplest and most flexible update we recommend the Inversion()
process.
EnsembleKalmanProcess(initial_parameters, observation, Inversion())
Please see the relevant documentation pages for each configurable if you wish to modify them.
process <: Inversion
Process documentation here
scheduler = DataMisfitController(terminate_at = 1)
localization_method = Localizers.SECNice()
failure_handler_method = SampleSuccGauss()
accelerator = NesterovAccelerator()
process <: TransformInversion
Process documentation here
scheduler = DataMisfitController(terminate_at = 1)
localization_method = Localizers.NoLocalization()
failure_handler_method = SampleSuccGauss()
accelerator = DefaultAccelerator()
process <: SparseInversion
Process documentation here
scheduler = DefaultScheduler()
localization_method = Localizers.SECNice()
failure_handler_method = SampleSuccGauss()
accelerator = DefaultAccelerator()
process <: GaussNewtonInversion
Process documentation here
scheduler = DataMisfitController(terminate_at = 1)
localization_method = Localizers.SECNice()
failure_handler_method = SampleSuccGauss()
accelerator = NesterovAccelerator()
process <: Sampler
Process documentation here
scheduler = EKSStableScheduler(1.0, eps())
localization_method = Localizers.NoLocalization()
failure_handler_method = IgnoreFailures()
accelerator = DefaultAccelerator()
process <: Unscented
Process documentation here
scheduler = DataMisfitController(terminate_at = 1)
localization_method = Localizers.NoLocalization()
failure_handler_method = SampleSuccGauss()
accelerator = DefaultAccelerator()
process <: TransformUnscented
Process documentation here
scheduler = DataMisfitController(terminate_at = 1)
localization_method = Localizers.NoLocalization()
failure_handler_method = SampleSuccGauss()
accelerator = DefaultAccelerator()
"Vanilla" settings: How to turn off features
As the defaults now implement recent features. The following snippet shows how one can use keyword arguments to construct an EKP with no additional features or variants.
EnsembleKalmanProcess(
initial_parameters,
observation,
process,
scheduler = DefaultScheduler(1), # constant timestep size 1
localization_method = Localizers.NoLocalization(), # no localization
failure_handler_method = IgnoreFailures(), # no failure handling
accelerator = DefaultAccelerator(), # no acceleration
)