queso-0.51.1
MLSamplingLevelOptions.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/MLSamplingLevelOptions.h>
26 #include <queso/Miscellaneous.h>
27 
28 namespace QUESO {
29 
31  const BaseEnvironment& env,
32  const char* prefix)
33  :
34  m_prefix ((std::string)(prefix) + ""),
36 #else
37  m_checkpointOutputFileName (UQ_ML_SAMPLING_L_CHECKPOINT_OUTPUT_FILE_NAME_ODV),
38 #endif
40  m_dataOutputFileName (UQ_ML_SAMPLING_L_DATA_OUTPUT_FILE_NAME_ODV),
41  m_dataOutputAllowAll (UQ_ML_SAMPLING_L_DATA_OUTPUT_ALLOW_ALL_ODV),
42 //m_dataOutputAllowedSet (),
43  m_str1 (""),
44  m_loadBalanceAlgorithmId (UQ_ML_SAMPLING_L_LOAD_BALANCE_ALGORITHM_ID_ODV),
45  m_loadBalanceTreshold (UQ_ML_SAMPLING_L_LOAD_BALANCE_TRESHOLD_ODV),
46  m_minEffectiveSizeRatio (UQ_ML_SAMPLING_L_MIN_EFFECTIVE_SIZE_RATIO_ODV),
47  m_maxEffectiveSizeRatio (UQ_ML_SAMPLING_L_MAX_EFFECTIVE_SIZE_RATIO_ODV),
48  m_scaleCovMatrix (UQ_ML_SAMPLING_L_SCALE_COV_MATRIX_ODV),
49  m_minRejectionRate (UQ_ML_SAMPLING_L_MIN_REJECTION_RATE_ODV),
50  m_maxRejectionRate (UQ_ML_SAMPLING_L_MAX_REJECTION_RATE_ODV),
51  m_covRejectionRate (UQ_ML_SAMPLING_L_COV_REJECTION_RATE_ODV),
52  m_minAcceptableEta (UQ_ML_SAMPLING_L_MIN_ACCEPTABLE_ETA_ODV), // gpmsa1
53  m_totallyMute (UQ_ML_SAMPLING_L_TOTALLY_MUTE_ODV),
54  m_initialPositionDataInputFileName (UQ_ML_SAMPLING_L_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV),
55  m_initialPositionDataInputFileType (UQ_ML_SAMPLING_L_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV),
56  m_initialProposalCovMatrixDataInputFileName(UQ_ML_SAMPLING_L_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV),
57  m_initialProposalCovMatrixDataInputFileType(UQ_ML_SAMPLING_L_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV),
58  m_initialPositionUsePreviousLevelLikelihood(UQ_ML_SAMPLING_L_INITIAL_POSITION_USE_PREVIOUS_LEVEL_LIKELIHOOD_ODV), // ml_likelihood_caching
59 //m_parameterDisabledSet (), // gpmsa2
60  m_str2 (""),
61  m_initialValuesOfDisabledParameters (0),
62  m_str3 (""),
63  m_rawChainDataInputFileName (UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV),
64  m_rawChainDataInputFileType (UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV),
65  m_rawChainSize (UQ_ML_SAMPLING_L_RAW_CHAIN_SIZE_ODV),
66  m_rawChainGenerateExtra (UQ_ML_SAMPLING_L_RAW_CHAIN_GENERATE_EXTRA_ODV),
67  m_rawChainDisplayPeriod (UQ_ML_SAMPLING_L_RAW_CHAIN_DISPLAY_PERIOD_ODV),
68  m_rawChainMeasureRunTimes (UQ_ML_SAMPLING_L_RAW_CHAIN_MEASURE_RUN_TIMES_ODV),
69  m_rawChainDataOutputPeriod (UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV),
70  m_rawChainDataOutputFileName (UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV),
71  m_rawChainDataOutputFileType (UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV),
72  m_rawChainDataOutputAllowAll (UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV),
73 //m_rawChainDataOutputAllowedSet (),
74  m_str4 (""),
75 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
76  m_rawChainComputeStats (UQ_ML_SAMPLING_L_RAW_CHAIN_COMPUTE_STATS_ODV),
77  m_rawChainStatisticalOptionsObj (NULL),
78  m_rawChainStatOptsInstantiated (false),
79 #endif
80  m_filteredChainGenerate (UQ_ML_SAMPLING_L_FILTERED_CHAIN_GENERATE_ODV),
81  m_filteredChainDiscardedPortion (UQ_ML_SAMPLING_L_FILTERED_CHAIN_DISCARDED_PORTION_ODV),
82  m_filteredChainLag (UQ_ML_SAMPLING_L_FILTERED_CHAIN_LAG_ODV),
83  m_filteredChainDataOutputFileName (UQ_ML_SAMPLING_L_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV),
84  m_filteredChainDataOutputFileType (UQ_ML_SAMPLING_L_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV),
85  m_filteredChainDataOutputAllowAll (UQ_ML_SAMPLING_L_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV),
86 //m_filteredChainDataOutputAllowedSet (),
87  m_str5 (""),
88 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
89  m_filteredChainComputeStats (UQ_ML_SAMPLING_L_FILTERED_CHAIN_COMPUTE_STATS_ODV),
90  m_filteredChainStatisticalOptionsObj (NULL),
91  m_filteredChainStatOptsInstantiated (false),
92 #endif
93  m_displayCandidates (UQ_ML_SAMPLING_L_DISPLAY_CANDIDATES_ODV),
94  m_putOutOfBoundsInChain (UQ_ML_SAMPLING_L_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV),
95  m_tkUseLocalHessian (UQ_ML_SAMPLING_L_TK_USE_LOCAL_HESSIAN_ODV),
96  m_tkUseNewtonComponent (UQ_ML_SAMPLING_L_TK_USE_NEWTON_COMPONENT_ODV),
97  m_drMaxNumExtraStages (UQ_ML_SAMPLING_L_DR_MAX_NUM_EXTRA_STAGES_ODV),
98  m_drScalesForExtraStages (0),
99  m_str6 ("1. "),
100  m_drDuringAmNonAdaptiveInt (UQ_ML_SAMPLING_L_DR_DURING_AM_NON_ADAPTIVE_INT_ODV),
101  m_amKeepInitialMatrix (UQ_ML_SAMPLING_L_AM_KEEP_INITIAL_MATRIX_ODV),
102  m_amInitialNonAdaptInterval (UQ_ML_SAMPLING_L_AM_INIT_NON_ADAPT_INT_ODV),
103  m_amAdaptInterval (UQ_ML_SAMPLING_L_AM_ADAPT_INTERVAL_ODV),
104  m_amAdaptedMatricesDataOutputPeriod (UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV),
105  m_amAdaptedMatricesDataOutputFileName (UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV),
106  m_amAdaptedMatricesDataOutputFileType (UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV),
107  m_amAdaptedMatricesDataOutputAllowAll (UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV),
108 //m_amAdaptedMatricesDataOutputAllowedSet (),
109  m_str7 (""),
110  m_amEta (UQ_ML_SAMPLING_L_AM_ETA_ODV),
111  m_amEpsilon (UQ_ML_SAMPLING_L_AM_EPSILON_ODV),
112  m_env (env),
113  m_optionsDesc (new po::options_description("Multilevel sampling level options")),
114  m_option_help (m_prefix + "help" ),
116 #else
117  m_option_checkpointOutputFileName (m_prefix + "checkpointOutputFileName" ),
118 #endif
119  m_option_stopAtEnd (m_prefix + "stopAtEnd" ),
120  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
121  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
122  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
123  m_option_loadBalanceAlgorithmId (m_prefix + "loadBalanceAlgorithmId" ),
124  m_option_loadBalanceTreshold (m_prefix + "loadBalanceTreshold" ),
125  m_option_minEffectiveSizeRatio (m_prefix + "minEffectiveSizeRatio" ),
126  m_option_maxEffectiveSizeRatio (m_prefix + "maxEffectiveSizeRatio" ),
127  m_option_scaleCovMatrix (m_prefix + "scaleCovMatrix" ),
128  m_option_minRejectionRate (m_prefix + "minRejectionRate" ),
129  m_option_maxRejectionRate (m_prefix + "maxRejectionRate" ),
130  m_option_covRejectionRate (m_prefix + "covRejectionRate" ),
131  m_option_minAcceptableEta (m_prefix + "minAcceptableEta" ), // gpmsa1
132  m_option_totallyMute (m_prefix + "totallyMute" ),
133  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
134  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
135  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
136  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
137  m_option_initialPositionUsePreviousLevelLikelihood (m_prefix + "initialPositionUsePreviousLevelLikelihood" ), // ml_likelihood_caching
138  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ), // gpmsa2
139  m_option_initialValuesOfDisabledParameters (m_prefix + "initialValuesOfDisabledParameters" ), // gpmsa2
140  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
141  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
142  m_option_rawChain_size (m_prefix + "rawChain_size" ),
143  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
144  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
145  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
146  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
147  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
148  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
149  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
150  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
151 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
152  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
153 #endif
154  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
155  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
156  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
157  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
158  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
159  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
160  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
161 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
162  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
163 #endif
164  m_option_displayCandidates (m_prefix + "displayCandidates" ),
165  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
166  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
167  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
168  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
169  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
170  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
171  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
172  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
173  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
174  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "amAdaptedMatrices_dataOutputPeriod" ),
175  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "amAdaptedMatrices_dataOutputFileName" ),
176  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "amAdaptedMatrices_dataOutputFileType" ),
177  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "amAdaptedMatrices_dataOutputAllowAll" ),
178  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "amAdaptedMatrices_dataOutputAllowedSet" ),
179  m_option_am_eta (m_prefix + "am_eta" ),
180  m_option_am_epsilon (m_prefix + "am_epsilon" ),
181  m_option_doLogitTransform (m_prefix + "doLogitTransform" )
182 {
183 }
184 
185 void
187 {
188 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
189 #else
191 #endif
192  m_stopAtEnd = srcOptions.m_stopAtEnd;
196  m_str1 = srcOptions.m_str1;
201  m_scaleCovMatrix = srcOptions.m_scaleCovMatrix;
205  m_minAcceptableEta = srcOptions.m_minAcceptableEta; // gpmsa1
206  m_totallyMute = srcOptions.m_totallyMute;
212  m_parameterDisabledSet = srcOptions.m_parameterDisabledSet; // gpmsa2
213  m_str2 = srcOptions.m_str2; // gpmsa2
215  m_str3 = srcOptions.m_str3;
218  m_rawChainSize = srcOptions.m_rawChainSize;
219 //std::cout << "In copy(), rawChainSize = " << m_rawChainSize << std::endl;
228  m_str4 = srcOptions.m_str4;
229 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
230  m_rawChainComputeStats = srcOptions.m_rawChainComputeStats;
231  m_rawChainStatisticalOptionsObj = NULL; // Yes, 'NULL'
232  m_rawChainStatOptsInstantiated = false;
233 #endif
241  m_str5 = srcOptions.m_str5;
242 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
243  m_filteredChainComputeStats = srcOptions.m_filteredChainComputeStats;
244  m_filteredChainStatisticalOptionsObj = NULL; // Yes, 'NULL'
245  m_filteredChainStatOptsInstantiated = false;
246 #endif
253  m_str6 = srcOptions.m_str6;
263  m_str7 = srcOptions.m_str7;
264  m_amEta = srcOptions.m_amEta;
265  m_amEpsilon = srcOptions.m_amEpsilon;
267 
268  return;
269 }
270 
272 {
273  //std::cout << "In MLSamplingLevelOptions::destructor()"
274  // << ": m_filteredChainStatOptsInstantiated = " << m_filteredChainStatOptsInstantiated
275  // << ", m_rawChainStatOptsInstantiated = " << m_rawChainStatOptsInstantiated
276  // << std::endl;
277  //sleep(1);
278 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
279  if (m_filteredChainStatOptsInstantiated) delete m_filteredChainStatisticalOptionsObj;
280  if (m_rawChainStatOptsInstantiated ) delete m_rawChainStatisticalOptionsObj;
281 #endif
282  if (m_optionsDesc ) delete m_optionsDesc;
283 }
284 
285 void
287 {
288  if (m_optionsDesc == NULL) m_optionsDesc = new po::options_description("Multilevel sampling level options");
289  if (defaultOptions) this->copyOptionsValues(*defaultOptions);
290 
294 
295  if ((m_env.subDisplayFile() != NULL ) &&
296  (1)) { //m_totallyMute == false)) {
297  *m_env.subDisplayFile() << "In MLSamplingLevelOptions::scanOptionsValues()"
298  << ": after getting values of options with prefix '" << m_prefix
299  << "', state of object is:"
300  << "\n" << *this
301  << std::endl;
302  }
303 
304 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
305  if (m_rawChainComputeStats) {
306  m_rawChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "rawChain_");
307  m_rawChainStatOptsInstantiated = true;
308  }
309  if (m_filteredChainComputeStats) {
310  m_filteredChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "filteredChain_");
311  m_filteredChainStatOptsInstantiated = true;
312  }
313 #endif
314  return;
315 }
316 
317 void
318 MLSamplingLevelOptions::defineMyOptions(po::options_description& optionsDesc) const
319 {
320  optionsDesc.add_options()
321  (m_option_help.c_str(), "produce help message for Bayesian Markov chain distr. calculator")
323 #else
324  (m_option_checkpointOutputFileName.c_str(), po::value<std::string >()->default_value(m_checkpointOutputFileName ), "name of checpoint output file" )
325 #endif
326  (m_option_stopAtEnd.c_str(), po::value<bool >()->default_value(m_stopAtEnd ), "stop at end of such level" )
327  (m_option_dataOutputFileName.c_str(), po::value<std::string >()->default_value(m_dataOutputFileName ), "name of generic output file" )
328  (m_option_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(m_dataOutputAllowAll ), "subEnvs that will write to generic output file" )
329  (m_option_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(m_str1 ), "subEnvs that will write to generic output file" )
330  (m_option_loadBalanceAlgorithmId.c_str(), po::value<unsigned int>()->default_value(m_loadBalanceAlgorithmId ), "Perform load balancing with chosen algorithm (0 = no balancing)" )
331  (m_option_loadBalanceTreshold.c_str(), po::value<double >()->default_value(m_loadBalanceTreshold ), "Perform load balancing if load unbalancing ratio > treshold" )
332  (m_option_minEffectiveSizeRatio.c_str(), po::value<double >()->default_value(m_minEffectiveSizeRatio ), "minimum allowed effective size ratio wrt previous level" )
333  (m_option_maxEffectiveSizeRatio.c_str(), po::value<double >()->default_value(m_maxEffectiveSizeRatio ), "maximum allowed effective size ratio wrt previous level" )
334  (m_option_scaleCovMatrix.c_str(), po::value<bool >()->default_value(m_scaleCovMatrix ), "scale proposal covariance matrix" )
335  (m_option_minRejectionRate.c_str(), po::value<double >()->default_value(m_minRejectionRate ), "minimum allowed attempted rejection rate at current level" )
336  (m_option_maxRejectionRate.c_str(), po::value<double >()->default_value(m_maxRejectionRate ), "maximum allowed attempted rejection rate at current level" )
337  (m_option_covRejectionRate.c_str(), po::value<double >()->default_value(m_covRejectionRate ), "c.o.v. for judging attempted rejection rate at current level" )
338  (m_option_minAcceptableEta.c_str(), po::value<double >()->default_value(m_minAcceptableEta ), "min acceptable eta" )
339  (m_option_totallyMute.c_str(), po::value<bool >()->default_value(m_totallyMute ), "totally mute (no printout message)" )
340  (m_option_initialPosition_dataInputFileName.c_str(), po::value<std::string >()->default_value(m_initialPositionDataInputFileName ), "name of input file for initial position" )
341  (m_option_initialPosition_dataInputFileType.c_str(), po::value<std::string >()->default_value(m_initialPositionDataInputFileType ), "type of input file for initial position" )
342  (m_option_initialProposalCovMatrix_dataInputFileName.c_str(), po::value<std::string >()->default_value(m_initialProposalCovMatrixDataInputFileName), "name of input file for initial proposal covariance matrix" )
343  (m_option_initialProposalCovMatrix_dataInputFileType.c_str(), po::value<std::string >()->default_value(m_initialProposalCovMatrixDataInputFileType), "type of input file for initial proposal covariance matrix" )
344  (m_option_initialPositionUsePreviousLevelLikelihood.c_str(), po::value<bool >()->default_value(m_initialPositionUsePreviousLevelLikelihood), "use previous level likelihood for initial chain position instead of re-computing from target pdf")
345  (m_option_listOfDisabledParameters.c_str(), po::value<std::string >()->default_value(m_str2 ), "list of disabled parameters" ) // gpmsa2
346  (m_option_initialValuesOfDisabledParameters.c_str(), po::value<std::string >()->default_value(m_str3 ), "initial values of disabled parameters" ) // gpmsa2
347  (m_option_rawChain_dataInputFileName.c_str(), po::value<std::string >()->default_value(m_rawChainDataInputFileName ), "name of input file for raw chain " )
348  (m_option_rawChain_dataInputFileType.c_str(), po::value<std::string >()->default_value(m_rawChainDataInputFileType ), "type of input file for raw chain " )
349  (m_option_rawChain_size.c_str(), po::value<unsigned int>()->default_value(m_rawChainSize ), "size of raw chain" )
350  (m_option_rawChain_generateExtra.c_str(), po::value<bool >()->default_value(m_rawChainGenerateExtra ), "generate extra information about raw chain" )
351  (m_option_rawChain_displayPeriod.c_str(), po::value<unsigned int>()->default_value(m_rawChainDisplayPeriod ), "period of message display during raw chain generation" )
352  (m_option_rawChain_measureRunTimes.c_str(), po::value<bool >()->default_value(m_rawChainMeasureRunTimes ), "measure run times" )
353  (m_option_rawChain_dataOutputPeriod.c_str(), po::value<unsigned int>()->default_value(m_rawChainDataOutputPeriod ), "period of message display during raw chain generation" )
354  (m_option_rawChain_dataOutputFileName.c_str(), po::value<std::string >()->default_value(m_rawChainDataOutputFileName ), "name of output file for raw chain " )
355  (m_option_rawChain_dataOutputFileType.c_str(), po::value<std::string >()->default_value(m_rawChainDataOutputFileType ), "type of output file for raw chain " )
356  (m_option_rawChain_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(m_rawChainDataOutputAllowAll ), "subEnvs that will write to output file for raw chain" )
357  (m_option_rawChain_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(m_str4 ), "subEnvs that will write to output file for raw chain" )
358 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
359  (m_option_rawChain_computeStats.c_str(), po::value<bool >()->default_value(m_rawChainComputeStats ), "compute statistics on raw chain" )
360 #endif
361  (m_option_filteredChain_generate.c_str(), po::value<bool >()->default_value(m_filteredChainGenerate ), "generate filtered chain" )
362  (m_option_filteredChain_discardedPortion.c_str(), po::value<double >()->default_value(m_filteredChainDiscardedPortion ), "initial discarded portion for chain filtering" )
363  (m_option_filteredChain_lag.c_str(), po::value<unsigned int>()->default_value(m_filteredChainLag ), "spacing for chain filtering" )
364  (m_option_filteredChain_dataOutputFileName.c_str(), po::value<std::string >()->default_value(m_filteredChainDataOutputFileName ), "name of output file for filtered chain" )
365  (m_option_filteredChain_dataOutputFileType.c_str(), po::value<std::string >()->default_value(m_filteredChainDataOutputFileType ), "type of output file for filtered chain" )
366  (m_option_filteredChain_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(m_filteredChainDataOutputAllowAll ), "subEnvs that will write to output file for filtered chain" )
367  (m_option_filteredChain_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(m_str5 ), "subEnvs that will write to output file for filtered chain" )
368 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
369  (m_option_filteredChain_computeStats.c_str(), po::value<bool >()->default_value(m_filteredChainComputeStats ), "compute statistics on filtered chain" )
370 #endif
371  (m_option_displayCandidates.c_str(), po::value<bool >()->default_value(m_displayCandidates ), "display candidates generated in the core MH algorithm" )
372  (m_option_putOutOfBoundsInChain.c_str(), po::value<bool >()->default_value(m_putOutOfBoundsInChain ), "put 'out of bound' candidates in chain as well" )
373  (m_option_tk_useLocalHessian.c_str(), po::value<bool >()->default_value(m_tkUseLocalHessian ), "'proposal' use local Hessian" )
374  (m_option_tk_useNewtonComponent.c_str(), po::value<bool >()->default_value(m_tkUseNewtonComponent ), "'proposal' use Newton component" )
375  (m_option_dr_maxNumExtraStages.c_str(), po::value<unsigned int>()->default_value(m_drMaxNumExtraStages ), "'dr' maximum number of extra stages" )
376  (m_option_dr_listOfScalesForExtraStages.c_str(), po::value<std::string >()->default_value(m_str6 ), "'dr' list of scales for proposal cov matrices from 2nd stage on" )
377  (m_option_dr_duringAmNonAdaptiveInt.c_str(), po::value<bool >()->default_value(m_drDuringAmNonAdaptiveInt ), "'dr' used during 'am' non adaptive interval" )
378  (m_option_am_keepInitialMatrix.c_str(), po::value<bool >()->default_value(m_amKeepInitialMatrix ), "'am' keep initial (given) matrix" )
379  (m_option_am_initialNonAdaptInterval.c_str(), po::value<unsigned int>()->default_value(m_amInitialNonAdaptInterval ), "'am' initial non adaptation interval" )
380  (m_option_am_adaptInterval.c_str(), po::value<unsigned int>()->default_value(m_amAdaptInterval ), "'am' adaptation interval" )
381  (m_option_am_adaptedMatrices_dataOutputPeriod.c_str(), po::value<unsigned int>()->default_value(m_amAdaptedMatricesDataOutputPeriod ), "period for outputing 'am' adapted matrices" )
382  (m_option_am_adaptedMatrices_dataOutputFileName.c_str(), po::value<std::string >()->default_value(m_amAdaptedMatricesDataOutputFileName ), "name of output file for 'am' adapted matrices" )
383  (m_option_am_adaptedMatrices_dataOutputFileType.c_str(), po::value<std::string >()->default_value(m_amAdaptedMatricesDataOutputFileType ), "type of output file for 'am' adapted matrices" )
384  (m_option_am_adaptedMatrices_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(m_amAdaptedMatricesDataOutputAllowAll ), "type of output file for 'am' adapted matrices" )
385  (m_option_am_adaptedMatrices_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(m_str7 ), "type of output file for 'am' adapted matrices" )
386  (m_option_am_eta.c_str(), po::value<double >()->default_value(m_amEta ), "'am' eta" )
387  (m_option_am_epsilon.c_str(), po::value<double >()->default_value(m_amEpsilon ), "'am' epsilon" )
388  (m_option_doLogitTransform.c_str(), po::value<bool >()->default_value(UQ_ML_SAMPLING_L_DO_LOGIT_TRANSFORM ), "flag for doing logit transform for bounded domains" )
389  ;
390 
391  return;
392 }
393 
394 void
395 MLSamplingLevelOptions::getMyOptionValues(po::options_description& optionsDesc)
396 {
397  char tmpStr[64];
398 
399  if (m_env.allOptionsMap().count(m_option_help.c_str())) {
400  if (m_env.subDisplayFile()) {
401  *m_env.subDisplayFile() << optionsDesc
402  << std::endl;
403  }
404  }
405 
406 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
407 #else
409  m_checkpointOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_checkpointOutputFileName.c_str()]).as<std::string>();
410  }
411 #endif
412 
413  if (m_env.allOptionsMap().count(m_option_stopAtEnd.c_str())) {
414  m_stopAtEnd = ((const po::variable_value&) m_env.allOptionsMap()[m_option_stopAtEnd.c_str()]).as<bool>();
415  }
416 
417  if (m_env.allOptionsMap().count(m_option_dataOutputFileName.c_str())) {
418  m_dataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dataOutputFileName.c_str()]).as<std::string>();
419  }
420 
421  if (m_env.allOptionsMap().count(m_option_dataOutputAllowAll.c_str())) {
423  }
424 
425  if (m_dataOutputAllowAll) {
427  }
428  else if (m_env.allOptionsMap().count(m_option_dataOutputAllowedSet.c_str())) {
429  m_dataOutputAllowedSet.clear();
430  std::vector<double> tmpAllow(0,0.);
431  std::string inputString = m_env.allOptionsMap()[m_option_dataOutputAllowedSet.c_str()].as<std::string>();
432  MiscReadDoublesFromString(inputString,tmpAllow);
433 
434  if (tmpAllow.size() > 0) {
435  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
436  m_dataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
437  }
438  }
439  }
440  m_str1.clear();
441  for (std::set<unsigned int>::iterator setIt = m_dataOutputAllowedSet.begin(); setIt != m_dataOutputAllowedSet.end(); ++setIt) {
442  sprintf(tmpStr,"%d",(int)(*setIt));
443  m_str1 += tmpStr;
444  m_str1 += " ";
445  }
446 
447  if (m_env.allOptionsMap().count(m_option_loadBalanceAlgorithmId.c_str())) {
448  m_loadBalanceAlgorithmId = ((const po::variable_value&) m_env.allOptionsMap()[m_option_loadBalanceAlgorithmId.c_str()]).as<unsigned int>();
449  }
450 
451  if (m_env.allOptionsMap().count(m_option_loadBalanceTreshold.c_str())) {
452  m_loadBalanceTreshold = ((const po::variable_value&) m_env.allOptionsMap()[m_option_loadBalanceTreshold.c_str()]).as<double>();
453  }
454 
455  if (m_env.allOptionsMap().count(m_option_minEffectiveSizeRatio.c_str())) {
456  m_minEffectiveSizeRatio = ((const po::variable_value&) m_env.allOptionsMap()[m_option_minEffectiveSizeRatio.c_str()]).as<double>();
457  }
458  if (m_minEffectiveSizeRatio >= 1.) {
459  std::cerr << "WARNING In MLSamplingLevelOptions::getMyOptionsValues()"
460  << ", worldRank " << m_env.worldRank()
461  << ", fullRank " << m_env.fullRank()
462  << ", subEnvironment " << m_env.subId()
463  << ", subRank " << m_env.subRank()
464  << ", inter0Rank " << m_env.inter0Rank()
465  << ": forcing the value of '" << m_option_minEffectiveSizeRatio.c_str()
466  << "' from " << m_minEffectiveSizeRatio
467  << " to " << .5
468  << std::endl;
470  }
471 
472  if (m_env.allOptionsMap().count(m_option_maxEffectiveSizeRatio.c_str())) {
473  m_maxEffectiveSizeRatio = ((const po::variable_value&) m_env.allOptionsMap()[m_option_maxEffectiveSizeRatio.c_str()]).as<double>();
474  }
475  if (m_maxEffectiveSizeRatio >= 1.) {
476  std::cerr << "WARNING In MLSamplingLevelOptions::getMyOptionsValues()"
477  << ", worldRank " << m_env.worldRank()
478  << ", fullRank " << m_env.fullRank()
479  << ", subEnvironment " << m_env.subId()
480  << ", subRank " << m_env.subRank()
481  << ", inter0Rank " << m_env.inter0Rank()
482  << ": forcing the value of '" << m_option_maxEffectiveSizeRatio.c_str()
483  << "' from " << m_maxEffectiveSizeRatio
484  << " to " << .5
485  << std::endl;
487  }
488 
489  if (m_env.allOptionsMap().count(m_option_scaleCovMatrix.c_str())) {
490  m_scaleCovMatrix = ((const po::variable_value&) m_env.allOptionsMap()[m_option_scaleCovMatrix.c_str()]).as<bool>();
491  }
492 
493  if (m_env.allOptionsMap().count(m_option_minRejectionRate.c_str())) {
494  m_minRejectionRate = ((const po::variable_value&) m_env.allOptionsMap()[m_option_minRejectionRate.c_str()]).as<double>();
495  }
496  if (m_minRejectionRate >= 1.) {
497  std::cerr << "WARNING In MLSamplingLevelOptions::getMyOptionsValues()"
498  << ", worldRank " << m_env.worldRank()
499  << ", fullRank " << m_env.fullRank()
500  << ", subEnvironment " << m_env.subId()
501  << ", subRank " << m_env.subRank()
502  << ", inter0Rank " << m_env.inter0Rank()
503  << ": forcing the value of '" << m_option_minRejectionRate.c_str()
504  << "' from " << m_minRejectionRate
505  << " to " << .5
506  << std::endl;
507  m_minRejectionRate = .5;
508  }
509 
510  if (m_env.allOptionsMap().count(m_option_maxRejectionRate.c_str())) {
511  m_maxRejectionRate = ((const po::variable_value&) m_env.allOptionsMap()[m_option_maxRejectionRate.c_str()]).as<double>();
512  }
513  if (m_maxRejectionRate >= 1.) {
514  std::cerr << "WARNING In MLSamplingLevelOptions::getMyOptionsValues()"
515  << ", worldRank " << m_env.worldRank()
516  << ", fullRank " << m_env.fullRank()
517  << ", subEnvironment " << m_env.subId()
518  << ", subRank " << m_env.subRank()
519  << ", inter0Rank " << m_env.inter0Rank()
520  << ": forcing the value of '" << m_option_maxRejectionRate.c_str()
521  << "' from " << m_maxRejectionRate
522  << " to " << .5
523  << std::endl;
524  m_maxRejectionRate = .5;
525  }
526 
527  if (m_env.allOptionsMap().count(m_option_covRejectionRate.c_str())) {
528  m_covRejectionRate = ((const po::variable_value&) m_env.allOptionsMap()[m_option_covRejectionRate.c_str()]).as<double>();
529  }
530  if (m_covRejectionRate >= 1.) {
531  std::cerr << "WARNING In MLSamplingLevelOptions::getMyOptionsValues()"
532  << ", worldRank " << m_env.worldRank()
533  << ", fullRank " << m_env.fullRank()
534  << ", subEnvironment " << m_env.subId()
535  << ", subRank " << m_env.subRank()
536  << ", inter0Rank " << m_env.inter0Rank()
537  << ": forcing the value of '" << m_option_covRejectionRate.c_str()
538  << "' from " << m_covRejectionRate
539  << " to " << .5
540  << std::endl;
541  m_covRejectionRate = .5;
542  }
543 
544  if (m_env.allOptionsMap().count(m_option_minAcceptableEta.c_str())) { // gpmsa1
545  m_minAcceptableEta = ((const po::variable_value&) m_env.allOptionsMap()[m_option_minAcceptableEta.c_str()]).as<double>();
546  }
547 
548  if (m_env.allOptionsMap().count(m_option_totallyMute.c_str())) {
549  m_totallyMute = ((const po::variable_value&) m_env.allOptionsMap()[m_option_totallyMute.c_str()]).as<bool>();
550  }
551 
553  m_initialPositionDataInputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_initialPosition_dataInputFileName.c_str()]).as<std::string>();
554  }
555 
557  m_initialPositionDataInputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_initialPosition_dataInputFileType.c_str()]).as<std::string>();
558  }
559 
562  }
563 
566  }
567 
568  if (m_env.allOptionsMap().count(m_option_initialPositionUsePreviousLevelLikelihood.c_str())) { // ml_likelihood_caching
570  }
571 
572  if (m_env.allOptionsMap().count(m_option_listOfDisabledParameters)) { // gpmsa2
573  m_parameterDisabledSet.clear();
574  std::vector<double> tmpAllow(0,0.);
575  std::string inputString = m_env.allOptionsMap()[m_option_listOfDisabledParameters].as<std::string>();
576  MiscReadDoublesFromString(inputString,tmpAllow);
577  if (tmpAllow.size() > 0) {
578  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
579  m_parameterDisabledSet.insert((unsigned int) tmpAllow[i]);
580  }
581  }
582  }
583  m_str2.clear();
584  for (std::set<unsigned int>::iterator setIt = m_parameterDisabledSet.begin(); setIt != m_parameterDisabledSet.end(); ++setIt) { // gpmsa2
585  sprintf(tmpStr,"%d",(int)(*setIt));
586  m_str2 += tmpStr;
587  m_str2 += " ";
588  }
589 
591  std::string inputString = ((const po::variable_value&) m_env.allOptionsMap()[m_option_initialValuesOfDisabledParameters.c_str()]).as<std::string>();
593  //if (m_env.subDisplayFile()) {
594  // *m_env.subDisplayFile() << "In MLSamplingLevelOptions::getMyOptionValues(): scales =";
595  // for (unsigned int i = 0; i < tmpValues.size(); ++i) {
596  // *m_env.subDisplayFile() << " " << tmpValues[i];
597  // }
598  // *m_env.subDisplayFile() << std::endl;
599  //}
600 
601  }
602  m_str3.clear();
603  for (unsigned int i = 0; i < m_initialValuesOfDisabledParameters.size(); ++i) {
604  sprintf(tmpStr,"%e",m_initialValuesOfDisabledParameters[i]);
605  m_str3 += tmpStr;
606  m_str3 += " ";
607  }
608 
610  m_rawChainDataInputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataInputFileName.c_str()]).as<std::string>();
611  }
612 
614  m_rawChainDataInputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataInputFileType.c_str()]).as<std::string>();
615  }
616 
617  if (m_env.allOptionsMap().count(m_option_rawChain_size.c_str())) {
618  //std::cout << "In count()=true, rawChainSize = " << m_rawChainSize << std::endl;
619  m_rawChainSize = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_size.c_str()]).as<unsigned int>();
620  }
621 //std::cout << "After count(), rawChainSize = " << m_rawChainSize << std::endl;
622 
623  if (m_env.allOptionsMap().count(m_option_rawChain_displayPeriod.c_str())) {
624  m_rawChainDisplayPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_displayPeriod.c_str()]).as<unsigned int>();
625  }
626 
628  m_rawChainMeasureRunTimes = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_measureRunTimes.c_str()]).as<bool>();
629  }
630 
632  m_rawChainDataOutputPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputPeriod.c_str()]).as<unsigned int>();
633  }
634 
636  m_rawChainDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputFileName.c_str()]).as<std::string>();
637  }
638 
640  m_rawChainDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputFileType.c_str()]).as<std::string>();
641  }
642 
645  }
646 
649  }
650  else if (m_env.allOptionsMap().count(m_option_rawChain_dataOutputAllowedSet.c_str())) {
652  std::vector<double> tmpAllow(0,0.);
653  std::string inputString = m_env.allOptionsMap()[m_option_rawChain_dataOutputAllowedSet.c_str()].as<std::string>();
654  MiscReadDoublesFromString(inputString,tmpAllow);
655 
656  if (tmpAllow.size() > 0) {
657  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
658  m_rawChainDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
659  }
660  }
661  }
662  m_str4.clear();
663  for (std::set<unsigned int>::iterator setIt = m_rawChainDataOutputAllowedSet.begin(); setIt != m_rawChainDataOutputAllowedSet.end(); ++setIt) {
664  sprintf(tmpStr,"%d",(int)(*setIt));
665  m_str4 += tmpStr;
666  m_str4 += " ";
667  }
668 
669 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
670  if (m_env.allOptionsMap().count(m_option_rawChain_computeStats.c_str())) {
671  m_rawChainComputeStats = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_computeStats.c_str()]).as<bool>();
672  }
673 #endif
674  if (m_env.allOptionsMap().count(m_option_rawChain_generateExtra.c_str())) {
675  m_rawChainGenerateExtra = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_generateExtra.c_str()]).as<bool>();
676  }
677 
678  if (m_env.allOptionsMap().count(m_option_filteredChain_generate.c_str())) {
679  m_filteredChainGenerate = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_generate.c_str()]).as<bool>();
680  }
681 
683  m_filteredChainDiscardedPortion = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_discardedPortion.c_str()]).as<double>();
684  }
685 
686  if (m_env.allOptionsMap().count(m_option_filteredChain_lag.c_str())) {
687  m_filteredChainLag = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_lag.c_str()]).as<unsigned int>();
688  }
689  if ((m_filteredChainGenerate == true) &&
690  (m_filteredChainLag < 2 )) {
691  std::cerr << "WARNING In MLSamplingLevelOptions::getMyOptionsValues()"
692  << ", worldRank " << m_env.worldRank()
693  << ", fullRank " << m_env.fullRank()
694  << ", subEnvironment " << m_env.subId()
695  << ", subRank " << m_env.subRank()
696  << ", inter0Rank " << m_env.inter0Rank()
697  << ": forcing the value of '" << m_option_filteredChain_lag.c_str()
698  << "' from " << m_filteredChainLag
699  << " to " << 2
700  << std::endl;
701  m_filteredChainLag = 2;
702  }
703 
705  m_filteredChainDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_dataOutputFileName.c_str()]).as<std::string>();
706  }
707 
709  m_filteredChainDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_dataOutputFileType.c_str()]).as<std::string>();
710  }
711 
714  }
715 
718  }
721  std::vector<double> tmpAllow(0,0.);
722  std::string inputString = m_env.allOptionsMap()[m_option_filteredChain_dataOutputAllowedSet.c_str()].as<std::string>();
723  MiscReadDoublesFromString(inputString,tmpAllow);
724 
725  if (tmpAllow.size() > 0) {
726  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
727  m_filteredChainDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
728  }
729  }
730  }
731  m_str5.clear();
732  for (std::set<unsigned int>::iterator setIt = m_filteredChainDataOutputAllowedSet.begin(); setIt != m_filteredChainDataOutputAllowedSet.end(); ++setIt) {
733  sprintf(tmpStr,"%d",(int)(*setIt));
734  m_str5 += tmpStr;
735  m_str5 += " ";
736  }
737 
738 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
739  if (m_env.allOptionsMap().count(m_option_filteredChain_computeStats.c_str())) {
740  m_filteredChainComputeStats = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_computeStats.c_str()]).as<bool>();
741  }
742 #endif
743  if (m_env.allOptionsMap().count(m_option_displayCandidates.c_str())) {
744  m_displayCandidates = ((const po::variable_value&) m_env.allOptionsMap()[m_option_displayCandidates.c_str()]).as<bool>();
745  }
746 
747  if (m_env.allOptionsMap().count(m_option_putOutOfBoundsInChain.c_str())) {
748  m_putOutOfBoundsInChain = ((const po::variable_value&) m_env.allOptionsMap()[m_option_putOutOfBoundsInChain.c_str()]).as<bool>();
749  }
750 
751  if (m_env.allOptionsMap().count(m_option_tk_useLocalHessian.c_str())) {
752  m_tkUseLocalHessian = ((const po::variable_value&) m_env.allOptionsMap()[m_option_tk_useLocalHessian.c_str()]).as<bool>();
753  }
754 
755  if (m_env.allOptionsMap().count(m_option_tk_useNewtonComponent.c_str())) {
756  m_tkUseNewtonComponent = ((const po::variable_value&) m_env.allOptionsMap()[m_option_tk_useNewtonComponent.c_str()]).as<bool>();
757  }
758 
759  if (m_env.allOptionsMap().count(m_option_dr_maxNumExtraStages.c_str())) {
760  m_drMaxNumExtraStages = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_maxNumExtraStages.c_str()]).as<unsigned int>();
761  }
762 
763  std::vector<double> tmpScales(0,0.);
765  std::string inputString = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_listOfScalesForExtraStages.c_str()]).as<std::string>();
766  MiscReadDoublesFromString(inputString,tmpScales);
767  //if (m_env.subDisplayFile()) {
768  // *m_env.subDisplayFile() << "In MLSamplingLevelOptions::getMyOptionValues(): scales =";
769  // for (unsigned int i = 0; i < tmpScales.size(); ++i) {
770  // *m_env.subDisplayFile() << " " << tmpScales[i];
771  // }
772  // *m_env.subDisplayFile() << std::endl;
773  //}
774  }
775 
776  if (m_drMaxNumExtraStages > 0) {
777  m_drScalesForExtraStages.clear();
778 
779  double scale = 1.0;
780  unsigned int tmpSize = tmpScales.size();
781 
783 
784  for (unsigned int i = 0; i < m_drMaxNumExtraStages; ++i) {
785  if (i < tmpSize) scale = tmpScales[i];
786  m_drScalesForExtraStages[i] = scale;
787  }
788  //updateTK();
789  }
790 
791  m_str6.clear();
792  for (unsigned int i = 0; i < m_drScalesForExtraStages.size(); ++i) {
793  sprintf(tmpStr,"%e",m_drScalesForExtraStages[i]);
794  m_str6 += tmpStr;
795  m_str6 += " ";
796  }
797 //std::cout << "m_str6 = " << m_str4 << std::endl;
798 
800  m_drDuringAmNonAdaptiveInt = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_duringAmNonAdaptiveInt]).as<bool>();
801  }
802 
803  if (m_env.allOptionsMap().count(m_option_am_keepInitialMatrix.c_str())) {
804  m_amKeepInitialMatrix = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_keepInitialMatrix.c_str()]).as<bool>();
805  }
806 
808  m_amInitialNonAdaptInterval = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_initialNonAdaptInterval.c_str()]).as<unsigned int>();
809  }
810 
811  if (m_env.allOptionsMap().count(m_option_am_adaptInterval.c_str())) {
812  m_amAdaptInterval = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_adaptInterval.c_str()]).as<unsigned int>();
813  }
814 
816  m_amAdaptedMatricesDataOutputPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_adaptedMatrices_dataOutputPeriod.c_str()]).as<unsigned int>();
817  }
818 
820  m_amAdaptedMatricesDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_adaptedMatrices_dataOutputFileName.c_str()]).as<std::string>();
821  }
822 
824  m_amAdaptedMatricesDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_adaptedMatrices_dataOutputFileType.c_str()]).as<std::string>();
825  }
826 
829  }
830 
833  }
836  std::vector<double> tmpAllow(0,0.);
837  std::string inputString = m_env.allOptionsMap()[m_option_am_adaptedMatrices_dataOutputAllowedSet.c_str()].as<std::string>();
838  MiscReadDoublesFromString(inputString,tmpAllow);
839 
840  if (tmpAllow.size() > 0) {
841  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
842  m_amAdaptedMatricesDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
843  }
844  }
845  }
846  m_str7.clear();
847  for (std::set<unsigned int>::iterator setIt = m_amAdaptedMatricesDataOutputAllowedSet.begin(); setIt != m_amAdaptedMatricesDataOutputAllowedSet.end(); ++setIt) {
848  sprintf(tmpStr,"%d",(int)(*setIt));
849  m_str7 += tmpStr;
850  m_str7 += " ";
851  }
852 
853  if (m_env.allOptionsMap().count(m_option_am_eta.c_str())) {
854  m_amEta = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_eta.c_str()]).as<double>();
855  }
856 
857  if (m_env.allOptionsMap().count(m_option_am_epsilon.c_str())) {
858  m_amEpsilon = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_epsilon.c_str()]).as<double>();
859  }
860 
861  if (m_env.allOptionsMap().count(m_option_doLogitTransform.c_str())) {
862  m_doLogitTransform = ((const po::variable_value&) m_env.allOptionsMap()[m_option_doLogitTransform.c_str()]).as<bool>();
863  }
864 }
865 
866 void
867 MLSamplingLevelOptions::print(std::ostream& os) const
868 {
869  os << "m_prefix" << " = " << m_prefix
870 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
871 #else
873 #endif
874  << "\n" << m_option_stopAtEnd << " = " << m_stopAtEnd
877  << "\n" << m_option_dataOutputAllowedSet << " = ";
878  for (std::set<unsigned int>::iterator setIt = m_dataOutputAllowedSet.begin(); setIt != m_dataOutputAllowedSet.end(); ++setIt) {
879  os << *setIt << " ";
880  }
885  << "\n" << m_option_scaleCovMatrix << " = " << m_scaleCovMatrix
886  << "\n" << m_option_minRejectionRate << " = " << m_minRejectionRate
887  << "\n" << m_option_maxRejectionRate << " = " << m_maxRejectionRate
888  << "\n" << m_option_covRejectionRate << " = " << m_covRejectionRate
889  << "\n" << m_option_minAcceptableEta << " = " << m_minAcceptableEta // gpmsa1
890  << "\n" << m_option_totallyMute << " = " << m_totallyMute
896  << "\n" << m_option_listOfDisabledParameters << " = "; // gpmsa2
897  for (std::set<unsigned int>::iterator setIt = m_parameterDisabledSet.begin(); setIt != m_parameterDisabledSet.end(); ++setIt) {
898  os << *setIt << " ";
899  }
900  os << "\n" << m_option_initialValuesOfDisabledParameters << " = "; // gpmsa2
901  for (unsigned int i = 0; i < m_initialValuesOfDisabledParameters.size(); ++i) {
902  os << m_initialValuesOfDisabledParameters[i] << " ";
903  }
906  << "\n" << m_option_rawChain_size << " = " << m_rawChainSize
914  << "\n" << m_option_rawChain_dataOutputAllowedSet << " = ";
915  for (std::set<unsigned int>::iterator setIt = m_rawChainDataOutputAllowedSet.begin(); setIt != m_rawChainDataOutputAllowedSet.end(); ++setIt) {
916  os << *setIt << " ";
917  }
918  os
919 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
920  << "\n" << m_option_rawChain_computeStats << " = " << m_rawChainComputeStats
921 #endif
924  << "\n" << m_option_filteredChain_lag << " = " << m_filteredChainLag
929  for (std::set<unsigned int>::iterator setIt = m_filteredChainDataOutputAllowedSet.begin(); setIt != m_filteredChainDataOutputAllowedSet.end(); ++setIt) {
930  os << *setIt << " ";
931  }
932  os
933 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
934  << "\n" << m_option_filteredChain_computeStats << " = " << m_filteredChainComputeStats
935 #endif
936  << "\n" << m_option_displayCandidates << " = " << m_displayCandidates
938  << "\n" << m_option_tk_useLocalHessian << " = " << m_tkUseLocalHessian
941  << "\n" << m_option_dr_listOfScalesForExtraStages << " = ";
942  for (unsigned int i = 0; i < m_drScalesForExtraStages.size(); ++i) {
943  os << m_drScalesForExtraStages[i] << " ";
944  }
948  << "\n" << m_option_am_adaptInterval << " = " << m_amAdaptInterval
954  for (std::set<unsigned int>::iterator setIt = m_amAdaptedMatricesDataOutputAllowedSet.begin(); setIt != m_amAdaptedMatricesDataOutputAllowedSet.end(); ++setIt) {
955  os << *setIt << " ";
956  }
957  os << "\n" << m_option_am_eta << " = " << m_amEta
958  << "\n" << m_option_am_epsilon << " = " << m_amEpsilon
959  << "\n" << m_option_doLogitTransform << " = " << m_doLogitTransform
960  << std::endl;
961 
962  return;
963 }
964 
965 const BaseEnvironment&
967 {
968  return m_env;
969 }
970 
971 std::ostream& operator<<(std::ostream& os, const MLSamplingLevelOptions& obj)
972 {
973  obj.print(os);
974 
975  return os;
976 }
977 
978 } // End namespace QUESO
void defineMyOptions(po::options_description &optionsDesc) const
Defines the options for the Multilevel generator of samples as the default options.
#define UQ_ML_SAMPLING_L_MIN_REJECTION_RATE_ODV
bool m_totallyMute
Whether or not to be totally mute (no printout message).
#define UQ_ML_SAMPLING_L_FILTERED_CHAIN_LAG_ODV
int subRank() const
Access function for sub-rank.
Definition: Environment.C:263
double m_minRejectionRate
minimum allowed attempted rejection rate at current level
bool m_tkUseLocalHessian
Whether or not &#39;proposal&#39; uses local Hessian.
std::string m_checkpointOutputFileName
Name of checkpoint output file.
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_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV
#define UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV
bool m_rawChainDataOutputAllowAll
Whether or not subEnvs will write to output file for raw chain.
int inter0Rank() const
Returns the process inter0 rank.
Definition: Environment.C:289
unsigned int m_rawChainDataOutputPeriod
Period of message display during raw chain generation.
int worldRank() const
Returns the process world rank.
Definition: Environment.C:235
std::string m_rawChainDataInputFileType
Type of input file for raw chain.
#define UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV
#define UQ_ML_SAMPLING_L_RAW_CHAIN_DISPLAY_PERIOD_ODV
#define UQ_ML_SAMPLING_L_DISPLAY_CANDIDATES_ODV
#define UQ_ML_SAMPLING_L_FILTERED_CHAIN_GENERATE_ODV
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:305
std::set< unsigned int > m_filteredChainDataOutputAllowedSet
subEnvs that will write to output file for filtered chain.
bool m_rawChainGenerateExtra
Generate extra information about raw chain.
#define UQ_ML_SAMPLING_L_DO_LOGIT_TRANSFORM
#define UQ_ML_SAMPLING_L_RAW_CHAIN_GENERATE_EXTRA_ODV
#define UQ_ML_SAMPLING_L_DR_MAX_NUM_EXTRA_STAGES_ODV
std::string m_filteredChainDataOutputFileName
Name of output file for filtered chain.
std::string m_option_initialPositionUsePreviousLevelLikelihood
std::string m_str1
subEnvs that will write to generic output file.
#define UQ_ML_SAMPLING_L_MIN_EFFECTIVE_SIZE_RATIO_ODV
unsigned int m_rawChainDisplayPeriod
Period of message display during raw chain generation.
po::variables_map & allOptionsMap() const
Definition: Environment.C:368
std::string m_rawChainDataOutputFileType
Type of output file for raw chain.
std::string m_filteredChainDataOutputFileType
Type of output file for filtered chain.
std::string m_amAdaptedMatricesDataOutputFileName
Name of output file for &#39;am&#39; adapted matrices.
bool m_filteredChainGenerate
Whether or not to generate filtered chain.
#define UQ_ML_SAMPLING_L_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV
#define UQ_ML_SAMPLING_L_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:187
#define UQ_ML_SAMPLING_L_TK_USE_NEWTON_COMPONENT_ODV
std::string m_option_am_adaptedMatrices_dataOutputFileType
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
void print(std::ostream &os) const
It prints the option values.
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.
#define UQ_ML_SAMPLING_L_RAW_CHAIN_MEASURE_RUN_TIMES_ODV
std::string m_option_initialProposalCovMatrix_dataInputFileType
#define UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_ML_SAMPLING_L_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV
#define UQ_ML_SAMPLING_L_MAX_REJECTION_RATE_ODV
std::string m_option_am_adaptedMatrices_dataOutputAllowAll
std::vector< double > m_initialValuesOfDisabledParameters
void getMyOptionValues(po::options_description &optionsDesc)
Gets the sequence options defined to the Multilevel algorithm.
#define UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV
double m_maxRejectionRate
maximum allowed attempted rejection rate at current level.
#define UQ_ML_SAMPLING_L_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV
unsigned int m_rawChainSize
Size of raw chain.
#define UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV
void MiscReadDoublesFromString(const std::string &inputString, std::vector< double > &outputDoubles)
Definition: Miscellaneous.C:39
#define UQ_ML_SAMPLING_L_INITIAL_POSITION_USE_PREVIOUS_LEVEL_LIKELIHOOD_ODV
bool m_amAdaptedMatricesDataOutputAllowAll
Whether or not subEnvs will write to output file for &#39;am&#39; adapted matrices.
double m_maxEffectiveSizeRatio
Maximum allowed effective size ratio wrt previous level.
double m_loadBalanceTreshold
Perform load balancing if load unbalancing ratio &gt; threshold.
#define UQ_ML_SAMPLING_L_MAX_EFFECTIVE_SIZE_RATIO_ODV
#define UQ_ML_SAMPLING_L_LOAD_BALANCE_ALGORITHM_ID_ODV
#define UQ_ML_SAMPLING_L_AM_INIT_NON_ADAPT_INT_ODV
#define UQ_ML_SAMPLING_L_RAW_CHAIN_SIZE_ODV
#define UQ_ML_SAMPLING_L_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV
unsigned int m_filteredChainLag
Spacing for chain filtering.
#define UQ_ML_SAMPLING_L_DATA_OUTPUT_ALLOW_ALL_ODV
MLSamplingLevelOptions(const BaseEnvironment &env, const char *prefix)
Constructor: reads options from the input file.
#define UQ_ML_SAMPLING_L_MIN_ACCEPTABLE_ETA_ODV
std::string m_rawChainDataInputFileName
Name of input file for raw chain.
bool m_initialPositionUsePreviousLevelLikelihood
Use previous level likelihood for initial chain position instead of re-computing it from target pdf...
#define UQ_ML_SAMPLING_L_COV_REJECTION_RATE_ODV
std::string m_rawChainDataOutputFileName
Name of output file for raw chain.
#define UQ_ML_SAMPLING_L_CHECKPOINT_OUTPUT_FILE_NAME_ODV
#define UQ_ML_SAMPLING_L_TOTALLY_MUTE_ODV
#define UQ_ML_SAMPLING_L_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV
bool m_dataOutputAllowAll
subEnvs that will write to generic output file.
std::string m_option_am_adaptedMatrices_dataOutputAllowedSet
#define UQ_ML_SAMPLING_L_SCALE_COV_MATRIX_ODV
double m_amEta
&#39;am&#39; eta.
#define UQ_ML_SAMPLING_L_AM_ADAPT_INTERVAL_ODV
int fullRank() const
Returns the process full rank.
Definition: Environment.C:241
double m_amEpsilon
&#39;am&#39; epsilon.
#define UQ_ML_SAMPLING_L_TK_USE_LOCAL_HESSIAN_ODV
double m_minEffectiveSizeRatio
Minimum allowed effective size ratio wrt previous level.
#define UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV
unsigned int m_drMaxNumExtraStages
&#39;dr&#39; maximum number of extra stages.
#define UQ_ML_SAMPLING_L_DATA_OUTPUT_FILE_NAME_ODV
std::string m_dataOutputFileName
Name of generic output file.
std::set< unsigned int > m_dataOutputAllowedSet
subEnvs that will write to generic output file.
po::options_description * m_optionsDesc
#define UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV
bool m_scaleCovMatrix
Whether or not scale proposal covariance matrix.
#define ML_CODE_HAS_NEW_RESTART_CAPABILITY
Definition: Defines.h:65
std::string m_initialProposalCovMatrixDataInputFileType
Type of input file for initial proposal covariance matrix.
std::set< unsigned int > m_rawChainDataOutputAllowedSet
subEnvs that will write to output file for raw chain.
void scanOptionsValues(const MLSamplingLevelOptions *defaultOptions)
It scans the option values from the options input file.
std::set< unsigned int > m_parameterDisabledSet
bool m_stopAtEnd
Stop at end of such level.
#define UQ_ML_SAMPLING_L_FILTERED_CHAIN_DISCARDED_PORTION_ODV
#define UQ_ML_SAMPLING_L_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV
std::string m_option_am_adaptedMatrices_dataOutputFileName
void copyOptionsValues(const MLSamplingLevelOptions &srcOptions)
Copies the option values from srcOptions to this.
std::string m_option_initialProposalCovMatrix_dataInputFileName
#define UQ_ML_SAMPLING_L_DR_DURING_AM_NON_ADAPTIVE_INT_ODV
unsigned int m_amAdaptInterval
&#39;am&#39; adaptation interval.
std::set< unsigned int > m_amAdaptedMatricesDataOutputAllowedSet
subEnvs that will write to output file for &#39;am&#39; adapted matrices.
bool m_putOutOfBoundsInChain
Put &#39;out of bound&#39; candidates in chain as well.
#define UQ_ML_SAMPLING_L_AM_ETA_ODV
double m_minAcceptableEta
minimum acceptable eta,
double m_filteredChainDiscardedPortion
Initial discarded portion for chain filtering.
unsigned int m_amAdaptedMatricesDataOutputPeriod
Period for outputing &#39;am&#39; adapted matrices.
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_ML_SAMPLING_L_LOAD_BALANCE_TRESHOLD_ODV
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:329
#define UQ_ML_SAMPLING_L_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV
double m_covRejectionRate
c.o.v. for judging attempted rejection rate at current level.
unsigned int m_loadBalanceAlgorithmId
Perform load balancing with chosen algorithm (0 = no balancing).
std::string m_amAdaptedMatricesDataOutputFileType
Type of output file for &#39;am&#39; adapted matrices.
#define UQ_ML_SAMPLING_L_AM_EPSILON_ODV
bool m_tkUseNewtonComponent
Whether or not &#39;proposal&#39; uses Newton component.
#define UQ_ML_SAMPLING_L_STOP_AT_END_ODV
bool m_rawChainMeasureRunTimes
Whether or not to measure run times.
bool m_displayCandidates
Display candidates generated in the core MH algorithm.
const BaseEnvironment & env() const
Access to the environment.
#define UQ_ML_SAMPLING_L_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_ML_SAMPLING_L_AM_KEEP_INITIAL_MATRIX_ODV
unsigned int m_amInitialNonAdaptInterval
&#39;am&#39; initial non adaptation interval
#define UQ_ML_SAMPLING_L_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV
This class provides options for each level of the Multilevel sequence generator if no input file is a...
void scanInputFileForMyOptions(const po::options_description &optionsDesc) const
This method scans the input file provided by the user to QUESO.
Definition: Environment.C:378
bool m_drDuringAmNonAdaptiveInt
Whether or not &#39;dr&#39; is used during &#39;am&#39; non adaptive interval.
bool m_doLogitTransform
Whether or not a logit transform will be done for bounded domains.

Generated on Thu Apr 23 2015 19:26:16 for queso-0.51.1 by  doxygen 1.8.5