AffineInvariantDES (AffineInvariantDifferential)

Perform Affine Invariant Ensemble MCMC with differential sampler.

Overview

The proposeSamples function from the PMCMCBase parent class is overridden. This proposal is the differential evolution move proposed in Braak (2006) which defines an implicit probability distribution from the accepted samples in the previous step and draws samples from it. Note that the AffineInvariantDES will also infer the variance term (i.e., the model inadequacy plus experimental noise uncertainty) if the associated prior is specified. If lower and upper bounds to the parameters are specified, the proposals are passed through a rejection sampling until specified bounds across all the parameter dimensions are satisfied. Specifically, the new pthp^{\text{th}} parallel proposal is given by:

Syp=Sy1p+γ (Sy1r1Sy1r2)+ν \mathcal{S}_{y^p} = \mathcal{S}_{y^{p}_{-1}} + \gamma ~(\mathcal{S}_{y^{r1}_{-1}} - \mathcal{S}_{y^{r2}_{-1}}) + \nu(1)

where r1r1 is a random index defined between [1, P][1,~P] excluding the index pp and r2r2 is a random index defined between [1, P][1,~P] excluding the indices pp and r1r1. Also, γ=2.38/2M\gamma = 2.38 / \sqrt{2M} and νN(0, 1e6)\nu \sim \mathcal{N}(0,~1e-6).

Input Parameters

  • file_nameName of the CSV file with configuration values.

    C++ Type:FileName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the CSV file with configuration values.

  • initial_valuesThe starting values of the inputs to be calibrated.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:The starting values of the inputs to be calibrated.

  • num_parallel_proposalsNumber of proposals to make and corresponding subApps executed in parallel.

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of proposals to make and corresponding subApps executed in parallel.

  • previous_stateReporter value with the previous state of all the walkers.

    C++ Type:ReporterName

    Unit:(no unit assumed)

    Controllable:No

    Description:Reporter value with the previous state of all the walkers.

  • previous_state_varReporter value with the previous state of all the walkers for variance.

    C++ Type:ReporterName

    Unit:(no unit assumed)

    Controllable:No

    Description:Reporter value with the previous state of all the walkers for variance.

  • prior_distributionsThe prior distributions of the parameters to be calibrated.

    C++ Type:std::vector<DistributionName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The prior distributions of the parameters to be calibrated.

Required Parameters

  • execute_onLINEARThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

    Default:LINEAR

    C++ Type:ExecFlagEnum

    Unit:(no unit assumed)

    Options:NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, PRE_MULTIAPP_SETUP

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

  • file_column_nameName of column in CSV file to use, by default first column is used.

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of column in CSV file to use, by default first column is used.

  • limit_get_global_samples429496729The maximum allowed number of items in the DenseMatrix returned by getGlobalSamples method.

    Default:429496729

    C++ Type:unsigned long

    Unit:(no unit assumed)

    Controllable:No

    Description:The maximum allowed number of items in the DenseMatrix returned by getGlobalSamples method.

  • limit_get_local_samples429496729The maximum allowed number of items in the DenseMatrix returned by getLocalSamples method.

    Default:429496729

    C++ Type:unsigned long

    Unit:(no unit assumed)

    Controllable:No

    Description:The maximum allowed number of items in the DenseMatrix returned by getLocalSamples method.

  • limit_get_next_local_row429496729The maximum allowed number of items in the std::vector returned by getNextLocalRow method.

    Default:429496729

    C++ Type:unsigned long

    Unit:(no unit assumed)

    Controllable:No

    Description:The maximum allowed number of items in the std::vector returned by getNextLocalRow method.

  • lower_boundLower bounds for making the next proposal.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Lower bounds for making the next proposal.

  • max_procs_per_row4294967295This will ensure that the sampler is partitioned properly when 'MultiApp/*/max_procs_per_app' is specified. It is not recommended to use otherwise.

    Default:4294967295

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:This will ensure that the sampler is partitioned properly when 'MultiApp/*/max_procs_per_app' is specified. It is not recommended to use otherwise.

  • min_procs_per_row1This will ensure that the sampler is partitioned properly when 'MultiApp/*/min_procs_per_app' is specified. It is not recommended to use otherwise.

    Default:1

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:This will ensure that the sampler is partitioned properly when 'MultiApp/*/min_procs_per_app' is specified. It is not recommended to use otherwise.

  • num_columnsNumber of columns to be used in the CSV file with the configuration values.

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of columns to be used in the CSV file with the configuration values.

  • num_random_seeds100000Initialize a certain number of random seeds. Change from the default only if you have to.

    Default:100000

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Initialize a certain number of random seeds. Change from the default only if you have to.

  • prior_varianceThe prior distribution of the variance parameter to be calibrated.

    C++ Type:DistributionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The prior distribution of the variance parameter to be calibrated.

  • scalesScales for the parameters.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Scales for the parameters.

  • seed0Random number generator initial seed

    Default:0

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Random number generator initial seed

  • tuning_optionBraak2006_staticThe tuning option for internal parameters.

    Default:Braak2006_static

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:Braak2006_static

    Controllable:No

    Description:The tuning option for internal parameters.

  • upper_boundUpper bounds for making the next proposal.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Upper bounds for making the next proposal.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

References

  1. C. J. T. Braak. A Markov Chain Monte Carlo version of the genetic algorithm Differential Evolution: easy Bayesian computing for real parameter spaces. Statistics and Computing, 16:239–249, 2006. URL: https://doi.org/10.1007/s11222-006-8769-1.[BibTeX]