queso-0.57.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
InfiniteDimensionalMCMCSamplerOptions.C
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 //
3 // QUESO - a library to support the Quantification of Uncertainty
4 // for Estimation, Simulation and Optimization
5 //
6 // Copyright (C) 2008,2009,2010,2011,2012,2013 The PECOS Development Team
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the Version 2.1 GNU Lesser General
10 // Public License as published by the Free Software Foundation.
11 //
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 // Lesser General Public License for more details.
16 //
17 // You should have received a copy of the GNU Lesser General Public
18 // License along with this library; if not, write to the Free Software
19 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
20 // Boston, MA 02110-1301 USA
21 //
22 //-----------------------------------------------------------------------el-
23 
24 #include <queso/config_queso.h>
25 #include <queso/InfiniteDimensionalMCMCSamplerOptions.h>
26 
27 // ODV = option default value
28 #define UQ_INF_DATA_OUTPUT_DIR_NAME_ODV "chain"
29 #define UQ_INF_DATA_OUTPUT_FILE_NAME_ODV "out.h5"
30 #define UQ_INF_NUM_ITERS_ODV 1000
31 #define UQ_INF_SAVE_FREQ_ODV 1
32 #define UQ_INF_RWMH_STEP_ODV 1e-2
33 
34 namespace QUESO {
35 
37  const BaseEnvironment& env,
38  const char * prefix)
39  : m_prefix((std::string)(prefix) + "infmcmc_"),
40  m_dataOutputDirName(UQ_INF_DATA_OUTPUT_DIR_NAME_ODV),
41  m_dataOutputFileName(UQ_INF_DATA_OUTPUT_FILE_NAME_ODV),
42  m_num_iters(UQ_INF_NUM_ITERS_ODV),
43  m_save_freq(UQ_INF_SAVE_FREQ_ODV),
44  m_rwmh_step(UQ_INF_RWMH_STEP_ODV),
45 #ifndef QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
46  m_parser(new BoostInputOptionsParser(env.optionsInputFileName())),
47 #endif // QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
48  m_env(env),
49  m_option_help(m_prefix + "help"),
50  m_option_dataOutputDirName(m_prefix + "dataOutputDirName"),
51  m_option_dataOutputFileName(m_prefix + "dataOutputFileName"),
52  m_option_num_iters(m_prefix + "num_iters"),
53  m_option_save_freq(m_prefix + "save_freq"),
54  m_option_rwmh_step(m_prefix + "rwmh_step")
55 {
56  queso_require_not_equal_to_msg(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the abscense of an options input file"));
57 
58 #ifndef QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
59  m_parser->registerOption(m_option_help, "produce help message for infinite dimensional sampler");
60  m_parser->registerOption<std::string>(m_option_dataOutputDirName, UQ_INF_DATA_OUTPUT_DIR_NAME_ODV, "name of data output dir");
61  m_parser->registerOption<std::string>(m_option_dataOutputFileName, UQ_INF_DATA_OUTPUT_FILE_NAME_ODV, "name of data output file (HDF5)");
62  m_parser->registerOption<unsigned int>(m_option_num_iters, UQ_INF_NUM_ITERS_ODV, "number of mcmc iterations to do");
63  m_parser->registerOption<unsigned int>(m_option_save_freq, UQ_INF_SAVE_FREQ_ODV, "the frequency at which to save the chain state");
64  m_parser->registerOption<double >(m_option_rwmh_step, UQ_INF_RWMH_STEP_ODV, "the step-size in the random-walk Metropolis proposal");;
65 
67 
73 #else
74  m_option_dataOutputDirName = m_env.input()(m_option_dataOutputDirName, UQ_INF_DATA_OUTPUT_DIR_NAME_ODV);
75  m_option_dataOutputFileName = m_env.input()(m_option_dataOutputFileName, UQ_INF_DATA_OUTPUT_FILE_NAME_ODV);
76  m_option_num_iters = m_env.input()(m_option_num_iters, UQ_INF_NUM_ITERS_ODV);
77  m_option_save_freq = m_env.input()(m_option_save_freq, UQ_INF_SAVE_FREQ_ODV);
78  m_option_rwmh_step = m_env.input()(m_option_rwmh_step, UQ_INF_RWMH_STEP_ODV);;
79 #endif // QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
80 
81  checkOptions();
82 }
83 
84 void
86 {
87  queso_require_equal_to_msg(m_num_iters % m_save_freq, 0, "save frequency must divide number of iterations");
88  queso_require_greater_msg(m_rwmh_step, 0, "random-walk Metropolis step size must be positive");
89 }
90 
92 {
93 }
94 
95 void InfiniteDimensionalMCMCSamplerOptions::print(std::ostream & os) const
96 {
97  os << "\n" << this->m_option_dataOutputDirName << " = " << this->m_dataOutputDirName;
98  os << "\n" << this->m_option_dataOutputFileName << " = " << this->m_dataOutputFileName;
99  os << "\n" << this->m_option_num_iters << " = " << this->m_num_iters;
100  os << "\n" << this->m_option_save_freq << " = " << this->m_save_freq;
101  os << "\n" << this->m_option_rwmh_step << " = " << this->m_rwmh_step;
102  os << std::endl;
103  return;
104 }
105 
106 std::ostream & operator<<(std::ostream & os,
108 {
109 #ifndef QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
110  os << (*(obj.m_parser)) << std::endl;
111 #endif // QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
112  obj.print(os);
113  return os;
114 }
115 
116 const BaseEnvironment&
118 {
119  return this->m_env;
120 }
121 
122 } // End namespace QUESO
void print(std::ostream &os) const
Prints this to os.
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:198
void getOption(const std::string &name, T &value) const
Get option name from the parser and set value to the parsed value.
unsigned int m_num_iters
The total number of iterations to do.
std::string m_dataOutputFileName
Name of the HDF5 output file to store chain statistics.
std::ostream & operator<<(std::ostream &os, const SequenceStatisticalOptions &obj)
std::string m_dataOutputDirName
Name of the output dir to save infinite dimensional output files to.
const GetPot & input() const
The GetPot input file parser.
Definition: Environment.C:1149
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix queso_require_not_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the absence of an options input file"))
InfiniteDimensionalMCMCSamplerOptions(const BaseEnvironment &env, const char *prefix)
Given prefix, read the input file for parameters named prefix_*.
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:354
const BaseEnvironment & env() const
Returns the QUESO environment.
void registerOption(const std::string &name, const T &defaultValue, const std::string &description)
Call this to register an option with the parser.
void scanInputFile()
This is the method that parses the input file.
unsigned int m_save_freq
The frequency at which to save the state of the chain.
This class defines the options that specify the behaviour of the MCMC sampler.
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix, const McOptionsValues &alternativeOptionsValues queso_require_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the existence of an options input file"))

Generated on Tue Jun 5 2018 19:48:55 for queso-0.57.1 by  doxygen 1.8.5