-
Before no parameter members have been copied as the loop used the actual size of the object instead of the size of the parameters to be copied.
-
Added a logger() method that allows setting the logger for an optimizer (and that also allows to set the NULL pointer)
-
This avoids entering oscillations in case of bad convergence behaviour.
-
A new parameter was introduce to specify the acceptable function decrease in an iteration. Acceptable means that the new parameters are kept for continuing the iterations. This behaviour existed already before, but a low threshold of 1e-6 did not really activate it. Now the threshold was raised to 1.0 and this help ctlike to converge quicker. Methods accept_dec() have been implemented to get and set the acceptable threshold.
-
Conflicts: ChangeLog inst/cta/src/GCTAResponse_helpers.cpp inst/cta/src/GCTASupport.hpp
-
…o GOptimizer base class. Further implemented GObservations::errors()
-
As the scale factor can be negative, negative errors were returned before. By definition the error is a positive number, hence now the absolute value of the error will be returned.
-
The "*" symbol may be seen as a warning, the ">" symbol looks less aggressive and more positive.
-
Having the minus sign in front avoids "--" dumps.
-
The autoscale() method has apparently not been implemented correctly. Now this should work.
-
The coding and design conventions (CDC) document was also updated.
-
The curvature matrix, which is equal to one-half time the Hessian matrix, is evaluated and not the covariance matrix. To make this clean, all covar terms have been renamed to curvature.
-
Initially, there was a unlogic relation between GModels and GOptimizerPars, where GModels derives from GOptimizerPars, but both classes contained different types of objects. GModels is a model container, while GOptimizerPars is a parameter container. Now, GModels derives directly from GContainer and no longer from GOptimizerPars. The GModels::pars() method has been added to extract a flat array of model parameter pointers into a GOptimizerPars object. GOptimizerPars, which was abstract before, is now a real container class that also derives from GContainer.
-
The GOptimizePar class has been copied over from GModelPar. The only methods that were not copied were the read() and write() methods for the XML format.
-
Before, no evaluation was done if there was no parameter to fit, giving an empty model in case that all parameters were fixed. Now, the final evaluation is done in all cases.
-
Add GChatter argument to print() method. The print() method now takes an argument of type GChatter to control the chattiness of the output in a homogenous manner. Pass NORMAL chatter level in __str__ method. Add chatter argument to print() methods. Use GLog::chatter() method to control the chattiness of the log stream operator. Add chatter() methods and provide member access through const references. Add chatter() methods, provide member access through const references, and declare one liners as inline methods. The chatter() methods control the new m_chatter attribute that is used to control the chattiness of the object's print() methods. name() and version() methods return const references. logFileOpen() method now sets the chattiness from the applications's chatter parameter, and name() and version() methods now return a const reference.
-
The GObservations::copy_members() copied the m_fct which it should not have done, as the m_fct::m_this member shall always point to GObservations, hence it should never be copied! Copying led in fact to a segmentation fault. The copy instruction has been removed which corrected the bug.
-
Adapt the class to the new GOptimizer interface. Return a bunch of members now by const reference, and also use const reference as arguents in the propected iteration(), errors() and step_size() methods.
-
The optimization operators have been removed and been replaced by the optimize() method. This method does not return any argument. Instead, it directly manipulates the parameters that are passed as arguments.