GammaLib 2.0.0
Loading...
Searching...
No Matches
GOptimizerPars.hpp
Go to the documentation of this file.
1/***************************************************************************
2 * GOptimizerPars.hpp - Optimizer parameter container class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2009-2017 by Juergen Knoedlseder *
5 * ----------------------------------------------------------------------- *
6 * *
7 * This program is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
19 * *
20 ***************************************************************************/
21/**
22 * @file GOptimizerPars.hpp
23 * @brief Optimizer parameters base class definition
24 * @author Juergen Knoedlseder
25 */
26
27#ifndef GOPTIMIZERPARS_HPP
28#define GOPTIMIZERPARS_HPP
29
30/* __ Includes ___________________________________________________________ */
31#include <string>
32#include <vector>
33#include "GContainer.hpp"
34#include "GOptimizerPar.hpp"
35
36
37/***********************************************************************//**
38 * @class GOptimizerPars
39 *
40 * @brief Optimizer parameter container class
41 *
42 * This class is a container class for parameters of a function that are to
43 * be optimized. The optimizer function is defined by the abstract
44 * GOptimizerFunction class.
45 *
46 * The class holds a flat array of pointers to optimizer parameters. The
47 * class can deal with parameters that are allocated by the class itself,
48 * or with pointers that are passed by a client and allocated/deallocated
49 * by the client.
50 ***************************************************************************/
51class GOptimizerPars : public GContainer {
52
53public:
54 // Constructors and destructors
55 GOptimizerPars(void);
56 explicit GOptimizerPars(const int& number);
57 GOptimizerPars(const GOptimizerPars& pars);
58 virtual ~GOptimizerPars(void);
59
60 // Operators
62 GOptimizerPar* operator[](const int& index);
63 const GOptimizerPar* operator[](const int& index) const;
64 GOptimizerPar* operator[](const std::string& name);
65 const GOptimizerPar* operator[](const std::string& name) const;
66
67 // Methods
68 void clear(void);
69 GOptimizerPars* clone(void) const;
70 std::string classname(void) const;
71 GOptimizerPar* at(const int& index);
72 const GOptimizerPar* at(const int& index) const;
73 int size(void) const;
74 bool is_empty(void) const;
75 int nfree(void) const;
76 GOptimizerPar* set(const int& index, const GOptimizerPar& par);
77 GOptimizerPar* set(const std::string& name, const GOptimizerPar& par);
79 void attach(GOptimizerPar* par);
80 void attach(const int& index, GOptimizerPar* par);
81 void attach(const std::string& name, GOptimizerPar* par);
82 GOptimizerPar* insert(const int& index, const GOptimizerPar& par);
83 GOptimizerPar* insert(const std::string& name, const GOptimizerPar& par);
84 void remove(const int& index);
85 void remove(const std::string& name);
86 void reserve(const int& num);
87 void extend(const GOptimizerPars& pars);
88 bool contains(const std::string& name) const;
89 std::string print(const GChatter& chatter = NORMAL) const;
90
91protected:
92 // Protected methods
93 void init_members(void);
94 void copy_members(const GOptimizerPars& pars);
95 void free_members(void);
96 int get_index(const std::string& name) const;
97
98 // Proteced members
99 std::vector<GOptimizerPar*> m_pars; //!< List of parameters
100 std::vector<bool> m_alloc; //!< Flags allocation
101};
102
103
104/***********************************************************************//**
105 * @brief Return class name
106 *
107 * @return String containing the class name ("GOptimizerPars").
108 ***************************************************************************/
109inline
110std::string GOptimizerPars::classname(void) const
111{
112 return ("GOptimizerPars");
113}
114
115
116/***********************************************************************//**
117 * @brief Return pointer to parameter
118 *
119 * @param[in] index Parameter index [0,...,size()-1].
120 * @return Pointer to parameter.
121 *
122 * Returns a pointer to the parameter with the specified @p index.
123 ***************************************************************************/
124inline
126{
127 return (m_pars[index]);
128}
129
130
131/***********************************************************************//**
132 * @brief Return pointer to parameter (const version)
133 *
134 * @param[in] index Parameter index [0,...,size()-1].
135 * @return Pointer to parameter.
136 *
137 * Returns a pointer to the parameter with the specified @p index.
138 ***************************************************************************/
139inline
140const GOptimizerPar* GOptimizerPars::operator[](const int& index) const
141{
142 return (m_pars[index]);
143}
144
145
146/***********************************************************************//**
147 * @brief Return number of parameters in container
148 *
149 * @return Number of parameters in container.
150 *
151 * Returns the number of parameters in the parameter container.
152 ***************************************************************************/
153inline
154int GOptimizerPars::size(void) const
155{
156 return (int)m_pars.size();
157}
158
159
160/***********************************************************************//**
161 * @brief Signals if there are no parameters in container
162 *
163 * @return True if container is empty, false otherwise.
164 *
165 * Signals if the parameters container does not contain any parameter.
166 ***************************************************************************/
167inline
169{
170 return (m_pars.empty());
171}
172
173
174/***********************************************************************//**
175 * @brief Reserves space for parameters in container
176 *
177 * @param[in] num Number of parameters.
178 *
179 * Reserves space for @p num parameters in the container.
180 ***************************************************************************/
181inline
182void GOptimizerPars::reserve(const int& num)
183{
184 m_pars.reserve(num);
185 return;
186}
187
188#endif /* GOPTIMIZERPARS_HPP */
Definition of interface for container classes.
Optimizer parameter class interface definition.
GChatter
Definition GTypemaps.hpp:33
@ NORMAL
Definition GTypemaps.hpp:36
Interface class for container classes.
Optimizer parameter class.
Optimizer parameter container class.
GOptimizerPar * at(const int &index)
Return pointer to parameter.
std::vector< GOptimizerPar * > m_pars
List of parameters.
void init_members(void)
Initialise class members.
GOptimizerPars & operator=(const GOptimizerPars &pars)
Assignment operator.
virtual ~GOptimizerPars(void)
Destructor.
std::vector< bool > m_alloc
Flags allocation.
void reserve(const int &num)
Reserves space for parameters in container.
GOptimizerPars(void)
Void constructor.
GOptimizerPar * set(const int &index, const GOptimizerPar &par)
Set parameter in container.
GOptimizerPar * append(const GOptimizerPar &par)
Append parameter to container.
void clear(void)
Clear parameter container.
GOptimizerPar * operator[](const int &index)
Return pointer to parameter.
std::string print(const GChatter &chatter=NORMAL) const
Print parameters.
bool contains(const std::string &name) const
Signals if parameter name exists.
int size(void) const
Return number of parameters in container.
int get_index(const std::string &name) const
Return parameter index by name.
GOptimizerPars * clone(void) const
Clone parameter container.
GOptimizerPar * insert(const int &index, const GOptimizerPar &par)
Insert parameter into container.
std::string classname(void) const
Return class name.
void copy_members(const GOptimizerPars &pars)
Copy class members.
int nfree(void) const
Return number of free parameters.
void free_members(void)
Delete class members.
void attach(GOptimizerPar *par)
Attach parameter to container.
bool is_empty(void) const
Signals if there are no parameters in container.
void remove(const int &index)
Remove parameter from container.
void extend(const GOptimizerPars &pars)
Append parameter container.