queso-0.53.0
StatisticalInverseProblem.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-2015 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/StatisticalInverseProblem.h>
26 #include <queso/GslVector.h>
27 #include <queso/GslMatrix.h>
28 #include <queso/GPMSA.h>
29 #include <queso/GslOptimizer.h>
30 
31 namespace QUESO {
32 
33 // Default constructor -----------------------------
34 template <class P_V,class P_M>
35 StatisticalInverseProblem<P_V,P_M>::StatisticalInverseProblem( const char* prefix, const SipOptionsValues* alternativeOptionsValues, // dakota const BaseVectorRV <P_V,P_M>& priorRv, const BaseScalarFunction<P_V,P_M>& likelihoodFunction, GenericVectorRV <P_V,P_M>& postRv)
41  :
42  m_env (priorRv.env()),
43  m_priorRv (priorRv),
44  m_likelihoodFunction (likelihoodFunction),
45  m_postRv (postRv),
46  m_solutionDomain (NULL),
47  m_solutionPdf (NULL),
48  m_subSolutionMdf (NULL),
49  m_subSolutionCdf (NULL),
50  m_solutionRealizer (NULL),
51  m_mhSeqGenerator (NULL),
52  m_mlSampler (NULL),
53  m_chain (NULL),
54  m_logLikelihoodValues (NULL),
55  m_logTargetValues (NULL),
56  m_optionsObj (alternativeOptionsValues),
57  m_seedWithMAPEstimator (false),
58  m_userDidNotProvideOptions(false)
59 {
60 #ifdef QUESO_MEMORY_DEBUGGING
61  std::cout << "Entering Sip" << std::endl;
62 #endif
63  if (m_env.subDisplayFile()) {
64  *m_env.subDisplayFile() << "Entering StatisticalInverseProblem<P_V,P_M>::constructor()"
65  << ": prefix = " << prefix
66  << ", alternativeOptionsValues = " << alternativeOptionsValues
67  << ", m_env.optionsInputFileName() = " << m_env.optionsInputFileName()
68  << std::endl;
69  }
70 
71  // If NULL, we create one
72  if (m_optionsObj == NULL) {
73  SipOptionsValues * tempOptions = new SipOptionsValues(&m_env, prefix);
74 
75  // We did this dance because scanOptionsValues is not a const method, but
76  // m_optionsObj is a pointer to const
77  m_optionsObj = tempOptions;
78 
79  // We set this flag so we don't delete the user-created object when it
80  // comes time to deconstruct
81  m_userDidNotProvideOptions = true;
82  }
83 
84  if (m_optionsObj->m_help != "") {
85  if (m_env.subDisplayFile()) {
86  *m_env.subDisplayFile() << (*m_optionsObj) << std::endl;
87  }
88  }
89 
90 #ifdef QUESO_MEMORY_DEBUGGING
91  std::cout << "In Sip, finished scanning options" << std::endl;
92 #endif
93 
94  queso_require_equal_to_msg(priorRv.imageSet().vectorSpace().dimLocal(), likelihoodFunction.domainSet().vectorSpace().dimLocal(), "'priorRv' and 'likelihoodFunction' are related to vector spaces of different dimensions");
95 
96  queso_require_equal_to_msg(priorRv.imageSet().vectorSpace().dimLocal(), postRv.imageSet().vectorSpace().dimLocal(), "'priorRv' and 'postRv' are related to vector spaces of different dimensions");
97 
98  if (m_env.subDisplayFile()) {
99  *m_env.subDisplayFile() << "Leaving StatisticalInverseProblem<P_V,P_M>::constructor()"
100  << ": prefix = " << m_optionsObj->m_prefix
101  << std::endl;
102  }
103 
104  return;
105 }
106 
107 template <class P_V,class P_M>
109  const char * prefix,
110  const SipOptionsValues * alternativeOptionsValues,
111  const GPMSAFactory<P_V, P_M> & gpmsaFactory,
112  GenericVectorRV <P_V,P_M> & postRv)
113  :
114  m_env (gpmsaFactory.m_totalPrior->env()),
115  m_priorRv (*(gpmsaFactory.m_totalPrior)),
116  m_likelihoodFunction (gpmsaFactory.getGPMSAEmulator()),
117  m_postRv (postRv),
118  m_solutionDomain (NULL),
119  m_solutionPdf (NULL),
120  m_subSolutionMdf (NULL),
121  m_subSolutionCdf (NULL),
122  m_solutionRealizer (NULL),
123  m_mhSeqGenerator (NULL),
124  m_mlSampler (NULL),
125  m_chain (NULL),
126  m_logLikelihoodValues (NULL),
127  m_logTargetValues (NULL),
128  m_optionsObj (alternativeOptionsValues),
129  m_seedWithMAPEstimator (false),
130  m_userDidNotProvideOptions(false)
131 {
132  if (m_env.subDisplayFile()) {
133  *m_env.subDisplayFile() << "Entering StatisticalInverseProblem<P_V,P_M>::constructor()"
134  << ": prefix = " << prefix
135  << ", alternativeOptionsValues = " << alternativeOptionsValues
136  << ", m_env.optionsInputFileName() = " << m_env.optionsInputFileName()
137  << std::endl;
138  }
139 
140  // If NULL, we create one
141  if (m_optionsObj == NULL) {
142  SipOptionsValues * tempOptions = new SipOptionsValues(&m_env, prefix);
143 
144  // We did this dance because scanOptionsValues is not a const method, but
145  // m_optionsObj is a pointer to const
146  m_optionsObj = tempOptions;
147 
149  }
150 
151  if (m_optionsObj->m_help != "") {
152  if (m_env.subDisplayFile()) {
153  *m_env.subDisplayFile() << (*m_optionsObj) << std::endl;
154  }
155  }
156 
157  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), m_likelihoodFunction.domainSet().vectorSpace().dimLocal(), "'priorRv' and 'likelihoodFunction' are related to vector spaces of different dimensions");
158 
159  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), postRv.imageSet().vectorSpace().dimLocal(), "'priorRv' and 'postRv' are related to vector spaces of different dimensions");
160 
161  if (m_env.subDisplayFile()) {
162  *m_env.subDisplayFile() << "Leaving StatisticalInverseProblem<P_V,P_M>::constructor()"
163  << ": prefix = " << m_optionsObj->m_prefix
164  << std::endl;
165  }
166 
167  return;
168 }
169 
170 // Destructor --------------------------------------
171 template <class P_V,class P_M>
173 {
174  if (m_chain) {
175  m_chain->clear();
176  delete m_chain;
177  }
178  if (m_logLikelihoodValues) {
179  m_logLikelihoodValues->clear();
180  delete m_logLikelihoodValues;
181  }
182  if (m_logTargetValues) {
183  m_logTargetValues->clear();
184  delete m_logTargetValues;
185  }
186  if (m_mlSampler ) delete m_mlSampler;
187  if (m_mhSeqGenerator ) delete m_mhSeqGenerator;
188  if (m_solutionRealizer) delete m_solutionRealizer;
189  if (m_subSolutionCdf ) delete m_subSolutionCdf;
190  if (m_subSolutionMdf ) delete m_subSolutionMdf;
191  if (m_solutionPdf ) delete m_solutionPdf;
192  if (m_solutionDomain ) delete m_solutionDomain;
193 
194  if (m_optionsObj && m_userDidNotProvideOptions) {
195  delete m_optionsObj;
196  }
197 }
198 // Statistical methods -----------------------------
199 template <class P_V,class P_M>
200 void
202  const MhOptionsValues* alternativeOptionsValues, // dakota
203  const P_V& initialValues,
204  const P_M* initialProposalCovMatrix)
205 {
206  //grvy_timer_begin("BayesMetropolisHastings"); TODO: revisit timing output
207  //std::cout << "proc " << m_env.fullRank() << ", HERE sip 000" << std::endl;
208  m_env.fullComm().Barrier();
209  //std::cout << "proc " << m_env.fullRank() << ", HERE sip 001" << std::endl;
210  m_env.fullComm().syncPrintDebugMsg("Entering StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()",1,3000000);
211 
212  if (m_optionsObj->m_computeSolution == false) {
213  if ((m_env.subDisplayFile())) {
214  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()"
215  << ": avoiding solution, as requested by user"
216  << std::endl;
217  }
218  return;
219  }
220  if ((m_env.subDisplayFile())) {
221  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()"
222  << ": computing solution, as requested by user"
223  << std::endl;
224  }
225 
226  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), initialValues.sizeLocal(), "'m_priorRv' and 'initialValues' should have equal dimensions");
227 
228  if (initialProposalCovMatrix) {
229  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), initialProposalCovMatrix->numRowsLocal(), "'m_priorRv' and 'initialProposalCovMatrix' should have equal dimensions");
230  queso_require_equal_to_msg(initialProposalCovMatrix->numCols(), initialProposalCovMatrix->numRowsGlobal(), "'initialProposalCovMatrix' should be a square matrix");
231  }
232 
233  if (m_mlSampler ) delete m_mlSampler;
234  if (m_mhSeqGenerator ) delete m_mhSeqGenerator;
235  if (m_solutionRealizer) delete m_solutionRealizer;
236  if (m_subSolutionCdf ) delete m_subSolutionCdf;
237  if (m_subSolutionMdf ) delete m_subSolutionMdf;
238  if (m_solutionPdf ) delete m_solutionPdf;
239  if (m_solutionDomain ) delete m_solutionDomain;
240 
241  P_V numEvaluationPointsVec(m_priorRv.imageSet().vectorSpace().zeroVector());
242  numEvaluationPointsVec.cwSet(250.);
243 
244  // Compute output pdf up to a multiplicative constant: Bayesian approach
245  m_solutionDomain = InstantiateIntersection(m_priorRv.pdf().domainSet(),m_likelihoodFunction.domainSet());
246 
247  m_solutionPdf = new BayesianJointPdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
248  m_priorRv.pdf(),
249  m_likelihoodFunction,
250  1.,
251  *m_solutionDomain);
252 
253  m_postRv.setPdf(*m_solutionPdf);
254  m_chain = new SequenceOfVectors<P_V,P_M>(m_postRv.imageSet().vectorSpace(),0,m_optionsObj->m_prefix+"chain");
255 
256  // Decide whether or not to create a MetropolisHastingsSG instance from the
257  // user-provided initial seed, or use the user-provided seed for a
258  // deterministic optimisation instead and seed the chain with the result of
259  // the optimisation
260  if (this->m_seedWithMAPEstimator) {
261  // Do optimisation before sampling
262  GslOptimizer optimizer(*m_solutionPdf);
263  optimizer.setInitialPoint(dynamic_cast<const GslVector &>(initialValues));
264  optimizer.minimize();
265 
266  // Compute output realizer: Metropolis-Hastings approach
267  m_mhSeqGenerator = new MetropolisHastingsSG<P_V, P_M>(
268  m_optionsObj->m_prefix.c_str(), alternativeOptionsValues,
269  m_postRv, optimizer.minimizer(), initialProposalCovMatrix);
270  }
271  else {
272  // Compute output realizer: Metropolis-Hastings approach
273  m_mhSeqGenerator = new MetropolisHastingsSG<P_V, P_M>(
274  m_optionsObj->m_prefix.c_str(), alternativeOptionsValues, m_postRv,
275  initialValues, initialProposalCovMatrix);
276  }
277 
278 
279  m_logLikelihoodValues = new ScalarSequence<double>(m_env, 0,
280  m_optionsObj->m_prefix +
281  "logLike");
282 
283  m_logTargetValues = new ScalarSequence<double>(m_env, 0,
284  m_optionsObj->m_prefix +
285  "logTarget");
286 
287  // m_logLikelihoodValues and m_logTargetValues may be NULL
288  m_mhSeqGenerator->generateSequence(*m_chain, m_logLikelihoodValues,
289  m_logTargetValues);
290 
291  m_solutionRealizer = new SequentialVectorRealizer<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
292  *m_chain);
293 
294  m_postRv.setRealizer(*m_solutionRealizer);
295 
296  m_env.fullComm().syncPrintDebugMsg("In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings(), code place 1",3,3000000);
297  //m_env.fullComm().Barrier();
298 
299  // Compute output mdf: uniform sampling approach
300 #ifdef UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
301  m_subMdfGrids = new ArrayOfOneDGrids <P_V,P_M>((m_optionsObj->m_prefix+"Mdf_").c_str(),m_postRv.imageSet().vectorSpace());
302  m_subMdfValues = new ArrayOfOneDTables<P_V,P_M>((m_optionsObj->m_prefix+"Mdf_").c_str(),m_postRv.imageSet().vectorSpace());
303  m_chain->subUniformlySampledMdf(numEvaluationPointsVec, // input
304  *m_subMdfGrids, // output
305  *m_subMdfValues); // output
306  m_subSolutionMdf = new SampledVectorMdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
307  *m_subMdfGrids,
308  *m_subMdfValues);
309  m_postRv.setMdf(*m_subSolutionMdf);
310 
311  if ((m_optionsObj->m_dataOutputFileName != UQ_SIP_FILENAME_FOR_NO_FILE ) &&
312  (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end())) {
313  if (m_env.subRank() == 0) {
314  // Write data output file
315  if (m_env.subDisplayFile()) {
316  *m_env.subDisplayFile() << "Opening data output file '" << m_optionsObj->m_dataOutputFileName
317  << "' for calibration problem with problem with prefix = " << m_optionsObj->m_prefix
318  << std::endl;
319  }
320 
321  // Open file
322  // Always write at the end of an eventual pre-existing file
323  std::ofstream* ofsvar = new std::ofstream((m_optionsObj->m_dataOutputFileName+"_sub"+m_env.subIdString()+".m").c_str(), std::ofstream::out | std::ofstream::in | std::ofstream::ate);
324  if ((ofsvar == NULL ) ||
325  (ofsvar->is_open() == false)) {
326  delete ofsvar;
327  ofsvar = new std::ofstream((m_optionsObj->m_dataOutputFileName+"_sub"+m_env.subIdString()+".m").c_str(), std::ofstream::out | std::ofstream::trunc);
328  }
329  queso_require_msg((ofsvar && ofsvar->is_open()), "failed to open file");
330 
331  m_postRv.mdf().print(*ofsvar);
332 
333  // Close file
334  //ofsvar->close();
335  delete ofsvar;
336  if (m_env.subDisplayFile()) {
337  *m_env.subDisplayFile() << "Closed data output file '" << m_optionsObj->m_dataOutputFileName
338  << "' for calibration problem with problem with prefix = " << m_optionsObj->m_prefix
339  << std::endl;
340  }
341  }
342  }
343 #endif
344  if (m_env.subDisplayFile()) {
345  *m_env.subDisplayFile() << std::endl;
346  }
347 
348  m_env.fullComm().syncPrintDebugMsg("Leaving StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()",1,3000000);
349  m_env.fullComm().Barrier();
350  // grvy_timer_end("BayesMetropolisHastings"); TODO: revisit timers
351  return;
352 }
353 
354 template <class P_V, class P_M>
355 void
357 {
358  this->m_seedWithMAPEstimator = true;
359 }
360 
361 template <class P_V,class P_M>
362 void
364 {
365  m_env.fullComm().Barrier();
366  m_env.fullComm().syncPrintDebugMsg("Entering StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()",1,3000000);
367 
368  if (m_optionsObj->m_computeSolution == false) {
369  if ((m_env.subDisplayFile())) {
370  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()"
371  << ": avoiding solution, as requested by user"
372  << std::endl;
373  }
374  return;
375  }
376  if ((m_env.subDisplayFile())) {
377  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()"
378  << ": computing solution, as requested by user"
379  << std::endl;
380  }
381 
382  if (m_mlSampler ) delete m_mlSampler;
383  if (m_mhSeqGenerator ) delete m_mhSeqGenerator;
384  if (m_solutionRealizer) delete m_solutionRealizer;
385  if (m_subSolutionCdf ) delete m_subSolutionCdf;
386  if (m_subSolutionMdf ) delete m_subSolutionMdf;
387  if (m_solutionPdf ) delete m_solutionPdf;
388  if (m_solutionDomain ) delete m_solutionDomain;
389 
390  P_V numEvaluationPointsVec(m_priorRv.imageSet().vectorSpace().zeroVector());
391  numEvaluationPointsVec.cwSet(250.);
392 
393  // Compute output pdf up to a multiplicative constant: Bayesian approach
394  m_solutionDomain = InstantiateIntersection(m_priorRv.pdf().domainSet(),m_likelihoodFunction.domainSet());
395 
396  m_solutionPdf = new BayesianJointPdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
397  m_priorRv.pdf(),
398  m_likelihoodFunction,
399  1.,
400  *m_solutionDomain);
401 
402  m_postRv.setPdf(*m_solutionPdf);
403 
404  // Compute output realizer: ML approach
405  m_chain = new SequenceOfVectors<P_V,P_M>(m_postRv.imageSet().vectorSpace(),0,m_optionsObj->m_prefix+"chain");
406  m_mlSampler = new MLSampling<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
407  //m_postRv,
408  m_priorRv,
409  m_likelihoodFunction);
410  // initialValues,
411  // initialProposalCovMatrix);
412 
413  m_mlSampler->generateSequence(*m_chain,
414  NULL,
415  NULL);
416 
417  m_solutionRealizer = new SequentialVectorRealizer<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
418  *m_chain);
419 
420  m_postRv.setRealizer(*m_solutionRealizer);
421 
422  if (m_env.subDisplayFile()) {
423  *m_env.subDisplayFile() << std::endl;
424  }
425 
426  m_env.fullComm().syncPrintDebugMsg("Leaving StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()",1,3000000);
427  m_env.fullComm().Barrier();
428 
429  return;
430 }
431 
432 template <class P_V, class P_M>
435 {
436  return *m_mhSeqGenerator;
437 }
438 
439 //--------------------------------------------------
440 template <class P_V,class P_M>
443 {
444  return m_priorRv;
445 }
446 //--------------------------------------------------
447 template <class P_V,class P_M>
450 {
451  return m_postRv;
452 }
453 //--------------------------------------------------
454 template <class P_V,class P_M>
457 {
458  queso_require_msg(m_chain, "m_chain is NULL");
459  return *m_chain;
460 }
461 //--------------------------------------------------
462 template <class P_V,class P_M>
465 {
466  queso_require_msg(m_logLikelihoodValues, "m_logLikelihoodValues is NULL");
467  return *m_logLikelihoodValues;
468 }
469 //--------------------------------------------------
470 template <class P_V,class P_M>
473 {
474  queso_require_msg(m_logTargetValues, "m_logTargetValues is NULL");
475  return *m_logTargetValues;
476 }
477 //--------------------------------------------------
478 template <class P_V,class P_M>
480 {
481  queso_require_msg(m_mlSampler, "m_mlSampler is NULL");
482  return m_mlSampler->logEvidence();
483 }
484 //--------------------------------------------------
485 template <class P_V,class P_M>
487 {
488  queso_require_msg(m_mlSampler, "m_mlSampler is NULL");
489  return m_mlSampler->meanLogLikelihood();
490 }
491 //--------------------------------------------------
492 template <class P_V,class P_M>
494 {
495  queso_require_msg(m_mlSampler, "m_mlSampler is NULL");
496  return m_mlSampler->eig();
497 }
498 // I/O methods--------------------------------------
499 template <class P_V,class P_M>
500 void
502 {
503  return;
504 }
505 
506 } // End namespace QUESO
507 
Class to accommodate arrays of one-dimensional grid.
VectorSet< V, M > * InstantiateIntersection(const VectorSet< V, M > &domain1, const VectorSet< V, M > &domain2)
This method calculates the intersection of domain1 and domain2.
unsigned int dimLocal() const
Definition: VectorSpace.C:170
void setInitialPoint(const GslVector &intialPoint)
Set the point at which the optimization starts.
Definition: GslOptimizer.C:217
A class for handling sampled vector MDFs.
const BaseScalarFunction< P_V, P_M > & m_likelihoodFunction
This class provides options for a Statistical Inverse Problem if no input file is available...
A templated class that represents a Metropolis-Hastings generator of samples.
void seedWithMAPEstimator()
Seeds the chain with the result of a deterministic optimisation.
StatisticalInverseProblem(const char *prefix, const SipOptionsValues *alternativeOptionsValues, const BaseVectorRV< P_V, P_M > &priorRv, const BaseScalarFunction< P_V, P_M > &likelihoodFunction, GenericVectorRV< P_V, P_M > &postRv)
Constructor.
const GenericVectorRV< P_V, P_M > & postRv() const
Returns the Posterior RV; access to private attribute m_postrRv.
const BaseVectorRV< P_V, P_M > & m_priorRv
const MetropolisHastingsSG< P_V, P_M > & sequenceGenerator() const
Return the underlying MetropolisHastingSG object.
#define queso_require_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:85
double logEvidence() const
Returns the logarithm value of the evidence. Related to ML.
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:307
virtual void minimize(OptimizerMonitor *monitor=NULL)
Minimize the objective function, starting at m_initialPoint.
Definition: GslOptimizer.C:182
#define queso_require_msg(asserted, msg)
Definition: asserts.h:69
void solveWithBayesMetropolisHastings(const MhOptionsValues *alternativeOptionsValues, const P_V &initialValues, const P_M *initialProposalCovMatrix)
Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.
const VectorSet< V, M > & domainSet() const
Access to the protected attribute m_domainSet: domain set of the scalar function. ...
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:274
void solveWithBayesMLSampling()
Solves with Bayes Multi-Level (ML) sampling.
const BaseVectorSequence< P_V, P_M > & chain() const
Returns the MCMC chain; access to private attribute m_chain.
This class provides options for the Metropolis-Hastings generator of samples if no input file is avai...
Class to accommodate arrays of one-dimensional tables.
const ScalarSequence< double > & logTargetValues() const
Returns log target values; access to private attribute m_logTargetValues.
A class for handling sequential draws (sampling) from probability density distributions.
A templated class that represents a Multilevel generator of samples.
Definition: MLSampling.h:122
void print(std::ostream &os) const
TODO: Prints the sequence.
std::string m_help
If this string is non-empty, options are print to the output file.
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:79
double meanLogLikelihood() const
Returns the mean of the logarithm value of the likelihood. Related to ML.
A base class for handling optimisation of scalar functions.
Definition: GslOptimizer.h:50
const GslVector & minimizer() const
Return the point that minimizes the objective function.
Definition: GslOptimizer.C:225
const ScalarSequence< double > & logLikelihoodValues() const
Returns log likelihood values; access to private attribute m_logLikelihoodValues. ...
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
#define UQ_SIP_FILENAME_FOR_NO_FILE
const BaseVectorRV< P_V, P_M > & priorRv() const
Returns the Prior RV; access to private attribute m_priorRv.
This templated class represents a Statistical Inverse Problem.

Generated on Thu Jun 11 2015 13:52:33 for queso-0.53.0 by  doxygen 1.8.5