BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
Wrapper for the CERN ROOT facade of the Minuit2 minimizer. See Minuit2 user manual https://root.cern.ch/root/htmldoc/guides/minuit2/Minuit2.pdf.
Definition at line 34 of file Minuit2Minimizer.h.
Public Types | |
using | root_minimizer_t = ROOT::Math::Minimizer |
Public Member Functions | |
Minuit2Minimizer (const std::string &algorithmName="Migrad") | |
~Minuit2Minimizer () override | |
std::string | algorithmName () const override |
Returns name of the minimization algorithm. More... | |
virtual void | clear () |
Clears resources (parameters) for consecutives minimizations. More... | |
double | errorDefinition () const |
int | maxFunctionCalls () const |
mumufit::MinimizerResult | minimize_residual (fcn_residual_t fcn, mumufit::Parameters parameters) override |
Runs minimization. More... | |
mumufit::MinimizerResult | minimize_scalar (fcn_scalar_t fcn, mumufit::Parameters parameters) override |
Runs minimization. More... | |
std::string | minimizerName () const override |
Returns name of the minimizer. More... | |
double | minValue () const override |
Returns minimum function value. More... | |
MinimizerOptions & | options () |
const MinimizerOptions & | options () const |
double | precision () const |
int | printLevel () const |
bool | providesError () const |
Returns true if minimizer provides error and error matrix. More... | |
bool | requiresResiduals () override |
Returns true if minimizer computations are residual-based, false otherwise. More... | |
void | setErrorDefinition (double value) |
Sets error definition factor for parameter error calculation. If objective function (OF) is the usual chisquare function and if the user wants the usual one-standard-deviation errors, then the error definition should be 1.0. If OF is a negative-log-likelihood function, then 0.5. If OF is a chisquare, but the user wants two-standard-deviation errors, 4.0. More... | |
void | setMaxFunctionCalls (int value) |
Sets maximum number of objective function calls. More... | |
void | setOptions (const std::string &optionString) override |
Sets option string to the minimizer. More... | |
void | setParameters (const mumufit::Parameters ¶meters) |
void | setPrecision (double value) |
Sets relative floating point arithmetic precision. Should be adjusted when the user knows that objectiove function value is not calculated to the nominal machine accuracy. Typical values are between 10^-5 and 10^-14. More... | |
void | setPrintLevel (int value) |
Sets minimizer internal print level. Default value is 0 (silent). More... | |
void | setStrategy (int value) |
Sets minimization strategy (0-low, 1-medium, 2-high minimization quality). At low quality number of function calls will be economized. More... | |
void | setTolerance (double value) |
Sets tolerance on the function value at the minimum. Minimization will stop when the estimated vertical distance to the minimum (EDM) is less than 0.001*tolerance*ErrorDef. Here ErrorDef=1.0 for chi squared fit and ErrorDef=0.5 for negative log likelihood fit. More... | |
std::map< std::string, std::string > | statusMap () const override |
Returns map of string representing different minimizer statuses. More... | |
std::string | statusToString () const override |
Returns string representation of current minimizer status. More... | |
int | strategy () const |
double | tolerance () const |
Protected Member Functions | |
template<class T > | |
OptionContainer::option_t | addOption (const std::string &optionName, T value, const std::string &description="") |
size_t | fitRank () const |
Returns number of fit parameters defined (i.e. dimension of the function to be minimized). More... | |
mumufit::MinimizerResult | minimize (mumufit::Parameters parameters) |
template<class T > | |
T | optionValue (const std::string &optionName) const |
std::vector< double > | parErrorsAtMinimum () const |
Returns errors of the variables at minimum. More... | |
std::vector< double > | parValuesAtMinimum () const |
Returns value of the variables at minimum. More... | |
void | propagateOptions () override |
Propagate options down to ROOT's Minuit2Minimizer. More... | |
void | propagateResults (mumufit::Parameters ¶meters) |
Propagates results of minimization to fit parameter set. More... | |
root_minimizer_t * | rootMinimizer () |
const root_minimizer_t * | rootMinimizer () const override |
template<class T > | |
void | setOptionValue (const std::string &optionName, T value) |
virtual void | setParameter (unsigned int index, const mumufit::Parameter &par) |
Private Attributes | |
std::unique_ptr< mumufit::ObjectiveFunctionAdapter > | m_adapter |
MinimizerInfo | m_minimizerInfo |
std::unique_ptr< ROOT::Minuit2::Minuit2Minimizer > | m_minuit2_minimizer |
MinimizerOptions | m_options |
bool | m_status |
|
inherited |
Definition at line 47 of file MinimizerAdapter.h.
|
explicit |
Definition at line 46 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::addOption().
|
overridedefault |
|
protectedinherited |
Definition at line 115 of file MinimizerAdapter.h.
References OptionContainer::addOption(), and MinimizerAdapter::m_options.
Referenced by GeneticMinimizer::GeneticMinimizer(), GSLLevenbergMarquardtMinimizer::GSLLevenbergMarquardtMinimizer(), GSLMultiMinimizer::GSLMultiMinimizer(), Minuit2Minimizer(), and SimAnMinimizer::SimAnMinimizer().
|
overridevirtualinherited |
Returns name of the minimization algorithm.
Implements IMinimizer.
Definition at line 73 of file MinimizerAdapter.cpp.
References MinimizerInfo::algorithmName(), and MinimizerAdapter::m_minimizerInfo.
Referenced by requiresResiduals().
|
inlinevirtualinherited |
Clears resources (parameters) for consecutives minimizations.
Definition at line 50 of file IMinimizer.h.
double Minuit2Minimizer::errorDefinition | ( | ) | const |
Definition at line 75 of file Minuit2Minimizer.cpp.
Referenced by propagateOptions().
|
protectedinherited |
Returns number of fit parameters defined (i.e. dimension of the function to be minimized).
Definition at line 180 of file MinimizerAdapter.cpp.
References ROOT::Math::Minimizer::NDim(), and MinimizerAdapter::rootMinimizer().
Referenced by MinimizerAdapter::parErrorsAtMinimum(), MinimizerAdapter::parValuesAtMinimum(), and MinimizerAdapter::propagateResults().
int Minuit2Minimizer::maxFunctionCalls | ( | ) | const |
Definition at line 115 of file Minuit2Minimizer.cpp.
Referenced by propagateOptions().
|
protectedinherited |
Definition at line 50 of file MinimizerAdapter.cpp.
References MinimizerAdapter::m_adapter, MinimizerAdapter::m_status, ROOT::Math::Minimizer::Minimize(), MinimizerAdapter::minValue(), MinimizerAdapter::propagateOptions(), MinimizerAdapter::propagateResults(), mumufit::internal::reportToString(), MinimizerAdapter::rootMinimizer(), mumufit::MinimizerResult::setMinValue(), mumufit::MinimizerResult::setNumberOfCalls(), mumufit::MinimizerResult::setNumberOfGradientCalls(), MinimizerAdapter::setParameters(), mumufit::MinimizerResult::setParameters(), and mumufit::MinimizerResult::setReport().
Referenced by MinimizerAdapter::minimize_residual(), and MinimizerAdapter::minimize_scalar().
|
overridevirtualinherited |
Runs minimization.
Reimplemented from IMinimizer.
Definition at line 43 of file MinimizerAdapter.cpp.
References MinimizerAdapter::m_adapter, MinimizerAdapter::minimize(), MinimizerAdapter::rootMinimizer(), and ROOT::Math::Minimizer::SetFunction().
|
overridevirtualinherited |
Runs minimization.
Reimplemented from IMinimizer.
Definition at line 36 of file MinimizerAdapter.cpp.
References MinimizerAdapter::m_adapter, MinimizerAdapter::minimize(), MinimizerAdapter::rootMinimizer(), and ROOT::Math::Minimizer::SetFunction().
|
overridevirtualinherited |
Returns name of the minimizer.
Implements IMinimizer.
Definition at line 68 of file MinimizerAdapter.cpp.
References MinimizerAdapter::m_minimizerInfo, and MinimizerInfo::name().
|
overridevirtualinherited |
Returns minimum function value.
Reimplemented from IMinimizer.
Definition at line 85 of file MinimizerAdapter.cpp.
References ROOT::Math::Minimizer::MinValue(), and MinimizerAdapter::rootMinimizer().
Referenced by MinimizerAdapter::minimize(), and MinimizerAdapter::statusMap().
|
inlineinherited |
Definition at line 66 of file MinimizerAdapter.h.
References MinimizerAdapter::m_options.
Referenced by MinimizerAdapter::setOptions().
|
inlineinherited |
|
protectedinherited |
Definition at line 128 of file MinimizerAdapter.h.
References MinimizerAdapter::m_options, and OptionContainer::optionValue().
|
protectedinherited |
Returns errors of the variables at minimum.
Definition at line 197 of file MinimizerAdapter.cpp.
References MinimizerAdapter::fitRank(), and MinimizerAdapter::rootMinimizer().
Referenced by MinimizerAdapter::propagateResults().
|
protectedinherited |
Returns value of the variables at minimum.
Definition at line 187 of file MinimizerAdapter.cpp.
References MinimizerAdapter::fitRank(), and MinimizerAdapter::rootMinimizer().
Referenced by MinimizerAdapter::propagateResults().
double Minuit2Minimizer::precision | ( | ) | const |
Definition at line 95 of file Minuit2Minimizer.cpp.
Referenced by propagateOptions().
int Minuit2Minimizer::printLevel | ( | ) | const |
Definition at line 105 of file Minuit2Minimizer.cpp.
Referenced by propagateOptions().
|
overrideprotectedvirtual |
Propagate options down to ROOT's Minuit2Minimizer.
Implements MinimizerAdapter.
Definition at line 144 of file Minuit2Minimizer.cpp.
References errorDefinition(), m_minuit2_minimizer, maxFunctionCalls(), precision(), printLevel(), strategy(), and tolerance().
|
protectedinherited |
Propagates results of minimization to fit parameter set.
Definition at line 122 of file MinimizerAdapter.cpp.
References ROOT::Math::Minimizer::Correlation(), MinimizerAdapter::fitRank(), MinimizerAdapter::parErrorsAtMinimum(), MinimizerAdapter::parValuesAtMinimum(), MinimizerAdapter::providesError(), MinimizerAdapter::rootMinimizer(), mumufit::Parameters::setCorrelationMatrix(), mumufit::Parameters::setErrors(), and mumufit::Parameters::setValues().
Referenced by MinimizerAdapter::minimize().
|
inherited |
Returns true if minimizer provides error and error matrix.
Definition at line 95 of file MinimizerAdapter.cpp.
References ROOT::Math::Minimizer::ProvidesError(), and MinimizerAdapter::rootMinimizer().
Referenced by MinimizerAdapter::propagateResults(), and MinimizerAdapter::statusMap().
|
overridevirtual |
Returns true if minimizer computations are residual-based, false otherwise.
Reimplemented from IMinimizer.
Definition at line 137 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::algorithmName().
|
protectedinherited |
Definition at line 207 of file MinimizerAdapter.cpp.
References MinimizerAdapter::rootMinimizer().
|
overrideprotectedvirtual |
Implements MinimizerAdapter.
Definition at line 154 of file Minuit2Minimizer.cpp.
References m_minuit2_minimizer.
Referenced by statusMap(), and statusToString().
void Minuit2Minimizer::setErrorDefinition | ( | double | value | ) |
Sets error definition factor for parameter error calculation. If objective function (OF) is the usual chisquare function and if the user wants the usual one-standard-deviation errors, then the error definition should be 1.0. If OF is a negative-log-likelihood function, then 0.5. If OF is a chisquare, but the user wants two-standard-deviation errors, 4.0.
Definition at line 70 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::setOptionValue().
void Minuit2Minimizer::setMaxFunctionCalls | ( | int | value | ) |
Sets maximum number of objective function calls.
Definition at line 110 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::setOptionValue().
|
overridevirtualinherited |
Sets option string to the minimizer.
Reimplemented from IMinimizer.
Definition at line 115 of file MinimizerAdapter.cpp.
References MinimizerAdapter::options(), and MinimizerOptions::setOptionString().
|
protectedinherited |
Definition at line 122 of file MinimizerAdapter.h.
References MinimizerAdapter::m_options, and OptionContainer::setOptionValue().
Referenced by SimAnMinimizer::setBoltzmannInitialTemp(), SimAnMinimizer::setBoltzmannK(), SimAnMinimizer::setBoltzmannMinTemp(), SimAnMinimizer::setBoltzmannMu(), setErrorDefinition(), SimAnMinimizer::setIterationsAtEachTemp(), setMaxFunctionCalls(), GeneticMinimizer::setMaxIterations(), GSLLevenbergMarquardtMinimizer::setMaxIterations(), GSLMultiMinimizer::setMaxIterations(), SimAnMinimizer::setMaxIterations(), GeneticMinimizer::setPopulationSize(), setPrecision(), GeneticMinimizer::setPrintLevel(), GSLLevenbergMarquardtMinimizer::setPrintLevel(), GSLMultiMinimizer::setPrintLevel(), setPrintLevel(), SimAnMinimizer::setPrintLevel(), GeneticMinimizer::setRandomSeed(), SimAnMinimizer::setStepSize(), setStrategy(), GeneticMinimizer::setTolerance(), GSLLevenbergMarquardtMinimizer::setTolerance(), and setTolerance().
|
protectedvirtualinherited |
Reimplemented in GSLLevenbergMarquardtMinimizer, and GeneticMinimizer.
Definition at line 141 of file MinimizerAdapter.cpp.
References AttLimits::isFixed(), AttLimits::isLimited(), AttLimits::isLimitless(), AttLimits::isLowerLimited(), AttLimits::isUpperLimited(), mumufit::Parameter::limits(), AttLimits::lowerLimit(), mumufit::Parameter::name(), MinimizerAdapter::rootMinimizer(), ROOT::Math::Minimizer::SetFixedVariable(), ROOT::Math::Minimizer::SetLimitedVariable(), ROOT::Math::Minimizer::SetLowerLimitedVariable(), ROOT::Math::Minimizer::SetUpperLimitedVariable(), ROOT::Math::Minimizer::SetVariable(), mumufit::Parameter::step(), AttLimits::upperLimit(), and mumufit::Parameter::value().
Referenced by GeneticMinimizer::setParameter(), GSLLevenbergMarquardtMinimizer::setParameter(), and MinimizerAdapter::setParameters().
|
inherited |
Definition at line 78 of file MinimizerAdapter.cpp.
References MinimizerAdapter::setParameter().
Referenced by MinimizerAdapter::minimize().
void Minuit2Minimizer::setPrecision | ( | double | value | ) |
Sets relative floating point arithmetic precision. Should be adjusted when the user knows that objectiove function value is not calculated to the nominal machine accuracy. Typical values are between 10^-5 and 10^-14.
Definition at line 90 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::setOptionValue().
void Minuit2Minimizer::setPrintLevel | ( | int | value | ) |
Sets minimizer internal print level. Default value is 0 (silent).
Definition at line 100 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::setOptionValue().
void Minuit2Minimizer::setStrategy | ( | int | value | ) |
Sets minimization strategy (0-low, 1-medium, 2-high minimization quality). At low quality number of function calls will be economized.
Definition at line 60 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::setOptionValue().
void Minuit2Minimizer::setTolerance | ( | double | value | ) |
Sets tolerance on the function value at the minimum. Minimization will stop when the estimated vertical distance to the minimum (EDM) is less than 0.001*tolerance*ErrorDef. Here ErrorDef=1.0 for chi squared fit and ErrorDef=0.5 for negative log likelihood fit.
Definition at line 80 of file Minuit2Minimizer.cpp.
References MinimizerAdapter::setOptionValue().
|
overridevirtual |
Returns map of string representing different minimizer statuses.
Reimplemented from MinimizerAdapter.
Definition at line 125 of file Minuit2Minimizer.cpp.
References ROOT::Math::Minimizer::CovMatrixStatus(), rootMinimizer(), mumufit::stringUtils::scientific(), and MinimizerAdapter::statusMap().
|
overridevirtual |
Returns string representation of current minimizer status.
Reimplemented from MinimizerAdapter.
Definition at line 120 of file Minuit2Minimizer.cpp.
References rootMinimizer(), and ROOT::Math::Minimizer::Status().
int Minuit2Minimizer::strategy | ( | ) | const |
Definition at line 65 of file Minuit2Minimizer.cpp.
Referenced by propagateOptions().
double Minuit2Minimizer::tolerance | ( | ) | const |
Definition at line 85 of file Minuit2Minimizer.cpp.
Referenced by propagateOptions().
|
privateinherited |
Definition at line 110 of file MinimizerAdapter.h.
Referenced by MinimizerAdapter::minimize(), MinimizerAdapter::minimize_residual(), and MinimizerAdapter::minimize_scalar().
|
privateinherited |
Definition at line 109 of file MinimizerAdapter.h.
Referenced by MinimizerAdapter::algorithmName(), and MinimizerAdapter::minimizerName().
|
private |
Definition at line 84 of file Minuit2Minimizer.h.
Referenced by propagateOptions(), and rootMinimizer().
|
privateinherited |
Definition at line 108 of file MinimizerAdapter.h.
Referenced by MinimizerAdapter::addOption(), MinimizerAdapter::options(), MinimizerAdapter::optionValue(), and MinimizerAdapter::setOptionValue().
|
privateinherited |
Definition at line 111 of file MinimizerAdapter.h.
Referenced by MinimizerAdapter::minimize(), and MinimizerAdapter::statusToString().