BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
IMinimizer.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Fit/Minimizer/IMinimizer.h
6 //! @brief Defines interface IMinimizer.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef USER_API
16 #ifndef BORNAGAIN_FIT_MINIMIZER_IMINIMIZER_H
17 #define BORNAGAIN_FIT_MINIMIZER_IMINIMIZER_H
18 
20 #include "Fit/Minimizer/Types.h"
21 #include <string>
22 
23 namespace mumufit {
24 class Parameters;
25 }
26 
27 //! Abstract base class for all kind minimizers.
28 //! @ingroup fitting_internal
29 
30 class IMinimizer {
31 public:
33  virtual ~IMinimizer();
34 
35  IMinimizer(const IMinimizer& other) = delete;
36  IMinimizer& operator=(const IMinimizer& other) = delete;
37 
38  //! return name of the minimizer
39  virtual std::string minimizerName() const = 0;
40 
41  //! return name of the minimization algorithm
42  virtual std::string algorithmName() const = 0;
43 
44  //! run minimization
47 
48  //! clear resources (parameters) for consecutives minimizations
49  virtual void clear() {}
50 
51  //! Returns minimum function value
52  virtual double minValue() const;
53 
54  //! Sets option string to the minimizer
55  virtual void setOptions(const std::string& options);
56 
57 #ifndef SWIG
58  //! Returns true if minimizer computations are residual-based, false otherwise
59  virtual bool requiresResiduals() { return false; }
60 #endif // USER_API
61 };
62 
63 #endif // BORNAGAIN_FIT_MINIMIZER_IMINIMIZER_H
64 #endif // USER_API
Defines class MinimizerResult.
Defines common types for fitting library.
std::function< double(const mumufit::Parameters &)> fcn_scalar_t
Definition: Types.h:39
std::function< std::vector< double >(const mumufit::Parameters &)> fcn_residual_t
Definition: Types.h:40
Abstract base class for all kind minimizers.
Definition: IMinimizer.h:30
virtual bool requiresResiduals()
Returns true if minimizer computations are residual-based, false otherwise.
Definition: IMinimizer.h:59
virtual ~IMinimizer()
virtual std::string algorithmName() const =0
return name of the minimization algorithm
virtual mumufit::MinimizerResult minimize_residual(fcn_residual_t, mumufit::Parameters)
Definition: IMinimizer.cpp:26
IMinimizer(const IMinimizer &other)=delete
virtual std::string minimizerName() const =0
return name of the minimizer
virtual mumufit::MinimizerResult minimize_scalar(fcn_scalar_t, mumufit::Parameters)
run minimization
Definition: IMinimizer.cpp:21
IMinimizer & operator=(const IMinimizer &other)=delete
virtual void setOptions(const std::string &options)
Sets option string to the minimizer.
Definition: IMinimizer.cpp:36
virtual double minValue() const
Returns minimum function value.
Definition: IMinimizer.cpp:31
virtual void clear()
clear resources (parameters) for consecutives minimizations
Definition: IMinimizer.h:49
Result of minimization round.
A collection of fit parameters.
Definition: Parameters.h:26
The multi-library, multi-algorithm fit wrapper library.