Commit 1c268e73ecd80bcab7f9bdea8a3382a995faaea3
1 parent
41606bea
removed error computation from GOptimizerLM::optimize and added error()-method t…
…o GOptimizer base class. Further implemented GObservations::errors()
Showing
5 changed files
with
30 additions
and
5 deletions
include/GObservations.hpp
| ... | ... | @@ -125,6 +125,7 @@ public: |
| 125 | 125 | void models(const std::string& filename); |
| 126 | 126 | const GModels& models(void) const; |
| 127 | 127 | void optimize(GOptimizer& opt); |
| 128 | + void errors(GOptimizer& opt); | |
| 128 | 129 | void eval(void); |
| 129 | 130 | double logL(void) const; |
| 130 | 131 | double npred(void) const; | ... | ... |
include/GOptimizer.hpp
| ... | ... | @@ -67,6 +67,7 @@ public: |
| 67 | 67 | virtual GOptimizer* clone(void) const = 0; |
| 68 | 68 | virtual std::string classname(void) const = 0; |
| 69 | 69 | virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars) = 0; |
| 70 | + virtual void errors(GOptimizerFunction& fct, GOptimizerPars& pars) = 0; | |
| 70 | 71 | virtual double value(void) const = 0; |
| 71 | 72 | virtual int status(void) const = 0; |
| 72 | 73 | virtual int iter(void) const = 0; | ... | ... |
include/GOptimizerLM.hpp
| ... | ... | @@ -66,6 +66,7 @@ public: |
| 66 | 66 | virtual GOptimizerLM* clone(void) const; |
| 67 | 67 | virtual std::string classname(void) const; |
| 68 | 68 | virtual void optimize(GOptimizerFunction& fct, GOptimizerPars& pars); |
| 69 | + void errors(GOptimizerFunction& fct, GOptimizerPars& pars); | |
| 69 | 70 | virtual double value(void) const { return m_value; } //!< @brief Return function value |
| 70 | 71 | virtual int status(void) const { return m_status; } //!< @brief Return optimization status |
| 71 | 72 | virtual int iter(void) const { return m_iter; } //!< @brief Return number of iterations |
| ... | ... | @@ -94,7 +95,6 @@ protected: |
| 94 | 95 | void copy_members(const GOptimizerLM& opt); |
| 95 | 96 | void free_members(void); |
| 96 | 97 | void iteration(GOptimizerFunction& fct, GOptimizerPars& pars); |
| 97 | - void errors(GOptimizerFunction& fct, GOptimizerPars& pars); | |
| 98 | 98 | double step_size(const GVector& grad, const GOptimizerPars& pars); |
| 99 | 99 | |
| 100 | 100 | // Protected members | ... | ... |
src/obs/GObservations.cpp
| ... | ... | @@ -722,6 +722,27 @@ void GObservations::optimize(GOptimizer& 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 | 746 | * @brief Evaluate function |
| 726 | 747 | * |
| 727 | 748 | * Evaluates the likelihood funtion at the actual set of parameters. | ... | ... |
src/opt/GOptimizerLM.cpp
| ... | ... | @@ -409,9 +409,6 @@ void GOptimizerLM::optimize(GOptimizerFunction& fct, GOptimizerPars& pars) |
| 409 | 409 | } |
| 410 | 410 | |
| 411 | 411 | } // endfor: iterations |
| 412 | - | |
| 413 | - // Compute parameter uncertainties | |
| 414 | - errors(fct, pars); | |
| 415 | 412 | |
| 416 | 413 | // Free now all temporarily frozen parameters so that the resulting |
| 417 | 414 | // model has the same attributes as the initial model |
| ... | ... | @@ -432,7 +429,12 @@ void GOptimizerLM::optimize(GOptimizerFunction& fct, GOptimizerPars& pars) |
| 432 | 429 | |
| 433 | 430 | // ... otherwise just execute final step |
| 434 | 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 | 440 | // Return | ... | ... |