BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MinimizerItem.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/MinimizerItem.h
6 //! @brief Defines MinimizerItem class
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 BORNAGAIN_GUI_COREGUI_MODELS_MINIMIZERITEM_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_MINIMIZERITEM_H
17 
19 
20 class IMinimizer;
21 class ObjectiveMetric;
22 
23 //! The MinimizerItem class is the base item to hold minimizer settings.
24 
25 class BA_CORE_API_ MinimizerItem : public SessionItem {
26 public:
27  explicit MinimizerItem(const QString& model_type);
28  virtual std::unique_ptr<IMinimizer> createMinimizer() const = 0;
29 };
30 
31 //! The MinimizerContainerItem class holds collection of minimizers.
32 
33 class BA_CORE_API_ MinimizerContainerItem : public MinimizerItem {
34 public:
35  static const QString P_MINIMIZERS;
36  static const QString P_METRIC;
37  static const QString P_NORM;
38 
40 
41  std::unique_ptr<IMinimizer> createMinimizer() const;
42  std::unique_ptr<ObjectiveMetric> createMetric() const;
43 };
44 
45 //! The MinuitMinimizerItem class represents settings for ROOT Minuit2 minimizer.
46 
47 class BA_CORE_API_ MinuitMinimizerItem : public MinimizerItem {
48 public:
49  static const QString P_ALGORITHMS;
50  static const QString P_STRATEGY;
51  static const QString P_ERRORDEF;
52  static const QString P_TOLERANCE;
53  static const QString P_PRECISION;
54  static const QString P_MAXFUNCTIONCALLS;
55 
57  std::unique_ptr<IMinimizer> createMinimizer() const;
58 };
59 
60 //! The GSLMinimizerItem class represents settings for GSL MultiMin minimizer family.
61 
62 class BA_CORE_API_ GSLMultiMinimizerItem : public MinimizerItem {
63 public:
64  static const QString P_ALGORITHMS;
65  static const QString P_MAXITERATIONS;
66 
68  std::unique_ptr<IMinimizer> createMinimizer() const;
69 };
70 
71 //! The GeneticMinimizerItem class represents settings for TMVA/Genetic minimizer.
72 
73 class BA_CORE_API_ GeneticMinimizerItem : public MinimizerItem {
74 public:
75  static const QString P_TOLERANCE;
76  static const QString P_MAXITERATIONS;
77  static const QString P_POPULATIONSIZE;
78  static const QString P_RANDOMSEED;
79 
81  std::unique_ptr<IMinimizer> createMinimizer() const;
82 };
83 
84 //! The SimAnMinimizerItem class represents settings for GSL's simulated annealing minimizer.
85 
86 class BA_CORE_API_ SimAnMinimizerItem : public MinimizerItem {
87 public:
88  static const QString P_MAXITERATIONS;
89  static const QString P_ITERATIONSTEMP;
90  static const QString P_STEPSIZE;
91  static const QString P_BOLTZMANN_K;
92  static const QString P_BOLTZMANN_TINIT;
93  static const QString P_BOLTZMANN_MU;
94  static const QString P_BOLTZMANN_TMIN;
95 
97 
98  std::unique_ptr<IMinimizer> createMinimizer() const;
99 };
100 
101 //! The GSLLMAMinimizerItem class represents settings for GSL's version of Levenberg-Marquardt.
102 
103 class BA_CORE_API_ GSLLMAMinimizerItem : public MinimizerItem {
104 public:
105  static const QString P_TOLERANCE;
106  static const QString P_MAXITERATIONS;
107 
109  std::unique_ptr<IMinimizer> createMinimizer() const;
110 };
111 
112 //! The TestMinimizerItem class represents domain's TestMinimizer to test whole chain
113 
114 class BA_CORE_API_ TestMinimizerItem : public MinimizerItem {
115 public:
117  std::unique_ptr<IMinimizer> createMinimizer() const;
118 };
119 
120 #endif // BORNAGAIN_GUI_COREGUI_MODELS_MINIMIZERITEM_H
Defines class SessionItem.
The GSLLMAMinimizerItem class represents settings for GSL's version of Levenberg-Marquardt.
static const QString P_TOLERANCE
static const QString P_MAXITERATIONS
The GSLMinimizerItem class represents settings for GSL MultiMin minimizer family.
Definition: MinimizerItem.h:62
static const QString P_MAXITERATIONS
Definition: MinimizerItem.h:65
static const QString P_ALGORITHMS
Definition: MinimizerItem.h:64
The GeneticMinimizerItem class represents settings for TMVA/Genetic minimizer.
Definition: MinimizerItem.h:73
static const QString P_TOLERANCE
Definition: MinimizerItem.h:75
static const QString P_RANDOMSEED
Definition: MinimizerItem.h:78
static const QString P_POPULATIONSIZE
Definition: MinimizerItem.h:77
static const QString P_MAXITERATIONS
Definition: MinimizerItem.h:76
Abstract base class for all kind minimizers.
Definition: IMinimizer.h:30
The MinimizerContainerItem class holds collection of minimizers.
Definition: MinimizerItem.h:33
static const QString P_NORM
Definition: MinimizerItem.h:37
static const QString P_METRIC
Definition: MinimizerItem.h:36
static const QString P_MINIMIZERS
Definition: MinimizerItem.h:35
The MinimizerItem class is the base item to hold minimizer settings.
Definition: MinimizerItem.h:25
virtual std::unique_ptr< IMinimizer > createMinimizer() const =0
The MinuitMinimizerItem class represents settings for ROOT Minuit2 minimizer.
Definition: MinimizerItem.h:47
static const QString P_ERRORDEF
Definition: MinimizerItem.h:51
static const QString P_STRATEGY
Definition: MinimizerItem.h:50
static const QString P_MAXFUNCTIONCALLS
Definition: MinimizerItem.h:54
static const QString P_PRECISION
Definition: MinimizerItem.h:53
static const QString P_TOLERANCE
Definition: MinimizerItem.h:52
static const QString P_ALGORITHMS
Definition: MinimizerItem.h:49
Base class for metric implementations.
The SimAnMinimizerItem class represents settings for GSL's simulated annealing minimizer.
Definition: MinimizerItem.h:86
static const QString P_BOLTZMANN_TMIN
Definition: MinimizerItem.h:94
static const QString P_STEPSIZE
Definition: MinimizerItem.h:90
static const QString P_ITERATIONSTEMP
Definition: MinimizerItem.h:89
static const QString P_BOLTZMANN_K
Definition: MinimizerItem.h:91
static const QString P_BOLTZMANN_MU
Definition: MinimizerItem.h:93
static const QString P_MAXITERATIONS
Definition: MinimizerItem.h:88
static const QString P_BOLTZMANN_TINIT
Definition: MinimizerItem.h:92
The TestMinimizerItem class represents domain's TestMinimizer to test whole chain.
std::string model_type
Definition: types.h:23
std::unique_ptr< ObjectiveMetric > createMetric(const std::string &metric)
Creates the specified metric with the default norm.