https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
BayesianActiveLearningSampler Class Reference

Fast Bayesian inference with the parallel active learning (partly inspired from El Gammal et al. More...

#include <BayesianActiveLearningSampler.h>

Inheritance diagram for BayesianActiveLearningSampler:
[legend]

Public Types

enum  SampleMode { SampleMode::GLOBAL, SampleMode::LOCAL }
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 BayesianActiveLearningSampler (const InputParameters &parameters)
 
const std::vector< std::vector< Real > > & getSampleTries () const
 Return the random samples for the GP to try in the reporter class. More...
 
const std::vector< Real > & getVarSampleTries () const
 Return the random variance samples for the GP to try in the reporter class. More...
 
dof_id_type getNumberOfConfigValues () const
 Return the number of configuration parameters. More...
 
dof_id_type getNumberOfConfigParams () const
 Return the number of configuration parameters. More...
 
dof_id_type getNumParallelProposals () const
 Return the number of parallel proposals. More...
 
const std::vector< Real > & getRandomNumbers () const
 Return the random numbers to facilitate decision making in reporters. More...
 
const std::vector< Real > & getVarSamples () const
 Return the proposed variance samples to facilitate decision making in reporters. More...
 
const std::vector< std::vector< Real > > & getSamples () const
 Return the proposed samples to facilitate decision making in reporters. More...
 
const std::vector< const Distribution * > getPriors () const
 Return the priors to facilitate decision making in reporters. More...
 
const DistributiongetVarPrior () const
 Return the prior over variance to facilitate decision making in reporters. More...
 
virtual int decisionStep () const
 Return the step after which decision making can begin. More...
 
std::vector< RealgetNextLocalRow ()
 
dof_id_type getNumberOfRows () const
 
dof_id_type getNumberOfCols () const
 
dof_id_type getNumberOfLocalRows () const
 
const LocalRankConfiggetRankConfig (bool batch_mode) const
 
virtual bool isAdaptiveSamplingCompleted () const
 
libMesh::Parallel::CommunicatorgetLocalComm ()
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const TgetParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const TqueryParam (const std::string &name) const
 
const TgetRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool haveParameter (const std::string &name) const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
virtual void initialSetup ()
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void subdomainSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () const
 
PerfGraphperfGraph ()
 
TgetSampler (const std::string &name)
 
SamplergetSampler (const std::string &name)
 
TgetSamplerByName (const SamplerName &name)
 
SamplergetSamplerByName (const SamplerName &name)
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name) const
 
const VectorPostprocessorName & getVectorPostprocessorName (const std::string &param_name) const
 
DenseMatrix< RealgetGlobalSamples ()
 
DenseMatrix< RealgetGlobalSamples ()
 
DenseMatrix< RealgetLocalSamples ()
 
DenseMatrix< RealgetLocalSamples ()
 
dof_id_type getLocalRowBegin () const
 
dof_id_type getLocalRowBegin () const
 
dof_id_type getLocalRowEnd () const
 
dof_id_type getLocalRowEnd () const
 
const DistributiongetDistribution (const std::string &name) const
 
const TgetDistribution (const std::string &name) const
 
const DistributiongetDistribution (const std::string &name) const
 
const TgetDistribution (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const TgetDistributionByName (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const TgetDistributionByName (const std::string &name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 

Protected Member Functions

virtual void proposeSamples () override
 Fill in the _new_samples vector of vectors (happens within sampleSetUp) More...
 
virtual void executeSetUp () override
 
virtual Real computeSample (dof_id_type row_index, dof_id_type col_index) override
 
Real random ()
 Sample a random number between 0 and 1. More...
 
unsigned int randomIndex (const unsigned int &upper_bound, const unsigned int &exclude)
 Sample a random index excluding a specified index. More...
 
std::pair< unsigned int, unsigned intrandomIndexPair (const unsigned int &upper_bound, const unsigned int &exclude)
 Sample two random indices without repitition excluding a specified index. More...
 
void setNumberOfRandomSeeds (std::size_t number)
 
Real getRand (std::size_t n, unsigned int index=0) const
 
unsigned int getRandl (std::size_t n, unsigned int lower, unsigned int upper, unsigned int index=0) const
 
virtual LocalRankConfig constructRankConfig (bool batch_mode) const
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &) const
 
const ReporterContextBasegetReporterContextBaseByName (const ReporterName &reporter_name) const
 
const ReporterNamegetReporterName (const std::string &param_name) const
 
virtual void addReporterDependencyHelper (const ReporterName &)
 
void setNumberOfRows (dof_id_type n_rows)
 
void setNumberOfRows (dof_id_type n_rows)
 
void setNumberOfCols (dof_id_type n_cols)
 
void setNumberOfCols (dof_id_type n_cols)
 
virtual void computeSampleMatrix (DenseMatrix< Real > &matrix)
 
virtual void computeSampleMatrix (DenseMatrix< Real > &matrix)
 
virtual void computeLocalSampleMatrix (DenseMatrix< Real > &matrix)
 
virtual void computeLocalSampleMatrix (DenseMatrix< Real > &matrix)
 
virtual void computeSampleRow (dof_id_type i, std::vector< Real > &data)
 
virtual void computeSampleRow (dof_id_type i, std::vector< Real > &data)
 
virtual void advanceGenerators (const dof_id_type count)
 
virtual void advanceGenerators (const dof_id_type count)
 
virtual void advanceGenerator (const unsigned int seed_index, const dof_id_type count)
 
virtual void advanceGenerator (const unsigned int seed_index, const dof_id_type count)
 
void setAutoAdvanceGenerators (const bool state)
 
void setAutoAdvanceGenerators (const bool state)
 
virtual void executeTearDown ()
 
virtual void executeTearDown ()
 
const TgetReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const TgetReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const TgetReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const TgetReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const TgetReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const TgetReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
const TgetReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const TgetReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 

Protected Attributes

const std::vector< unsigned int > & _sorted_indices
 The selected sample indices to evaluate the subApp. More...
 
const unsigned int _num_parallel_proposals
 Number of parallel proposals to be made and subApps to be executed. More...
 
std::vector< const Distribution * > _priors
 Storage for prior distribution objects to be utilized. More...
 
const Distribution_var_prior
 Storage for prior distribution object of the variance to be utilized. More...
 
const std::vector< Real > * _lower_bound
 Lower bounds for making the next proposal. More...
 
const std::vector< Real > * _upper_bound
 Upper bounds for making the next proposal. More...
 
const Real_variance_bound
 Upper bound for variance for making the next proposal. More...
 
const std::vector< Real > & _initial_values
 Initial values of the input params to get the MCMC scheme started. More...
 
std::vector< std::vector< Real > > _new_samples
 Vectors of new proposed samples. More...
 
std::vector< Real_new_var_samples
 Vector of new proposed variance samples. More...
 
std::vector< Real_rnd_vec
 Vector of random numbers for decision making. More...
 
const dof_id_type _min_procs_per_row
 
const dof_id_type _max_procs_per_row
 
libMesh::Parallel::Communicator _local_comm
 
const bool & _enabled
 
MooseApp_app
 
Factory_factory
 
ActionFactory_action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters_pars
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 
const InputParameters_ti_params
 
FEProblemBase_ti_feproblem
 
bool _is_implicit
 
Real_t
 
const Real_t_old
 
int_t_step
 
Real_dt
 
Real_dt_old
 
bool _is_transient
 

Private Attributes

const unsigned int_num_tries
 Number of samples to propose in each iteration (not all are sent for subApp evals) More...
 
std::vector< std::vector< Real > > _inputs_test
 Storage for all the proposed samples. More...
 
std::vector< Real_var_test
 Storage for all the proposed variances. More...
 

Detailed Description

Fast Bayesian inference with the parallel active learning (partly inspired from El Gammal et al.

2023)

Definition at line 19 of file BayesianActiveLearningSampler.h.

Constructor & Destructor Documentation

◆ BayesianActiveLearningSampler()

BayesianActiveLearningSampler::BayesianActiveLearningSampler ( const InputParameters parameters)

Definition at line 31 of file BayesianActiveLearningSampler.C.

33  _sorted_indices(getReporterValue<std::vector<unsigned int>>("sorted_indices")),
34  _num_tries(getParam<unsigned int>("num_tries")),
35  _inputs_test(_num_tries, std::vector<Real>(_priors.size())),
37 {
38 }
PMCMCBase(const InputParameters &parameters)
Definition: PMCMCBase.C:49
const InputParameters & parameters() const
const std::vector< unsigned int > & _sorted_indices
The selected sample indices to evaluate the subApp.
std::vector< const Distribution * > _priors
Storage for prior distribution objects to be utilized.
Definition: PMCMCBase.h:115
const T & getReporterValue(const std::string &param_name, const std::size_t time_index=0)
std::vector< Real > _var_test
Storage for all the proposed variances.
std::vector< std::vector< Real > > _inputs_test
Storage for all the proposed samples.
const unsigned int & _num_tries
Number of samples to propose in each iteration (not all are sent for subApp evals) ...

Member Function Documentation

◆ computeSample()

Real PMCMCBase::computeSample ( dof_id_type  row_index,
dof_id_type  col_index 
)
overrideprotectedvirtualinherited

Implements Sampler.

Definition at line 215 of file PMCMCBase.C.

216 {
217  if (_t_step < 1)
218  for (unsigned int i = 0; i < _num_parallel_proposals; ++i)
220 
221  // Combine the proposed samples with experimental configurations
223 
224  return _new_samples_confg[row_index][col_index];
225 }
const unsigned int _num_parallel_proposals
Number of parallel proposals to be made and subApps to be executed.
Definition: PMCMCBase.h:112
const std::vector< Real > & _initial_values
Initial values of the input params to get the MCMC scheme started.
Definition: PMCMCBase.h:130
std::vector< std::vector< Real > > _new_samples_confg
Vectors of new proposed samples combined with the experimental configuration values.
Definition: PMCMCBase.h:160
void combineWithExperimentalConfig()
Generates combinations of the new samples with the experimental configurations.
Definition: PMCMCBase.C:167
std::vector< std::vector< Real > > _new_samples
Vectors of new proposed samples.
Definition: PMCMCBase.h:133

◆ decisionStep()

virtual int PMCMCBase::decisionStep ( ) const
inlinevirtualinherited

Return the step after which decision making can begin.

Reimplemented in AffineInvariantDES, AffineInvariantStretchSampler, and IndependentGaussianMH.

Definition at line 73 of file PMCMCBase.h.

Referenced by PMCMCDecision::execute().

73 { return 1; }

◆ executeSetUp()

void PMCMCBase::executeSetUp ( )
overrideprotectedvirtualinherited

Reimplemented from Sampler.

Definition at line 128 of file PMCMCBase.C.

129 {
131  _rand_index = 0;
132 
133  // Filling the new_samples vector of vectors with new proposal samples
134  proposeSamples();
135 
136  // Draw random numbers to facilitate decision making later on
137  for (unsigned int j = 0; j < _num_parallel_proposals; ++j)
138  _rnd_vec[j] = random();
139 }
Real random()
Sample a random number between 0 and 1.
Definition: PMCMCBase.C:142
const unsigned int _num_parallel_proposals
Number of parallel proposals to be made and subApps to be executed.
Definition: PMCMCBase.h:112
std::size_t _rand_index
Running index for the random number generators.
Definition: PMCMCBase.h:154
virtual void proposeSamples()
Fill in the _new_samples vector of vectors (happens within sampleSetUp)
Definition: PMCMCBase.C:120
unsigned int _seed_index
Generator index when requesting random numbers.
Definition: PMCMCBase.h:151
std::vector< Real > _rnd_vec
Vector of random numbers for decision making.
Definition: PMCMCBase.h:139
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")

◆ getNumberOfConfigParams()

dof_id_type PMCMCBase::getNumberOfConfigParams ( ) const
inlineinherited

Return the number of configuration parameters.

Definition at line 34 of file PMCMCBase.h.

Referenced by BayesianActiveLearner::BayesianActiveLearner(), and PMCMCDecision::PMCMCDecision().

34 { return _confg_values.size(); }
std::vector< std::vector< Real > > _confg_values
Configuration values.
Definition: PMCMCBase.h:157

◆ getNumberOfConfigValues()

dof_id_type PMCMCBase::getNumberOfConfigValues ( ) const
inlineinherited

Return the number of configuration parameters.

Definition at line 29 of file PMCMCBase.h.

Referenced by BayesianActiveLearner::BayesianActiveLearner(), and PMCMCDecision::PMCMCDecision().

29 { return _confg_values[0].size(); }
std::vector< std::vector< Real > > _confg_values
Configuration values.
Definition: PMCMCBase.h:157

◆ getNumParallelProposals()

dof_id_type PMCMCBase::getNumParallelProposals ( ) const
inlineinherited

Return the number of parallel proposals.

Definition at line 39 of file PMCMCBase.h.

Referenced by PMCMCDecision::PMCMCDecision().

39 { return _num_parallel_proposals; }
const unsigned int _num_parallel_proposals
Number of parallel proposals to be made and subApps to be executed.
Definition: PMCMCBase.h:112

◆ getPriors()

const std::vector< const Distribution * > PMCMCBase::getPriors ( ) const
inherited

Return the priors to facilitate decision making in reporters.

Definition at line 203 of file PMCMCBase.C.

204 {
205  return _priors;
206 }
std::vector< const Distribution * > _priors
Storage for prior distribution objects to be utilized.
Definition: PMCMCBase.h:115

◆ getRandomNumbers()

const std::vector< Real > & PMCMCBase::getRandomNumbers ( ) const
inherited

Return the random numbers to facilitate decision making in reporters.

Definition at line 185 of file PMCMCBase.C.

186 {
187  return _rnd_vec;
188 }
std::vector< Real > _rnd_vec
Vector of random numbers for decision making.
Definition: PMCMCBase.h:139

◆ getSamples()

const std::vector< std::vector< Real > > & PMCMCBase::getSamples ( ) const
inherited

Return the proposed samples to facilitate decision making in reporters.

In MCMC schemes, there is a decision-making step after evaluating the computational model on whether or not to accept the proposed samples. To facilitate this decision-making, which happens in the Reporter, we have to provide it the proposed samples.

Definition at line 197 of file PMCMCBase.C.

198 {
199  return _new_samples;
200 }
std::vector< std::vector< Real > > _new_samples
Vectors of new proposed samples.
Definition: PMCMCBase.h:133

◆ getSampleTries()

const std::vector< std::vector< Real > > & BayesianActiveLearningSampler::getSampleTries ( ) const

Return the random samples for the GP to try in the reporter class.

Definition at line 41 of file BayesianActiveLearningSampler.C.

42 {
43  return _inputs_test;
44 }
std::vector< std::vector< Real > > _inputs_test
Storage for all the proposed samples.

◆ getVarPrior()

const Distribution * PMCMCBase::getVarPrior ( ) const
inherited

Return the prior over variance to facilitate decision making in reporters.

Definition at line 209 of file PMCMCBase.C.

210 {
211  return _var_prior;
212 }
const Distribution * _var_prior
Storage for prior distribution object of the variance to be utilized.
Definition: PMCMCBase.h:118

◆ getVarSamples()

const std::vector< Real > & PMCMCBase::getVarSamples ( ) const
inherited

Return the proposed variance samples to facilitate decision making in reporters.

Definition at line 191 of file PMCMCBase.C.

192 {
193  return _new_var_samples;
194 }
std::vector< Real > _new_var_samples
Vector of new proposed variance samples.
Definition: PMCMCBase.h:136

◆ getVarSampleTries()

const std::vector< Real > & BayesianActiveLearningSampler::getVarSampleTries ( ) const

Return the random variance samples for the GP to try in the reporter class.

Definition at line 47 of file BayesianActiveLearningSampler.C.

48 {
49  return _var_test;
50 }
std::vector< Real > _var_test
Storage for all the proposed variances.

◆ proposeSamples()

void BayesianActiveLearningSampler::proposeSamples ( )
overrideprotectedvirtual

Fill in the _new_samples vector of vectors (happens within sampleSetUp)

Parameters
seed_valueThe seed for the random number generator

Reimplemented from PMCMCBase.

Definition at line 53 of file BayesianActiveLearningSampler.C.

54 {
55  auto fill_vector = [&](std::vector<Real> & vector)
56  {
57  for (unsigned int i = 0; i < _priors.size(); ++i)
58  vector[i] = _priors[i]->quantile(random());
59  };
60 
61  /* If step is 1, randomly generate the samples.
62  Else, generate the samples informed by the GP from the reporter "sorted_indices" */
63  for (dof_id_type i = 0; i < _num_parallel_proposals; ++i)
64  {
65  if (_t_step < 1)
66  {
67  fill_vector(_new_samples[i]);
68  if (_var_prior)
70  }
71  else
72  {
74  if (_var_prior)
76  }
77  }
78 
79  /* Finally, generate several new samples randomly for the GP to try and pass it to the
80  reporter */
81  for (dof_id_type i = 0; i < _num_tries; ++i)
82  {
83  fill_vector(_inputs_test[i]);
84  if (_var_prior)
86  }
87 }
Real random()
Sample a random number between 0 and 1.
Definition: PMCMCBase.C:142
const unsigned int _num_parallel_proposals
Number of parallel proposals to be made and subApps to be executed.
Definition: PMCMCBase.h:112
const std::vector< unsigned int > & _sorted_indices
The selected sample indices to evaluate the subApp.
std::vector< const Distribution * > _priors
Storage for prior distribution objects to be utilized.
Definition: PMCMCBase.h:115
std::vector< Real > _new_var_samples
Vector of new proposed variance samples.
Definition: PMCMCBase.h:136
std::vector< Real > _var_test
Storage for all the proposed variances.
std::vector< std::vector< Real > > _new_samples
Vectors of new proposed samples.
Definition: PMCMCBase.h:133
const Distribution * _var_prior
Storage for prior distribution object of the variance to be utilized.
Definition: PMCMCBase.h:118
virtual Real quantile(const Real &y) const=0
std::vector< std::vector< Real > > _inputs_test
Storage for all the proposed samples.
const unsigned int & _num_tries
Number of samples to propose in each iteration (not all are sent for subApp evals) ...
uint8_t dof_id_type

◆ random()

Real PMCMCBase::random ( )
protectedinherited

Sample a random number between 0 and 1.

Parameters
upper_boundThe upper bound provided
Returns
The required index

Definition at line 142 of file PMCMCBase.C.

Referenced by PMCMCBase::executeSetUp(), IndependentGaussianMH::proposeSamples(), AffineInvariantDES::proposeSamples(), AffineInvariantStretchSampler::proposeSamples(), proposeSamples(), and PMCMCBase::proposeSamples().

143 {
144  return getRand(_rand_index++, _seed_index);
145 }
std::size_t _rand_index
Running index for the random number generators.
Definition: PMCMCBase.h:154
Real getRand(std::size_t n, unsigned int index=0) const
unsigned int _seed_index
Generator index when requesting random numbers.
Definition: PMCMCBase.h:151

◆ randomIndex()

unsigned int PMCMCBase::randomIndex ( const unsigned int upper_bound,
const unsigned int exclude 
)
protectedinherited

Sample a random index excluding a specified index.

Parameters
upper_boundThe upper bound provided
Returns
The required index

Definition at line 148 of file PMCMCBase.C.

Referenced by AffineInvariantStretchSampler::proposeSamples(), and PMCMCBase::randomIndexPair().

149 {
150  auto req_index = exclude;
151  while (req_index == exclude)
152  req_index = getRandl(_rand_index++, 0, upper_bound, _seed_index);
153  return req_index;
154 }
std::size_t _rand_index
Running index for the random number generators.
Definition: PMCMCBase.h:154
unsigned int getRandl(std::size_t n, unsigned int lower, unsigned int upper, unsigned int index=0) const
unsigned int _seed_index
Generator index when requesting random numbers.
Definition: PMCMCBase.h:151

◆ randomIndexPair()

std::pair< unsigned int, unsigned int > PMCMCBase::randomIndexPair ( const unsigned int upper_bound,
const unsigned int exclude 
)
protectedinherited

Sample two random indices without repitition excluding a specified index.

Parameters
upper_boundThe upper bound provided
excludeThe index to be excluded from sampling
Returns
Pair of required indices

Definition at line 157 of file PMCMCBase.C.

Referenced by AffineInvariantDES::proposeSamples().

158 {
159  auto req_index1 = randomIndex(upper_bound, exclude);
160  auto req_index2 = req_index1;
161  while (req_index1 == req_index2)
162  req_index2 = randomIndex(upper_bound, exclude);
163  return {req_index1, req_index2};
164 }
unsigned int randomIndex(const unsigned int &upper_bound, const unsigned int &exclude)
Sample a random index excluding a specified index.
Definition: PMCMCBase.C:148

◆ validParams()

InputParameters BayesianActiveLearningSampler::validParams ( )
static

Definition at line 17 of file BayesianActiveLearningSampler.C.

18 {
20  params.addClassDescription("Fast Bayesian inference with the parallel active learning (partly "
21  "inspired from El Gammal et al. 2023).");
23  "sorted_indices", "The sorted sample indices in order of importance to evaluate the subApp.");
24  params.addRequiredRangeCheckedParam<unsigned int>(
25  "num_tries",
26  "num_tries>0",
27  "Number of samples to propose in each iteration (not all are sent for subApp evals).");
28  return params;
29 }
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()
Definition: PMCMCBase.C:18

Member Data Documentation

◆ _initial_values

const std::vector<Real>& PMCMCBase::_initial_values
protectedinherited

Initial values of the input params to get the MCMC scheme started.

Definition at line 130 of file PMCMCBase.h.

Referenced by PMCMCBase::computeSample(), PMCMCBase::PMCMCBase(), and IndependentGaussianMH::proposeSamples().

◆ _inputs_test

std::vector<std::vector<Real> > BayesianActiveLearningSampler::_inputs_test
private

Storage for all the proposed samples.

Definition at line 47 of file BayesianActiveLearningSampler.h.

Referenced by getSampleTries(), and proposeSamples().

◆ _lower_bound

const std::vector<Real>* PMCMCBase::_lower_bound
protectedinherited

◆ _new_samples

std::vector<std::vector<Real> > PMCMCBase::_new_samples
protectedinherited

◆ _new_var_samples

std::vector<Real> PMCMCBase::_new_var_samples
protectedinherited

◆ _num_parallel_proposals

const unsigned int PMCMCBase::_num_parallel_proposals
protectedinherited

◆ _num_tries

const unsigned int& BayesianActiveLearningSampler::_num_tries
private

Number of samples to propose in each iteration (not all are sent for subApp evals)

Definition at line 44 of file BayesianActiveLearningSampler.h.

Referenced by proposeSamples().

◆ _priors

std::vector<const Distribution *> PMCMCBase::_priors
protectedinherited

◆ _rnd_vec

std::vector<Real> PMCMCBase::_rnd_vec
protectedinherited

Vector of random numbers for decision making.

Definition at line 139 of file PMCMCBase.h.

Referenced by PMCMCBase::executeSetUp(), PMCMCBase::getRandomNumbers(), and PMCMCBase::PMCMCBase().

◆ _sorted_indices

const std::vector<unsigned int>& BayesianActiveLearningSampler::_sorted_indices
protected

The selected sample indices to evaluate the subApp.

Definition at line 40 of file BayesianActiveLearningSampler.h.

Referenced by proposeSamples().

◆ _upper_bound

const std::vector<Real>* PMCMCBase::_upper_bound
protectedinherited

Upper bounds for making the next proposal.

Definition at line 124 of file PMCMCBase.h.

Referenced by PMCMCBase::PMCMCBase(), and IndependentGaussianMH::proposeSamples().

◆ _var_prior

const Distribution* PMCMCBase::_var_prior
protectedinherited

Storage for prior distribution object of the variance to be utilized.

Definition at line 118 of file PMCMCBase.h.

Referenced by PMCMCBase::getVarPrior(), PMCMCBase::PMCMCBase(), AffineInvariantDES::proposeSamples(), AffineInvariantStretchSampler::proposeSamples(), and proposeSamples().

◆ _var_test

std::vector<Real> BayesianActiveLearningSampler::_var_test
private

Storage for all the proposed variances.

Definition at line 50 of file BayesianActiveLearningSampler.h.

Referenced by getVarSampleTries(), and proposeSamples().

◆ _variance_bound

const Real& PMCMCBase::_variance_bound
protectedinherited

Upper bound for variance for making the next proposal.

Definition at line 127 of file PMCMCBase.h.

Referenced by AffineInvariantDES::proposeSamples(), and AffineInvariantStretchSampler::proposeSamples().


The documentation for this class was generated from the following files: