enrml⚓︎
EnRML type schemes
co_lm_enrml
⚓︎
Bases: lmenrmlMixIn
, approx_update
This is the implementation of the approximative LM-EnRML algorithm as described in chen2013
.
This algorithm is quite similar to the lm_enrml as provided above, and will therefore inherit most of its methods. We only change the calc_analysis part...
% Copyright © 2019-2022 NORCE, All Rights Reserved. 4DSEIS
__init__(keys_da)
⚓︎
The class is initialized by passing the PIPT init. file upwards in the hierarchy to be read and parsed in
pipt.input_output.pipt_init.ReadInitFile
.
gn_enrml
⚓︎
Bases: lmenrmlMixIn
This is the implementation of the stochastig IES as described in raanes2019
.
More information about the method is found in evensen2019
.
This implementation is the Gauss-Newton version.
This algorithm is quite similar to the lm_enrml
as provided above, and will therefore inherit most of its methods.
We only change the calc_analysis part...
__init__(keys_da)
⚓︎
The class is initialized by passing the PIPT init. file upwards in the hierarchy to be read and parsed in
pipt.input_output.pipt_init.ReadInitFile
.
calc_analysis()
⚓︎
Changelog
- KF 25/2-20
check_convergence()
⚓︎
Check if GN-EnRML have converged based on evaluation of change sizes of objective function, state and damping parameter. Very similar to original function, but exit if there is no reduction in obj. function.
Returns:
Name | Type | Description |
---|---|---|
conv |
bool
|
Logic variable indicating if the algorithm has converged. |
status |
bool
|
Indicates whether the objective function has reduced. |
why_stop |
dict
|
Dictionary with keys corresponding to convergence criteria, with logical variables indicating which of them has been met. |
Changelog
- ST 3/6-16
- ST 6/6-16: Added LM damping param. check
- KF 16/11-20: Modified for GN-EnRML
- KF 10/3-21: Output whether the method reduced the objective function
gnenrmlMixIn
⚓︎
Bases: Ensemble
This is an implementation of EnRML using the Gauss-Newton approach. The update scheme is selected by a MixIn with multiple update_methods_ns. This class must therefore facititate many different update schemes.
__init__(keys_da, keys_fwd, sim)
⚓︎
The class is initialized by passing the PIPT init. file upwards in the hierarchy to be read and parsed in
pipt.input_output.pipt_init.ReadInitFile
.
calc_analysis()
⚓︎
Calculate the update step in LM-EnRML, which is just the Levenberg-Marquardt update algorithm with the sensitivity matrix approximated by the ensemble.
check_convergence()
⚓︎
Check if LM-EnRML have converged based on evaluation of change sizes of objective function, state and damping parameter.
Returns:
Name | Type | Description |
---|---|---|
conv |
bool
|
Logic variable telling if algorithm has converged |
why_stop |
dict
|
Dict. with keys corresponding to conv. criteria, with logical variable telling which of them that has been met |
gnenrml_margis
⚓︎
Bases: gnenrmlMixIn
, margIS_update
The marg-IS scheme is currently not available in this version of PIPT. To utilize the scheme you have to import the margIS_update class from a standalone repository.
lmenrmlMixIn
⚓︎
Bases: Ensemble
This is an implementation of EnRML using Levenberg-Marquardt. The update scheme is selected by a MixIn with multiple update_methods_ns. This class must therefore facititate many different update schemes.
__init__(keys_da, keys_fwd, sim)
⚓︎
The class is initialized by passing the PIPT init. file upwards in the hierarchy to be read and parsed in
pipt.input_output.pipt_init.ReadInitFile
.
calc_analysis()
⚓︎
Calculate the update step in LM-EnRML, which is just the Levenberg-Marquardt update algorithm with the sensitivity matrix approximated by the ensemble.
check_convergence()
⚓︎
Check if LM-EnRML have converged based on evaluation of change sizes of objective function, state and damping parameter.
Returns:
Name | Type | Description |
---|---|---|
conv |
bool
|
Logic variable telling if algorithm has converged |
why_stop |
dict
|
Dict. with keys corresponding to conv. criteria, with logical variable telling which of them that has been met |