Commit 1c268e73ecd80bcab7f9bdea8a3382a995faaea3

Authored by Michael Mayer
1 parent 41606bea

removed error computation from GOptimizerLM::optimize and added error()-method t…

…o GOptimizer base class. Further implemented GObservations::errors()
include/GObservations.hpp
@@ -125,6 +125,7 @@ public: @@ -125,6 +125,7 @@ public:
125 void models(const std::string& filename); 125 void models(const std::string& filename);
126 const GModels& models(void) const; 126 const GModels& models(void) const;
127 void optimize(GOptimizer& opt); 127 void optimize(GOptimizer& opt);
  128 + void errors(GOptimizer& opt);
128 void eval(void); 129 void eval(void);
129 double logL(void) const; 130 double logL(void) const;
130 double npred(void) const; 131 double npred(void) const;
include/GOptimizer.hpp
@@ -67,6 +67,7 @@ public: @@ -67,6 +67,7 @@ public:
67 virtual GOptimizer* clone(void) const = 0; 67 virtual GOptimizer* clone(void) const = 0;
68 virtual std::string classname(void) const = 0; 68 virtual std::string classname(void) const = 0;
69 virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars) = 0; 69 virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars) = 0;
  70 + virtual void errors(GOptimizerFunction& fct, GOptimizerPars& pars) = 0;
70 virtual double value(void) const = 0; 71 virtual double value(void) const = 0;
71 virtual int status(void) const = 0; 72 virtual int status(void) const = 0;
72 virtual int iter(void) const = 0; 73 virtual int iter(void) const = 0;
include/GOptimizerLM.hpp
@@ -66,6 +66,7 @@ public: @@ -66,6 +66,7 @@ public:
66 virtual GOptimizerLM* clone(void) const; 66 virtual GOptimizerLM* clone(void) const;
67 virtual std::string classname(void) const; 67 virtual std::string classname(void) const;
68 virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars); 68 virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars);
  69 + void errors(GOptimizerFunction& fct, GOptimizerPars& pars);
69 virtual double value(void) const { return m_value; } //!< @brief Return function value 70 virtual double value(void) const { return m_value; } //!< @brief Return function value
70 virtual int status(void) const { return m_status; } //!< @brief Return optimization status 71 virtual int status(void) const { return m_status; } //!< @brief Return optimization status
71 virtual int iter(void) const { return m_iter; } //!< @brief Return number of iterations 72 virtual int iter(void) const { return m_iter; } //!< @brief Return number of iterations
@@ -94,7 +95,6 @@ protected: @@ -94,7 +95,6 @@ protected:
94 void copy_members(const GOptimizerLM& opt); 95 void copy_members(const GOptimizerLM& opt);
95 void free_members(void); 96 void free_members(void);
96 void iteration(GOptimizerFunction& fct, GOptimizerPars& pars); 97 void iteration(GOptimizerFunction& fct, GOptimizerPars& pars);
97 - void errors(GOptimizerFunction& fct, GOptimizerPars& pars);  
98 double step_size(const GVector& grad, const GOptimizerPars& pars); 98 double step_size(const GVector& grad, const GOptimizerPars& pars);
99 99
100 // Protected members 100 // Protected members
src/obs/GObservations.cpp
@@ -722,6 +722,27 @@ void GObservations::optimize(GOptimizer&amp; opt) @@ -722,6 +722,27 @@ void GObservations::optimize(GOptimizer&amp; opt)
722 722
723 723
724 /***********************************************************************//** 724 /***********************************************************************//**
  725 + * @brief Computes parameter errors using optimizer
  726 + *
  727 + * @param[in] opt Optimizer.
  728 + *
  729 + * Calculates the errors of the free parameters of the models by using
  730 + * the optimizer that has been provided by the @p opt argument.
  731 + ***************************************************************************/
  732 +void GObservations::errors(GOptimizer& opt)
  733 +{
  734 + // Extract optimizer parameter container from model container
  735 + GOptimizerPars pars = m_models.pars();
  736 +
  737 + // Optimize model parameters
  738 + opt.errors(m_fct, pars);
  739 +
  740 + // Return
  741 + return;
  742 +}
  743 +
  744 +
  745 +/***********************************************************************//**
725 * @brief Evaluate function 746 * @brief Evaluate function
726 * 747 *
727 * Evaluates the likelihood funtion at the actual set of parameters. 748 * Evaluates the likelihood funtion at the actual set of parameters.
src/opt/GOptimizerLM.cpp
@@ -409,9 +409,6 @@ void GOptimizerLM::optimize(GOptimizerFunction&amp; fct, GOptimizerPars&amp; pars) @@ -409,9 +409,6 @@ void GOptimizerLM::optimize(GOptimizerFunction&amp; fct, GOptimizerPars&amp; pars)
409 } 409 }
410 410
411 } // endfor: iterations 411 } // endfor: iterations
412 -  
413 - // Compute parameter uncertainties  
414 - errors(fct, pars);  
415 412
416 // Free now all temporarily frozen parameters so that the resulting 413 // Free now all temporarily frozen parameters so that the resulting
417 // model has the same attributes as the initial model 414 // model has the same attributes as the initial model
@@ -432,7 +429,12 @@ void GOptimizerLM::optimize(GOptimizerFunction&amp; fct, GOptimizerPars&amp; pars) @@ -432,7 +429,12 @@ void GOptimizerLM::optimize(GOptimizerFunction&amp; fct, GOptimizerPars&amp; pars)
432 429
433 // ... otherwise just execute final step 430 // ... otherwise just execute final step
434 else { 431 else {
435 - errors(fct, pars); 432 +
  433 + // Evaluate function
  434 + fct.eval(pars);
  435 +
  436 + // Save function value
  437 + m_value = fct.value();
436 } 438 }
437 439
438 // Return 440 // Return