Default Configurations

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 dimensionEnsemble 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
for the `Unscented` process

The UKI method always creates an ensemble size proportional to $\mathrm{dim}(\theta)$. It is not configurable by the user.

Quick links!

  • What does scheduler = ... do? See here.
  • What does localization_method = ... do? See here.
  • What does failure_handler_method = ... do? See here for EKI variants and here for UKI specifically.
  • What does accelerator = ... do? [Docs coming soon...] See our accelerator examples to play with the acceleration methods.

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.

Recommended process

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 <: 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()

"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
)
Note

You will need to call the Localizers module via

using EnsembleKalmanProcesses.Localizers

to get the localization_method structures