Commit 8cbd8272839fbe0f9a1d9bba5a1cf0bacecefc19
1 parent
cd1c6455
Add GOptimizerLM::status_string() method
Showing
4 changed files
with
45 additions
and
24 deletions
NEWS
1 | 1 | New Features and Important Changes in GammaLib 2.1.0 |
2 | 2 | |
3 | -23 March 2023 | |
3 | +24 March 2023 | |
4 | 4 | |
5 | 5 | |
6 | 6 | 1. Introduction |
... | ... | @@ -33,6 +33,7 @@ The following methods have been added: |
33 | 33 | - GResponseVectorCache::load() |
34 | 34 | - GResponseVectorCache::save() |
35 | 35 | - GResponseVectorCache::read() |
36 | +- GOptimizerLM::status_string() | |
36 | 37 | - GCOMObservation(GCOMDri&, GCOMDri&, GCOMDri&, GCOMDri&, GCOMDri&) |
37 | 38 | - GCOMObservation::npred() |
38 | 39 | - GCOMObservation::drw() | ... | ... |
include/GOptimizerLM.hpp
1 | 1 | /*************************************************************************** |
2 | 2 | * GOptimizerLM.hpp - Levenberg Marquardt optimizer * |
3 | 3 | * ----------------------------------------------------------------------- * |
4 | - * copyright (C) 2009-2020 by Juergen Knoedlseder * | |
4 | + * copyright (C) 2009-2023 by Juergen Knoedlseder * | |
5 | 5 | * ----------------------------------------------------------------------- * |
6 | 6 | * * |
7 | 7 | * This program is free software: you can redistribute it and/or modify * |
... | ... | @@ -93,6 +93,7 @@ public: |
93 | 93 | const double& lambda(void) const; |
94 | 94 | const double& eps(void) const; |
95 | 95 | const double& accept_dec(void) const; |
96 | + std::string status_string(void) const; | |
96 | 97 | |
97 | 98 | protected: |
98 | 99 | // Protected methods | ... | ... |
pyext/GOptimizerLM.i
1 | 1 | /*************************************************************************** |
2 | 2 | * GOptimizerLM.i - Levenberg Marquardt optimizer class * |
3 | 3 | * ----------------------------------------------------------------------- * |
4 | - * copyright (C) 2009-2020 by Juergen Knoedlseder * | |
4 | + * copyright (C) 2009-2023 by Juergen Knoedlseder * | |
5 | 5 | * ----------------------------------------------------------------------- * |
6 | 6 | * * |
7 | 7 | * This program is free software: you can redistribute it and/or modify * |
... | ... | @@ -73,6 +73,7 @@ public: |
73 | 73 | const double& lambda_dec(void) const; |
74 | 74 | const double& eps(void) const; |
75 | 75 | const double& accept_dec(void); |
76 | + std::string status_string(void) const; | |
76 | 77 | }; |
77 | 78 | |
78 | 79 | ... | ... |
src/opt/GOptimizerLM.cpp
1 | 1 | /*************************************************************************** |
2 | 2 | * GOptimizerLM.cpp - Levenberg Marquardt optimizer * |
3 | 3 | * ----------------------------------------------------------------------- * |
4 | - * copyright (C) 2009-2022 by Juergen Knoedlseder * | |
4 | + * copyright (C) 2009-2023 by Juergen Knoedlseder * | |
5 | 5 | * ----------------------------------------------------------------------- * |
6 | 6 | * * |
7 | 7 | * This program is free software: you can redistribute it and/or modify * |
... | ... | @@ -549,6 +549,43 @@ void GOptimizerLM::errors(GOptimizerFunction& fct, GOptimizerPars& pars) |
549 | 549 | |
550 | 550 | |
551 | 551 | /***********************************************************************//** |
552 | + * @brief Set fit status string | |
553 | + * | |
554 | + * @return Fit status string. | |
555 | + ***************************************************************************/ | |
556 | +std::string GOptimizerLM::status_string(void) const | |
557 | +{ | |
558 | + // Initialise status string | |
559 | + std::string status; | |
560 | + | |
561 | + // Set status string | |
562 | + switch (m_status) { | |
563 | + case G_LM_CONVERGED: | |
564 | + status = "converged"; | |
565 | + break; | |
566 | + case G_LM_STALLED: | |
567 | + status = "stalled"; | |
568 | + break; | |
569 | + case G_LM_SINGULAR: | |
570 | + status = "singular curvature matrix encountered"; | |
571 | + break; | |
572 | + case G_LM_NOT_POSTIVE_DEFINITE: | |
573 | + status = "curvature matrix not positive definite"; | |
574 | + break; | |
575 | + case G_LM_BAD_ERRORS: | |
576 | + status = "errors are inaccurate"; | |
577 | + break; | |
578 | + default: | |
579 | + status = "unknown"; | |
580 | + break; | |
581 | + } | |
582 | + | |
583 | + // Return status | |
584 | + return status; | |
585 | +} | |
586 | + | |
587 | + | |
588 | +/***********************************************************************//** | |
552 | 589 | * @brief Print optimizer information |
553 | 590 | * |
554 | 591 | * @param[in] chatter Chattiness. |
... | ... | @@ -575,26 +612,7 @@ std::string GOptimizerLM::print(const GChatter& chatter) const |
575 | 612 | |
576 | 613 | // Append status |
577 | 614 | result.append("\n"+gammalib::parformat("Optimization status")); |
578 | - switch (m_status) { | |
579 | - case G_LM_CONVERGED: | |
580 | - result.append("converged"); | |
581 | - break; | |
582 | - case G_LM_STALLED: | |
583 | - result.append("stalled"); | |
584 | - break; | |
585 | - case G_LM_SINGULAR: | |
586 | - result.append("singular curvature matrix encountered"); | |
587 | - break; | |
588 | - case G_LM_NOT_POSTIVE_DEFINITE: | |
589 | - result.append("curvature matrix not positive definite"); | |
590 | - break; | |
591 | - case G_LM_BAD_ERRORS: | |
592 | - result.append("errors are inaccurate"); | |
593 | - break; | |
594 | - default: | |
595 | - result.append("unknown"); | |
596 | - break; | |
597 | - } | |
615 | + result.append(status_string()); | |
598 | 616 | |
599 | 617 | // Append further information |
600 | 618 | result.append("\n"+gammalib::parformat("Number of parameters")); | ... | ... |