BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
MinimizerInfo.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Fit/Minimizer/MinimizerInfo.h
6 //! @brief Declares class MinimizerInfo.
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_MINIMIZERINFO_H
17 #define BORNAGAIN_FIT_MINIMIZER_MINIMIZERINFO_H
18 
19 #include <string>
20 #include <utility>
21 #include <vector>
22 
23 //! A name and a description.
24 
26 public:
27  AlgorithmInfo(std::string itemName, std::string itemDescription)
28  : m_itemName(std::move(itemName))
29  , m_itemDescription(std::move(itemDescription))
30  {
31  }
32 
33  std::string name() const { return m_itemName; }
34  std::string description() const { return m_itemDescription; }
35 
36 private:
37  const std::string m_itemName;
38  const std::string m_itemDescription;
39 };
40 
41 //! Info about a minimizer, including list of defined minimization algorithms.
42 
44 public:
45  MinimizerInfo(std::string minimizerType, std::string minimizerDescription)
46  : m_name(std::move(minimizerType))
47  , m_description(std::move(minimizerDescription))
48  {
49  }
50  MinimizerInfo(const MinimizerInfo&) = delete;
52 
53  //! Sets currently active algorithm
54  void setAlgorithmName(const std::string& algorithmName);
55 
56  std::string name() const { return m_name; }
57  std::string description() const { return m_description; }
58 
59  std::string algorithmName() const { return m_current_algorithm; }
60 
61  std::vector<std::string> algorithmNames() const;
62  std::vector<std::string> algorithmDescriptions() const;
63 
64  static MinimizerInfo buildMinuit2Info(const std::string& defaultAlgo = "");
65  static MinimizerInfo buildGSLMultiMinInfo(const std::string& defaultAlgo = "");
69 
70 private:
71  void addAlgorithm(const AlgorithmInfo& algorithm);
72  void addAlgorithm(const std::string& algorithmName, const std::string& algorithmDescription);
73 
74  const std::string m_name;
75  const std::string m_description;
76  std::vector<AlgorithmInfo> m_algorithms;
77  std::string m_current_algorithm;
78 };
79 
80 #endif // BORNAGAIN_FIT_MINIMIZER_MINIMIZERINFO_H
81 #endif // USER_API
A name and a description.
Definition: MinimizerInfo.h:25
AlgorithmInfo(std::string itemName, std::string itemDescription)
Definition: MinimizerInfo.h:27
std::string name() const
Definition: MinimizerInfo.h:33
const std::string m_itemDescription
Definition: MinimizerInfo.h:38
std::string description() const
Definition: MinimizerInfo.h:34
const std::string m_itemName
Definition: MinimizerInfo.h:37
Info about a minimizer, including list of defined minimization algorithms.
Definition: MinimizerInfo.h:43
std::string m_current_algorithm
Definition: MinimizerInfo.h:77
const std::string m_name
Definition: MinimizerInfo.h:74
static MinimizerInfo buildGeneticInfo()
Creates information for TMVA genetic minimizer.
static MinimizerInfo buildGSLSimAnInfo()
Creates information for GSL's simmulated annealing algorithm.
std::string algorithmName() const
Definition: MinimizerInfo.h:59
void setAlgorithmName(const std::string &algorithmName)
Sets currently active algorithm.
MinimizerInfo(const MinimizerInfo &)=delete
std::vector< std::string > algorithmDescriptions() const
Returns list of string with description of all available algorithms.
std::string name() const
Definition: MinimizerInfo.h:56
std::string description() const
Definition: MinimizerInfo.h:57
MinimizerInfo(MinimizerInfo &&)=default
void addAlgorithm(const AlgorithmInfo &algorithm)
Adds minimizer algorithm to the list of defined algorithms.
std::vector< AlgorithmInfo > m_algorithms
Definition: MinimizerInfo.h:76
static MinimizerInfo buildGSLLMAInfo()
Creates information for GSL's Levenberg-Marquardt.
static MinimizerInfo buildGSLMultiMinInfo(const std::string &defaultAlgo="")
Creates information for GSLMultiMinMinimizer.
std::vector< std::string > algorithmNames() const
Return list of defined algorithm names.
static MinimizerInfo buildMinuit2Info(const std::string &defaultAlgo="")
Creates information for Minuit2Minimizer.
MinimizerInfo(std::string minimizerType, std::string minimizerDescription)
Definition: MinimizerInfo.h:45
const std::string m_description
Definition: MinimizerInfo.h:75