queso-0.50.1
MetropolisHastingsSGOptions.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // QUESO - a library to support the Quantification of Uncertainty
5 // for Estimation, Simulation and Optimization
6 //
7 // Copyright (C) 2008,2009,2010,2011,2012,2013 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #include <queso/MetropolisHastingsSGOptions.h>
26 #include <queso/Miscellaneous.h>
27 
28 // -------------------------------------------------
29 // MhOptionsValues --------------------------
30 // -------------------------------------------------
31 
32 namespace QUESO {
33 
34 // Default constructor -----------------------------
36 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
37  const SsOptionsValues* alternativeRawSsOptionsValues,
38  const SsOptionsValues* alternativeFilteredSsOptionsValues
39 #endif
40  )
41  :
42  m_dataOutputFileName (UQ_MH_SG_DATA_OUTPUT_FILE_NAME_ODV),
43  m_dataOutputAllowAll (UQ_MH_SG_DATA_OUTPUT_ALLOW_ALL_ODV),
44 //m_dataOutputAllowedSet (),
45  m_totallyMute (UQ_MH_SG_TOTALLY_MUTE_ODV),
46  m_initialPositionDataInputFileName (UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV),
47  m_initialPositionDataInputFileType (UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV),
48  m_initialProposalCovMatrixDataInputFileName(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV),
49  m_initialProposalCovMatrixDataInputFileType(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV),
50 //m_parameterDisabledSet (),
51  m_rawChainDataInputFileName (UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV),
52  m_rawChainDataInputFileType (UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV),
53  m_rawChainSize (UQ_MH_SG_RAW_CHAIN_SIZE_ODV),
54  m_rawChainGenerateExtra (UQ_MH_SG_RAW_CHAIN_GENERATE_EXTRA_ODV),
55  m_rawChainDisplayPeriod (UQ_MH_SG_RAW_CHAIN_DISPLAY_PERIOD_ODV),
56  m_rawChainMeasureRunTimes (UQ_MH_SG_RAW_CHAIN_MEASURE_RUN_TIMES_ODV),
57  m_rawChainDataOutputPeriod (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV),
58  m_rawChainDataOutputFileName (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV),
59  m_rawChainDataOutputFileType (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV),
60  m_rawChainDataOutputAllowAll (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV),
61 //m_rawChainDataOutputAllowedSet (),
62 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
63  m_rawChainComputeStats (UQ_MH_SG_RAW_CHAIN_COMPUTE_STATS_ODV),
64 #endif
65  m_filteredChainGenerate (UQ_MH_SG_FILTERED_CHAIN_GENERATE_ODV),
66  m_filteredChainDiscardedPortion (UQ_MH_SG_FILTERED_CHAIN_DISCARDED_PORTION_ODV),
67  m_filteredChainLag (UQ_MH_SG_FILTERED_CHAIN_LAG_ODV),
68  m_filteredChainDataOutputFileName (UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV),
69  m_filteredChainDataOutputFileType (UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV),
70  m_filteredChainDataOutputAllowAll (UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV),
71 //m_filteredChainDataOutputAllowedSet (),
72 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
73  m_filteredChainComputeStats (UQ_MH_SG_FILTERED_CHAIN_COMPUTE_STATS_ODV),
74 #endif
75  m_displayCandidates (UQ_MH_SG_DISPLAY_CANDIDATES_ODV),
76  m_putOutOfBoundsInChain (UQ_MH_SG_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV),
77  m_tkUseLocalHessian (UQ_MH_SG_TK_USE_LOCAL_HESSIAN_ODV),
78  m_tkUseNewtonComponent (UQ_MH_SG_TK_USE_NEWTON_COMPONENT_ODV),
79  m_drMaxNumExtraStages (UQ_MH_SG_DR_MAX_NUM_EXTRA_STAGES_ODV),
80  m_drScalesForExtraStages (0),
81  m_drDuringAmNonAdaptiveInt (UQ_MH_SG_DR_DURING_AM_NON_ADAPTIVE_INT_ODV),
82  m_amKeepInitialMatrix (UQ_MH_SG_AM_KEEP_INITIAL_MATRIX_ODV),
83  m_amInitialNonAdaptInterval (UQ_MH_SG_AM_INIT_NON_ADAPT_INT_ODV),
84  m_amAdaptInterval (UQ_MH_SG_AM_ADAPT_INTERVAL_ODV),
85  m_amAdaptedMatricesDataOutputPeriod (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV),
86  m_amAdaptedMatricesDataOutputFileName (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV),
87  m_amAdaptedMatricesDataOutputFileType (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV),
88  m_amAdaptedMatricesDataOutputAllowAll (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV),
89 //m_amAdaptedMatricesDataOutputAllowedSet (),
90  m_amEta (UQ_MH_SG_AM_ETA_ODV),
91  m_amEpsilon (UQ_MH_SG_AM_EPSILON_ODV),
92  m_enableBrooksGelmanConvMonitor (UQ_MH_SG_ENABLE_BROOKS_GELMAN_CONV_MONITOR),
93  m_BrooksGelmanLag (UQ_MH_SG_BROOKS_GELMAN_LAG)
94 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
95  ,
96  m_alternativeRawSsOptionsValues (),
97  m_alternativeFilteredSsOptionsValues ()
98 #endif
99 {
100 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
101  if (alternativeRawSsOptionsValues ) m_alternativeRawSsOptionsValues = *alternativeRawSsOptionsValues;
102  if (alternativeFilteredSsOptionsValues) m_alternativeFilteredSsOptionsValues = *alternativeFilteredSsOptionsValues;
103 #endif
104 }
105 // Copy constructor----------------------------------
107 {
108  this->copy(src);
109 }
110 // Destructor ---------------------------------------
112 {
113 }
114 // Set methods --------------------------------------
117 {
118  this->copy(rhs);
119  return *this;
120 }
121 // Private methods-----------------------------------
122 void
124 {
145 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
146  m_rawChainComputeStats = src.m_rawChainComputeStats;
147 #endif
148 //m_rawChainStatisticalOptionsObj = src.m_rawChainStatisticalOptionsObj; // dakota
149 //m_rawChainStatOptsInstantiated = src.m_rawChainStatOptsInstantiated; // dakota
157 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
158  m_filteredChainComputeStats = src.m_filteredChainComputeStats;
159 #endif
160 //m_filteredChainStatisticalOptionsObj = src.m_filteredChainStatisticalOptionsObj; // dakota
161 //m_filteredChainStatOptsInstantiated = src.m_filteredChainStatOptsInstantiated; // dakota
177  m_amEta = src.m_amEta;
178  m_amEpsilon = src.m_amEpsilon;
181 
182 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
183  m_alternativeRawSsOptionsValues = src.m_alternativeRawSsOptionsValues;
184  m_alternativeFilteredSsOptionsValues = src.m_alternativeFilteredSsOptionsValues;
185 #endif
186  return;
187 }
188 
189 //---------------------------------------------------
190 // MetropolisHastingsSGOptions ---------------
191 //---------------------------------------------------
192 
193 // Default constructor -----------------------------
195  const BaseEnvironment& env,
196  const char* prefix)
197  :
198 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
199  m_ov (NULL,NULL), // dakota
200  m_rawChainStatisticalOptionsObj (NULL),
201  m_rawChainStatOptsInstantiated (false),
202  m_filteredChainStatisticalOptionsObj (NULL),
203  m_filteredChainStatOptsInstantiated (false),
204 #else
205  m_ov (),
206 #endif
207  m_prefix ((std::string)(prefix) + "mh_"),
208  m_env (env),
209  m_optionsDesc (new po::options_description("Bayesian Metropolis-Hastings options")),
210  m_option_help (m_prefix + "help" ),
211  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
212  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
213  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
214  m_option_totallyMute (m_prefix + "totallyMute" ),
215  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
216  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
217  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
218  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
219  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ),
220  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
221  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
222  m_option_rawChain_size (m_prefix + "rawChain_size" ),
223  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
224  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
225  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
226  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
227  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
228  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
229  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
230  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
231 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
232  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
233 #endif
234  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
235  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
236  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
237  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
238  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
239  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
240  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
241 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
242  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
243 #endif
244  m_option_displayCandidates (m_prefix + "displayCandidates" ),
245  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
246  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
247  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
248  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
249  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
250  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
251  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
252  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
253  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
254  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "am_adaptedMatrices_dataOutputPeriod" ),
255  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "am_adaptedMatrices_dataOutputFileName" ),
256  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "am_adaptedMatrices_dataOutputFileType" ),
257  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "am_adaptedMatrices_dataOutputAllowAll" ),
258  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "am_adaptedMatrices_dataOutputAllowedSet" ),
259  m_option_am_eta (m_prefix + "am_eta" ),
260  m_option_am_epsilon (m_prefix + "am_epsilon" ),
261  m_option_enableBrooksGelmanConvMonitor (m_prefix + "enableBrooksGelmanConvMonitor" ),
262  m_option_BrooksGelmanLag (m_prefix + "BrooksGelmanLag" )
263 {
265  m_env.worldRank(),
266  "MetropolisHastingsSGOptions::constructor(1)",
267  "this constructor is incompatible with the absence of an options input file");
268 }
269 // Constructor 2------------------------------------
271  const BaseEnvironment& env,
272  const char* prefix,
273  const MhOptionsValues& alternativeOptionsValues)
274  :
275  m_ov (alternativeOptionsValues),
276 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
277  m_rawChainStatisticalOptionsObj (NULL),
278  m_rawChainStatOptsInstantiated (false),
279  m_filteredChainStatisticalOptionsObj (NULL),
280  m_filteredChainStatOptsInstantiated (false),
281 #endif
282  m_prefix ((std::string)(prefix) + "mh_"),
283  m_env (env),
284  m_optionsDesc (NULL),
285  m_option_help (m_prefix + "help" ),
286  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
287  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
288  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
289  m_option_totallyMute (m_prefix + "totallyMute" ),
290  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
291  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
292  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
293  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
294  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ),
295  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
296  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
297  m_option_rawChain_size (m_prefix + "rawChain_size" ),
298  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
299  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
300  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
301  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
302  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
303  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
304  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
305  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
306 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
307  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
308 #endif
309  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
310  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
311  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
312  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
313  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
314  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
315  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
316 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
317  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
318 #endif
319  m_option_displayCandidates (m_prefix + "displayCandidates" ),
320  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
321  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
322  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
323  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
324  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
325  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
326  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
327  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
328  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
329  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "am_adaptedMatrices_dataOutputPeriod" ),
330  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "am_adaptedMatrices_dataOutputFileName" ),
331  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "am_adaptedMatrices_dataOutputFileType" ),
332  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "am_adaptedMatrices_dataOutputAllowAll" ),
333  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "am_adaptedMatrices_dataOutputAllowedSet" ),
334  m_option_am_eta (m_prefix + "am_eta" ),
335  m_option_am_epsilon (m_prefix + "am_epsilon" ),
336  m_option_enableBrooksGelmanConvMonitor (m_prefix + "enableBrooksGelmanConvMonitor" ),
337  m_option_BrooksGelmanLag (m_prefix + "BrooksGelmanLag" )
338 {
340  m_env.worldRank(),
341  "MetropolisHastingsSGOptions::constructor(2)",
342  "this constructor is incompatible with the existence of an options input file");
343 
344  if ((m_env.subDisplayFile() != NULL ) &&
345  (m_ov.m_totallyMute == false)) {
346  *m_env.subDisplayFile() << "In MetropolisHastingsSGOptions::constructor(2)"
347  << ": after setting values of options with prefix '" << m_prefix
348  << "', state of object is:"
349  << "\n" << *this
350  << std::endl;
351  }
352 
353 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
354  if (m_ov.m_rawChainComputeStats) {
355  m_rawChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "rawChain_",m_ov.m_alternativeRawSsOptionsValues);
356  m_rawChainStatOptsInstantiated = true;
357  }
358  if (m_ov.m_filteredChainComputeStats) {
359  m_filteredChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "filteredChain_",m_ov.m_alternativeFilteredSsOptionsValues);
360  m_filteredChainStatOptsInstantiated = true;
361  }
362 #endif
363 }
364 // Copy constructor---------------------------------
366  const MLSamplingLevelOptions& mlOptions)
367  :
368 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
369  m_ov (NULL,NULL), // dakota
370  m_rawChainStatisticalOptionsObj (NULL),
371  m_rawChainStatOptsInstantiated (false),
372  m_filteredChainStatisticalOptionsObj (NULL),
373  m_filteredChainStatOptsInstantiated (false),
374 #else
375  m_ov (),
376 #endif
377  m_prefix (mlOptions.m_prefix),
378  m_env (mlOptions.env()),
379  m_optionsDesc (NULL),
380  m_option_help (m_prefix + "help" ),
381  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
382  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
383  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
384  m_option_totallyMute (m_prefix + "totallyMute" ),
385  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
386  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
387  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
388  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
389  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ),
390  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
391  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
392  m_option_rawChain_size (m_prefix + "rawChain_size" ),
393  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
394  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
395  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
396  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
397  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
398  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
399  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
400  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
401 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
402  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
403 #endif
404  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
405  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
406  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
407  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
408  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
409  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
410  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
411 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
412  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
413 #endif
414  m_option_displayCandidates (m_prefix + "displayCandidates" ),
415  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
416  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
417  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
418  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
419  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
420  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
421  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
422  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
423  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
424  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "am_adaptedMatrices_dataOutputPeriod" ),
425  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "am_adaptedMatrices_dataOutputFileName" ),
426  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "am_adaptedMatrices_dataOutputFileType" ),
427  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "am_adaptedMatrices_dataOutputAllowAll" ),
428  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "am_adaptedMatrices_dataOutputAllowedSet" ),
429  m_option_am_eta (m_prefix + "am_eta" ),
430  m_option_am_epsilon (m_prefix + "am_epsilon" ),
431  m_option_enableBrooksGelmanConvMonitor (m_prefix + "enableBrooksGelmanConvMonitor" ),
432  m_option_BrooksGelmanLag (m_prefix + "BrooksGelmanLag" )
433 {
437  m_ov.m_totallyMute = mlOptions.m_totallyMute;
445  m_ov.m_rawChainSize = mlOptions.m_rawChainSize;
454 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
455  m_ov.m_rawChainComputeStats = mlOptions.m_rawChainComputeStats;
456 #endif
464 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
465  m_ov.m_filteredChainComputeStats = mlOptions.m_filteredChainComputeStats;
466 #endif
482  m_ov.m_amEta = mlOptions.m_amEta;
483  m_ov.m_amEpsilon = mlOptions.m_amEpsilon;
486 
487 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
488 //m_ov.m_alternativeRawSsOptionsValues = mlOptions.; // dakota
489 //m_ov.m_alternativeFilteredSsOptionsValues = mlOptions.; // dakota
490 #endif
491 
492 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
493  m_rawChainStatisticalOptionsObj = mlOptions.m_rawChainStatisticalOptionsObj; // dakota
494  m_rawChainStatOptsInstantiated = false;
495  m_filteredChainStatisticalOptionsObj = mlOptions.m_filteredChainStatisticalOptionsObj; // dakota
496  m_filteredChainStatOptsInstantiated = false;
497 #endif
498  if ((m_env.subDisplayFile() != NULL ) &&
499  (m_ov.m_totallyMute == false)) {
500  *m_env.subDisplayFile() << "In MetropolisHastingsSGOptions::constructor(3)"
501  << ": after copying values of options with prefix '" << m_prefix
502  << "', state of object is:"
503  << "\n" << *this
504  << std::endl;
505  }
506 }
507 // Destructor --------------------------------------
509 {
510 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
511  if (m_filteredChainStatOptsInstantiated) delete m_filteredChainStatisticalOptionsObj;
512  if (m_rawChainStatOptsInstantiated ) delete m_rawChainStatisticalOptionsObj;
513 #endif
514  if (m_optionsDesc ) delete m_optionsDesc;
515 }
516 
517 // I/O methods -------------------------------------
518 void
520 {
522  m_env.worldRank(),
523  "MetropolisHastingsSGOptions::scanOptionsValues()",
524  "m_optionsDesc variable is NULL");
525 
529 
530  if ((m_env.subDisplayFile() != NULL) &&
531  (m_ov.m_totallyMute == false )) {
532  *m_env.subDisplayFile() << "In MetropolisHastingsSGOptions::scanOptionsValues()"
533  << ": after reading values of options with prefix '" << m_prefix
534  << "', state of object is:"
535  << "\n" << *this
536  << std::endl;
537  }
538 
539 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
540  if (m_ov.m_rawChainComputeStats) {
541  m_rawChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "rawChain_");
542  m_rawChainStatOptsInstantiated = true;
543  }
544  if (m_ov.m_filteredChainComputeStats) {
545  m_filteredChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "filteredChain_");
546  m_filteredChainStatOptsInstantiated = true;
547  }
548 #endif
549 
550  return;
551 }
552 // -------------------------------------------------
553 void
554 MetropolisHastingsSGOptions::print(std::ostream& os) const
555 {
558  << "\n" << m_option_dataOutputAllowedSet << " = ";
559  for (std::set<unsigned int>::iterator setIt = m_ov.m_dataOutputAllowedSet.begin(); setIt != m_ov.m_dataOutputAllowedSet.end(); ++setIt) {
560  os << *setIt << " ";
561  }
562  os << "\n" << m_option_totallyMute << " = " << m_ov.m_totallyMute
567  << "\n" << m_option_listOfDisabledParameters << " = ";
568  for (std::set<unsigned int>::iterator setIt = m_ov.m_parameterDisabledSet.begin(); setIt != m_ov.m_parameterDisabledSet.end(); ++setIt) {
569  os << *setIt << " ";
570  }
573  << "\n" << m_option_rawChain_size << " = " << m_ov.m_rawChainSize
581  << "\n" << m_option_rawChain_dataOutputAllowedSet << " = ";
582  for (std::set<unsigned int>::iterator setIt = m_ov.m_rawChainDataOutputAllowedSet.begin(); setIt != m_ov.m_rawChainDataOutputAllowedSet.end(); ++setIt) {
583  os << *setIt << " ";
584  }
585  os
586 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
587  << "\n" << m_option_rawChain_computeStats << " = " << m_ov.m_rawChainComputeStats
588 #endif
591  << "\n" << m_option_filteredChain_lag << " = " << m_ov.m_filteredChainLag
596  for (std::set<unsigned int>::iterator setIt = m_ov.m_filteredChainDataOutputAllowedSet.begin(); setIt != m_ov.m_filteredChainDataOutputAllowedSet.end(); ++setIt) {
597  os << *setIt << " ";
598  }
599  os
600 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
601  << "\n" << m_option_filteredChain_computeStats << " = " << m_ov.m_filteredChainComputeStats
602 #endif
608  << "\n" << m_option_dr_listOfScalesForExtraStages << " = ";
609  for (unsigned int i = 0; i < m_ov.m_drScalesForExtraStages.size(); ++i) {
610  os << m_ov.m_drScalesForExtraStages[i] << " ";
611  }
615  << "\n" << m_option_am_adaptInterval << " = " << m_ov.m_amAdaptInterval
621  for (std::set<unsigned int>::iterator setIt = m_ov.m_amAdaptedMatricesDataOutputAllowedSet.begin(); setIt != m_ov.m_amAdaptedMatricesDataOutputAllowedSet.end(); ++setIt) {
622  os << *setIt << " ";
623  }
624  os << "\n" << m_option_am_eta << " = " << m_ov.m_amEta
625  << "\n" << m_option_am_epsilon << " = " << m_ov.m_amEpsilon
627  << "\n" << m_option_BrooksGelmanLag << " = " << m_ov.m_BrooksGelmanLag
628  << std::endl;
629 
630  return;
631 }
632 
633 // Private methods----------------------------------
634 void
635 MetropolisHastingsSGOptions::defineMyOptions(po::options_description& optionsDesc) const
636 {
637  optionsDesc.add_options()
638  (m_option_help.c_str(), "produce help msg for Bayesian Metropolis-Hastings" )
639  (m_option_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_DATA_OUTPUT_FILE_NAME_ODV ), "name of generic output file" )
640  (m_option_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DATA_OUTPUT_ALLOW_ALL_ODV ), "allow all subEnvs write to a generic output file" )
641  (m_option_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write to generic output file" )
642  (m_option_totallyMute.c_str(), po::value<bool >()->default_value(UQ_MH_SG_TOTALLY_MUTE_ODV ), "totally mute (no printout msg)" )
643  (m_option_initialPosition_dataInputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV ), "name of input file for raw chain " )
644  (m_option_initialPosition_dataInputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV ), "type of input file for raw chain " )
645  (m_option_initialProposalCovMatrix_dataInputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV), "name of input file for raw chain " )
646  (m_option_initialProposalCovMatrix_dataInputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV), "type of input file for raw chain " )
647  (m_option_listOfDisabledParameters.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_LIST_OF_DISABLED_PARAMETERS_ODV ), "list of disabled parameters" )
648  (m_option_rawChain_dataInputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV ), "name of input file for raw chain " )
649  (m_option_rawChain_dataInputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV ), "type of input file for raw chain " )
650  (m_option_rawChain_size.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_RAW_CHAIN_SIZE_ODV ), "size of raw chain" )
651  (m_option_rawChain_generateExtra.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_GENERATE_EXTRA_ODV ), "generate extra information about raw chain" )
652  (m_option_rawChain_displayPeriod.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_RAW_CHAIN_DISPLAY_PERIOD_ODV ), "period of msg display during raw chain generation" )
653  (m_option_rawChain_measureRunTimes.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_MEASURE_RUN_TIMES_ODV ), "measure run times" )
654  (m_option_rawChain_dataOutputPeriod.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV ), "period of msg display during raw chain generation" )
655  (m_option_rawChain_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV ), "name of output file for raw chain " )
656  (m_option_rawChain_dataOutputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV ), "type of output file for raw chain " )
657  (m_option_rawChain_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV ), "allow all subEnvs to write raw chain to an output file" )
658  (m_option_rawChain_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write raw chain to output file" )
659 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
660  (m_option_rawChain_computeStats.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_COMPUTE_STATS_ODV ), "compute statistics on raw chain" )
661 #endif
662  (m_option_filteredChain_generate.c_str(), po::value<bool >()->default_value(UQ_MH_SG_FILTERED_CHAIN_GENERATE_ODV ), "generate filtered chain" )
663  (m_option_filteredChain_discardedPortion.c_str(), po::value<double >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DISCARDED_PORTION_ODV ), "initial discarded portion for chain filtering" )
664  (m_option_filteredChain_lag.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_FILTERED_CHAIN_LAG_ODV ), "spacing for chain filtering" )
665  (m_option_filteredChain_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV ), "name of output file for filtered chain" )
666  (m_option_filteredChain_dataOutputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV ), "type of output file for filtered chain" )
667  (m_option_filteredChain_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV ), "allow all subEnvs to write filt chain to an output file" )
668  (m_option_filteredChain_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write filt chain to output file" )
669 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
670  (m_option_filteredChain_computeStats.c_str(), po::value<bool >()->default_value(UQ_MH_SG_FILTERED_CHAIN_COMPUTE_STATS_ODV ), "compute statistics on filtered chain" )
671 #endif
672  (m_option_displayCandidates.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DISPLAY_CANDIDATES_ODV ), "display candidates in the core MH algorithm" )
673  (m_option_putOutOfBoundsInChain.c_str(), po::value<bool >()->default_value(UQ_MH_SG_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV ), "put 'out of bound' candidates in chain as well" )
674  (m_option_tk_useLocalHessian.c_str(), po::value<bool >()->default_value(UQ_MH_SG_TK_USE_LOCAL_HESSIAN_ODV ), "'proposal' use local Hessian" )
675  (m_option_tk_useNewtonComponent.c_str(), po::value<bool >()->default_value(UQ_MH_SG_TK_USE_NEWTON_COMPONENT_ODV ), "'proposal' use Newton component" )
676  (m_option_dr_maxNumExtraStages.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_DR_MAX_NUM_EXTRA_STAGES_ODV ), "'dr' maximum number of extra stages" )
677  (m_option_dr_listOfScalesForExtraStages.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_DR_LIST_OF_SCALES_FOR_EXTRA_STAGES_ODV ), "'dr' scales for prop cov matrices from 2nd stage on" )
678  (m_option_dr_duringAmNonAdaptiveInt.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DR_DURING_AM_NON_ADAPTIVE_INT_ODV ), "'dr' used during 'am' non adaptive interval" )
679  (m_option_am_keepInitialMatrix.c_str(), po::value<bool >()->default_value(UQ_MH_SG_AM_KEEP_INITIAL_MATRIX_ODV ), "'am' keep initial (given) matrix" )
680  (m_option_am_initialNonAdaptInterval.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_AM_INIT_NON_ADAPT_INT_ODV ), "'am' initial non adaptation interval" )
681  (m_option_am_adaptInterval.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_AM_ADAPT_INTERVAL_ODV ), "'am' adaptation interval" )
682  (m_option_am_adaptedMatrices_dataOutputPeriod.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV ), "period for outputting 'am' adapted matrices" )
683  (m_option_am_adaptedMatrices_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV ), "name of output file for 'am' adapted matrices" )
684  (m_option_am_adaptedMatrices_dataOutputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV ), "type of output file for 'am' adapted matrices" )
685  (m_option_am_adaptedMatrices_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV ), "type of output file for 'am' adapted matrices" )
686  (m_option_am_adaptedMatrices_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOWED_SET_ODV ), "type of output file for 'am' adapted matrices" )
687  (m_option_am_eta.c_str(), po::value<double >()->default_value(UQ_MH_SG_AM_ETA_ODV ), "'am' eta" )
688  (m_option_am_epsilon.c_str(), po::value<double >()->default_value(UQ_MH_SG_AM_EPSILON_ODV ), "'am' epsilon" )
689  (m_option_enableBrooksGelmanConvMonitor.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_ENABLE_BROOKS_GELMAN_CONV_MONITOR ), "assess convergence using Brooks-Gelman metric" )
690  (m_option_BrooksGelmanLag.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_BROOKS_GELMAN_LAG ), "number of chain positions before starting to compute metric")
691  ;
692 
693  return;
694 }
695 // -------------------------------------------------
696 void
697 MetropolisHastingsSGOptions::getMyOptionValues(po::options_description& optionsDesc)
698 {
699  if (m_env.allOptionsMap().count(m_option_help)) {
700  if ((m_env.subDisplayFile()) &&
701  (m_ov.m_totallyMute == false)) {
702  *m_env.subDisplayFile() << optionsDesc
703  << std::endl;
704  }
705  }
706 
708  m_ov.m_dataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dataOutputFileName]).as<std::string>();
709  }
710 
711  if (m_env.allOptionsMap().count(m_option_dataOutputAllowAll.c_str())) {
713  }
714 
717  }
720  std::vector<double> tmpAllow(0,0.);
721  std::string inputString = m_env.allOptionsMap()[m_option_dataOutputAllowedSet].as<std::string>();
722  MiscReadDoublesFromString(inputString,tmpAllow);
723 
724  if (tmpAllow.size() > 0) {
725  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
726  m_ov.m_dataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
727  }
728  }
729  }
730 
732  m_ov.m_totallyMute = ((const po::variable_value&) m_env.allOptionsMap()[m_option_totallyMute]).as<bool>();
733  }
734 
737  }
738 
741  }
742 
745  }
746 
749  }
750 
753  std::vector<double> tmpAllow(0,0.);
754  std::string inputString = m_env.allOptionsMap()[m_option_listOfDisabledParameters].as<std::string>();
755  MiscReadDoublesFromString(inputString,tmpAllow);
756  if (tmpAllow.size() > 0) {
757  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
758  m_ov.m_parameterDisabledSet.insert((unsigned int) tmpAllow[i]);
759  }
760  }
761  }
762 
764  m_ov.m_rawChainDataInputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataInputFileName]).as<std::string>();
765  }
766 
768  m_ov.m_rawChainDataInputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataInputFileType]).as<std::string>();
769  }
770 
772  m_ov.m_rawChainSize = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_size]).as<unsigned int>();
773  }
774 
776  m_ov.m_rawChainDisplayPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_displayPeriod]).as<unsigned int>();
777  }
778 
780  m_ov.m_rawChainMeasureRunTimes = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_measureRunTimes]).as<bool>();
781  }
782 
784  m_ov.m_rawChainDataOutputPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputPeriod]).as<unsigned int>();
785  }
786 
788  m_ov.m_rawChainDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputFileName]).as<std::string>();
789  }
790 
792  m_ov.m_rawChainDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputFileType]).as<std::string>();
793  }
794 
797  }
798 
801  }
804  std::vector<double> tmpAllow(0,0.);
805  std::string inputString = m_env.allOptionsMap()[m_option_rawChain_dataOutputAllowedSet].as<std::string>();
806  MiscReadDoublesFromString(inputString,tmpAllow);
807 
808  if (tmpAllow.size() > 0) {
809  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
810  m_ov.m_rawChainDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
811  }
812  }
813  }
814 
815 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
816  if (m_env.allOptionsMap().count(m_option_rawChain_computeStats)) {
817  m_ov.m_rawChainComputeStats = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_computeStats]).as<bool>();
818  }
819 #endif
821  m_ov.m_rawChainGenerateExtra = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_generateExtra]).as<bool>();
822  }
823 
825  m_ov.m_filteredChainGenerate = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_generate]).as<bool>();
826  }
827 
830  }
831 
833  m_ov.m_filteredChainLag = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_lag]).as<unsigned int>();
834  }
835  if ((m_ov.m_filteredChainGenerate == true) &&
836  (m_ov.m_filteredChainLag < 2 )) {
837  std::cerr << "WARNING In MetropolisHastingsSG<P_V,P_M>::getMyOptionsValues()"
838  << ", worldRank " << m_env.worldRank()
839  << ", fullRank " << m_env.fullRank()
840  << ", subEnvironment " << m_env.subId()
841  << ", subRank " << m_env.subRank()
842  << ", inter0Rank " << m_env.inter0Rank()
843  << ": forcing the value of '" << m_option_filteredChain_lag
844  << "' from " << m_ov.m_filteredChainLag
845  << " to " << 2
846  << std::endl;
848  }
849 
851  m_ov.m_filteredChainDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_dataOutputFileName]).as<std::string>();
852  }
853 
855  m_ov.m_filteredChainDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_dataOutputFileType]).as<std::string>();
856  }
857 
860  }
861 
864  }
867  std::vector<double> tmpAllow(0,0.);
868  std::string inputString = m_env.allOptionsMap()[m_option_filteredChain_dataOutputAllowedSet].as<std::string>();
869  MiscReadDoublesFromString(inputString,tmpAllow);
870 
871  if (tmpAllow.size() > 0) {
872  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
873  m_ov.m_filteredChainDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
874  }
875  }
876  }
877 
878 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
879  if (m_env.allOptionsMap().count(m_option_filteredChain_computeStats)) {
880  m_ov.m_filteredChainComputeStats = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_computeStats]).as<bool>();
881  }
882 #endif
884  m_ov.m_displayCandidates = ((const po::variable_value&) m_env.allOptionsMap()[m_option_displayCandidates]).as<bool>();
885  }
886 
888  m_ov.m_putOutOfBoundsInChain = ((const po::variable_value&) m_env.allOptionsMap()[m_option_putOutOfBoundsInChain]).as<bool>();
889  }
890 
892  m_ov.m_tkUseLocalHessian = ((const po::variable_value&) m_env.allOptionsMap()[m_option_tk_useLocalHessian]).as<bool>();
893  }
894 
896  m_ov.m_tkUseNewtonComponent = ((const po::variable_value&) m_env.allOptionsMap()[m_option_tk_useNewtonComponent]).as<bool>();
897  }
898 
900  m_ov.m_drMaxNumExtraStages = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_maxNumExtraStages]).as<unsigned int>();
901  }
902 
903  std::vector<double> tmpScales(0,0.);
905  std::string inputString = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_listOfScalesForExtraStages]).as<std::string>();
906  MiscReadDoublesFromString(inputString,tmpScales);
907  //if (m_env.subDisplayFile()) {
908  // *m_env.subDisplayFile() << "In MetropolisHastingsSG<P_V,P_M>::getMyOptionValues(): scales =";
909  // for (unsigned int i = 0; i < tmpScales.size(); ++i) {
910  // *m_env.subDisplayFile() << " " << tmpScales[i];
911  // }
912  // *m_env.subDisplayFile() << std::endl;
913  //}
914  }
915 
916  if (m_ov.m_drMaxNumExtraStages > 0) {
917  double scale = 1.0;
918  unsigned int tmpSize = tmpScales.size();
919 
922  for (unsigned int i = 0; i < m_ov.m_drMaxNumExtraStages; ++i) {
923  if (i < tmpSize) scale = tmpScales[i];
924  m_ov.m_drScalesForExtraStages[i] = scale;
925  }
926  //updateTK();
927  }
928 
930  m_ov.m_drDuringAmNonAdaptiveInt = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_duringAmNonAdaptiveInt]).as<bool>();
931  }
932 
934  m_ov.m_amKeepInitialMatrix = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_keepInitialMatrix]).as<bool>();
935  }
936 
938  m_ov.m_amInitialNonAdaptInterval = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_initialNonAdaptInterval]).as<unsigned int>();
939  }
940 
942  m_ov.m_amAdaptInterval = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_adaptInterval]).as<unsigned int>();
943  }
944 
947  }
948 
951  }
952 
955  }
956 
959  }
960 
963  }
966  std::vector<double> tmpAllow(0,0.);
967  std::string inputString = m_env.allOptionsMap()[m_option_am_adaptedMatrices_dataOutputAllowedSet].as<std::string>();
968  MiscReadDoublesFromString(inputString,tmpAllow);
969 
970  if (tmpAllow.size() > 0) {
971  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
972  m_ov.m_amAdaptedMatricesDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
973  }
974  }
975  }
976 
977  if (m_env.allOptionsMap().count(m_option_am_eta)) {
978  m_ov.m_amEta = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_eta]).as<double>();
979  }
980 
981  if (m_env.allOptionsMap().count(m_option_am_epsilon)) {
982  m_ov.m_amEpsilon = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_epsilon]).as<double>();
983  }
984 
986  m_ov.m_enableBrooksGelmanConvMonitor = ((const po::variable_value&) m_env.allOptionsMap()[m_option_enableBrooksGelmanConvMonitor]).as<unsigned int>();
987  }
988 
990  m_ov.m_BrooksGelmanLag = ((const po::variable_value&) m_env.allOptionsMap()[m_option_BrooksGelmanLag]).as<unsigned int>();
991  }
992 
993  return;
994 }
995 
996 // --------------------------------------------------
997 // Operator declared outside class definition ------
998 // --------------------------------------------------
999 
1000 std::ostream& operator<<(std::ostream& os, const MetropolisHastingsSGOptions& obj)
1001 {
1002  obj.print(os);
1003 
1004  return os;
1005 }
1006 
1007 } // End namespace QUESO
#define UQ_MH_SG_DR_LIST_OF_SCALES_FOR_EXTRA_STAGES_ODV
std::string m_rawChainDataOutputFileType
Type of output file for raw chain.
std::string m_amAdaptedMatricesDataOutputFileName
Name of output file for &#39;am&#39; adapted matrices.
std::string m_initialProposalCovMatrixDataInputFileType
Type of input file for initial proposal covariance matrix.
#define UQ_MH_SG_DATA_OUTPUT_ALLOW_ALL_ODV
bool m_filteredChainGenerate
Whether or not to generate filtered chain.
#define UQ_MH_SG_FILTERED_CHAIN_DISCARDED_PORTION_ODV
int subRank() const
Access function for sub-rank.
Definition: Environment.C:263
#define UQ_MH_SG_RAW_CHAIN_GENERATE_EXTRA_ODV
#define UQ_MH_SG_AM_ETA_ODV
#define UQ_MH_SG_BROOKS_GELMAN_LAG
#define UQ_MH_SG_RAW_CHAIN_MEASURE_RUN_TIMES_ODV
unsigned int m_amAdaptInterval
&#39;am&#39; adaptation interval.
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV
bool m_putOutOfBoundsInChain
Put &#39;out of bound&#39; candidates in chain as well.
std::set< unsigned int > m_parameterDisabledSet
unsigned int m_rawChainSize
Size of raw chain.
int inter0Rank() const
Returns the process inter0 rank.
Definition: Environment.C:289
bool m_amAdaptedMatricesDataOutputAllowAll
Whether or not subEnvs will write to output file for &#39;am&#39; adapted matrices.
double m_filteredChainDiscardedPortion
Initial discarded portion for chain filtering.
int worldRank() const
Returns the process world rank.
Definition: Environment.C:235
std::string m_amAdaptedMatricesDataOutputFileType
Type of output file for &#39;am&#39; adapted matrices.
#define UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV
#define UQ_MH_SG_AM_EPSILON_ODV
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:305
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV
void scanOptionsValues()
It scans the option values from the options input file.
std::string m_initialProposalCovMatrixDataInputFileName
#define UQ_MH_SG_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV
void print(std::ostream &os) const
It prints the option values.
unsigned int m_amInitialNonAdaptInterval
&#39;am&#39; initial non adaptation interval
unsigned int m_filteredChainLag
Spacing for chain filtering.
#define UQ_MH_SG_ENABLE_BROOKS_GELMAN_CONV_MONITOR
#define UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOWED_SET_ODV
void defineMyOptions(po::options_description &optionsDesc) const
Defines the options for the Metropolis-Hastings generator of samples as the default options...
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV
#define UQ_MH_SG_DATA_OUTPUT_ALLOWED_SET_ODV
po::variables_map & allOptionsMap() const
Definition: Environment.C:368
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:187
bool m_dataOutputAllowAll
subEnvs that will write to generic output file.
bool m_tkUseLocalHessian
Whether or not &#39;proposal&#39; uses local Hessian.
void getMyOptionValues(po::options_description &optionsDesc)
Gets the sequence options defined to the Metropolis-Hastings algorithm.
#define UQ_MH_SG_DR_MAX_NUM_EXTRA_STAGES_ODV
#define UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV
double m_amEta
Proposal covariance scaling factor, usually 2.4 * 2.4 / d.
std::set< unsigned int > m_rawChainDataOutputAllowedSet
unsigned int m_drMaxNumExtraStages
&#39;dr&#39; maximum number of extra stages.
std::string m_dataOutputFileName
Name of generic output file.
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV
unsigned int m_rawChainDataOutputPeriod
Period of message display during raw chain generation.
std::string m_option_am_epsilon
See MhOptionsValues::m_amEpsilon.
std::string m_rawChainDataInputFileType
Type of input file for raw chain.
std::string m_initialProposalCovMatrixDataInputFileType
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV
#define UQ_MH_SG_RAW_CHAIN_DISPLAY_PERIOD_ODV
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:341
std::set< unsigned int > m_filteredChainDataOutputAllowedSet
subEnvs that will write to output file for filtered chain.
#define UQ_MH_SG_FILTERED_CHAIN_GENERATE_ODV
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV
std::set< unsigned int > m_filteredChainDataOutputAllowedSet
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)
Definition: Defines.h:222
std::set< unsigned int > m_rawChainDataOutputAllowedSet
subEnvs that will write to output file for raw chain.
std::set< unsigned int > m_parameterDisabledSet
std::set< unsigned int > m_amAdaptedMatricesDataOutputAllowedSet
subEnvs that will write to output file for &#39;am&#39; adapted matrices.
unsigned int m_rawChainDisplayPeriod
Period of message display during raw chain generation.
std::string m_filteredChainDataOutputFileType
Type of output file for filtered chain.
#define UQ_MH_SG_DR_DURING_AM_NON_ADAPTIVE_INT_ODV
unsigned int m_amAdaptedMatricesDataOutputPeriod
Period for outputing &#39;am&#39; adapted matrices.
MetropolisHastingsSGOptions(const BaseEnvironment &env, const char *prefix)
Constructor: reads options from the input file.
std::vector< double > m_drScalesForExtraStages
&#39;dr&#39; list of scales for proposal covariance matrices from 2nd stage on.
std::string m_initialPositionDataInputFileName
Name of input file for initial position.
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV
std::string m_initialPositionDataInputFileType
Type of input file for initial position.
bool m_amKeepInitialMatrix
Whether or not &#39;am&#39; will keep initial (given) matrix.
std::vector< double > m_drScalesForExtraStages
MhOptionsValues & operator=(const MhOptionsValues &rhs)
Assignment operator; it copies rhs to this.
bool m_tkUseNewtonComponent
Whether or not &#39;proposal&#39; uses Newton component.
#define UQ_MH_SG_TK_USE_LOCAL_HESSIAN_ODV
#define UQ_MH_SG_DATA_OUTPUT_FILE_NAME_ODV
bool m_rawChainMeasureRunTimes
Whether or not to measure run times.
int fullRank() const
Returns the process full rank.
Definition: Environment.C:241
MhOptionsValues()
Default constructor.
bool m_displayCandidates
Display candidates generated in the core MH algorithm.
void copy(const MhOptionsValues &src)
Copies the option values from src to this.
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV
This class provides options for each level of the Multilevel sequence generator if no input file is a...
bool m_drDuringAmNonAdaptiveInt
Whether or not &#39;dr&#39; is used during &#39;am&#39; non adaptive interval.
#define UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV
#define UQ_MH_SG_DISPLAY_CANDIDATES_ODV
std::set< unsigned int > m_dataOutputAllowedSet
bool m_totallyMute
Whether or not to be totally mute (no printout message).
#define UQ_MH_SG_FILTERED_CHAIN_LAG_ODV
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV
#define UQ_MH_SG_LIST_OF_DISABLED_PARAMETERS_ODV
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV
#define UQ_MH_SG_AM_INIT_NON_ADAPT_INT_ODV
This class provides options for the Metropolis-Hastings generator of samples if no input file is avai...
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
double m_amEpsilon
Regularisation parameter for the DRAM covariance matrix.
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV
std::string m_initialProposalCovMatrixDataInputFileName
Name of input file for initial proposal covariance matrix.
bool m_filteredChainDataOutputAllowAll
Whether or not subEnvs will write to output file for filtered chain.
#define UQ_MH_SG_RAW_CHAIN_SIZE_ODV
std::string m_rawChainDataInputFileName
Name of input file for raw chain.
#define UQ_MH_SG_AM_ADAPT_INTERVAL_ODV
std::string m_rawChainDataOutputFileName
Name of output file for raw chain.
bool m_rawChainDataOutputAllowAll
Whether or not subEnvs will write to output file for raw chain.
MhOptionsValues m_ov
This class is where the actual options are stored.
std::set< unsigned int > m_amAdaptedMatricesDataOutputAllowedSet
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:329
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_MH_SG_TOTALLY_MUTE_ODV
double m_amEta
&#39;am&#39; eta.
#define UQ_MH_SG_AM_KEEP_INITIAL_MATRIX_ODV
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV
#define UQ_MH_SG_TK_USE_NEWTON_COMPONENT_ODV
double m_amEpsilon
&#39;am&#39; epsilon.
bool m_rawChainGenerateExtra
Generate extra information about raw chain.
void MiscReadDoublesFromString(const std::string &inputString, std::vector< double > &outputDoubles)
Definition: Miscellaneous.C:39
std::string m_option_am_eta
See MhOptionsValues::m_amEta.
#define UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV
std::string m_filteredChainDataOutputFileName
Name of output file for filtered chain.
std::set< unsigned int > m_dataOutputAllowedSet
subEnvs that will write to generic output file.
void scanInputFileForMyOptions(const po::options_description &optionsDesc) const
This method scans the input file provided by the user to QUESO.
Definition: Environment.C:378
This class reads the options for the Metropolis-Hastings generator of samples from an input file...

Generated on Thu Apr 23 2015 19:18:34 for queso-0.50.1 by  doxygen 1.8.5