aGrUM  0.16.0
IApproximationSchemeConfiguration.h
Go to the documentation of this file.
1 
32 #ifndef GUM_APPROXIMATION_SCHEME_CONFIGURATION_H
33 #define GUM_APPROXIMATION_SCHEME_CONFIGURATION_H
34 
35 #include <agrum/agrum.h>
36 #include <agrum/core/math/math.h>
38 #include <agrum/core/timer.h>
39 
40 namespace gum {
41 
57  public:
59  Signaler3< Size, double, double > onProgress;
60 
62  Signaler1< std::string > onStop;
63 
65  enum class ApproximationSchemeSTATE : char {
66  Undefined,
67  Continue,
68  Epsilon,
69  Rate,
70  Limit,
71  TimeLimit,
72  Stopped
73  };
74 
75  // ======================================================================
77  // ======================================================================
79 
83 
89 
90  // ======================================================================
92  // ======================================================================
94 
99  std::string messageApproximationScheme() const;
100 
110  virtual void setEpsilon(double eps) = 0;
111 
116  virtual double epsilon() const = 0;
117 
121  virtual void disableEpsilon() = 0;
122 
126  virtual void enableEpsilon() = 0;
127 
134  virtual bool isEnabledEpsilon() const = 0;
135 
145  virtual void setMinEpsilonRate(double rate) = 0;
146 
151  virtual double minEpsilonRate() const = 0;
152 
156  virtual void disableMinEpsilonRate() = 0;
157 
161  virtual void enableMinEpsilonRate() = 0;
162 
169  virtual bool isEnabledMinEpsilonRate() const = 0;
170 
179  virtual void setMaxIter(Size max) = 0;
180 
185  virtual Size maxIter() const = 0;
186 
190  virtual void disableMaxIter() = 0;
191 
195  virtual void enableMaxIter() = 0;
196 
203  virtual bool isEnabledMaxIter() const = 0;
204 
213  virtual void setMaxTime(double timeout) = 0;
214 
219  virtual double maxTime() const = 0;
220 
225  virtual double currentTime() const = 0;
226 
231  virtual void disableMaxTime() = 0;
232 
236  virtual void enableMaxTime() = 0;
237 
244  virtual bool isEnabledMaxTime() const = 0;
245 
251  virtual void setPeriodSize(Size p) = 0;
252 
257  virtual Size periodSize() const = 0;
258 
263  virtual void setVerbosity(bool v) = 0;
264 
269  virtual bool verbosity() const = 0;
270 
276 
282  virtual Size nbrIterations() const = 0;
283 
290  virtual const std::vector< double >& history() const = 0;
291  };
292 } // namespace gum
293 
294 #ifndef GUM_NO_INLINE
296 #endif
297 
298 #endif // GUM_APPROXIMATION_SCHEME_CONFIGURATION_H
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual double epsilon() const =0
Returns the value of epsilon.
virtual void setMaxTime(double timeout)=0
Stopping criterion on timeout.
virtual bool isEnabledMaxTime() const =0
Returns true if stopping criterion on timeout is enabled, false otherwise.
Signaler3< Size, double, double > onProgress
Progression, error and time.
virtual void disableMaxTime()=0
Disable stopping criterion on timeout.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual void enableEpsilon()=0
Enable stopping criterion on epsilon.
virtual bool isEnabledEpsilon() const =0
Returns true if stopping criterion on epsilon is enabled, false otherwise.
virtual bool isEnabledMinEpsilonRate() const =0
Returns true if stopping criterion on epsilon rate is enabled, false otherwise.
virtual ApproximationSchemeSTATE stateApproximationScheme() const =0
Returns the approximation scheme state.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
virtual Size nbrIterations() const =0
Returns the number of iterations.
virtual Size periodSize() const =0
Returns the period size.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual void disableMinEpsilonRate()=0
Disable stopping criterion on epsilon rate.
virtual const std::vector< double > & history() const =0
Returns the scheme history.
virtual void enableMaxTime()=0
Enable stopping criterion on timeout.
Signaler1< std::string > onStop
Criteria messageApproximationScheme.
virtual double maxTime() const =0
Returns the timeout (in seconds).
virtual void setMaxIter(Size max)=0
Stopping criterion on number of iterations.
virtual void setVerbosity(bool v)=0
Set the verbosity on (true) or off (false).
virtual Size maxIter() const =0
Returns the criterion on number of iterations.
virtual double currentTime() const =0
Returns the current running time in second.
std::string messageApproximationScheme() const
Returns the approximation scheme message.
virtual void setEpsilon(double eps)=0
Given that we approximate f(t), stopping criterion on |f(t+1)-f(t)|.
virtual double minEpsilonRate() const =0
Returns the value of the minimal epsilon rate.
virtual void setMinEpsilonRate(double rate)=0
Given that we approximate f(t), stopping criterion on d/dt(|f(t+1)-f(t)|).
virtual bool isEnabledMaxIter() const =0
Returns true if stopping criterion on max iterations is enabled, false otherwise. ...
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
virtual void disableEpsilon()=0
Disable stopping criterion on epsilon.
ApproximationSchemeSTATE
The different state of an approximation scheme.
virtual void setPeriodSize(Size p)=0
How many samples between two stopping is enable.
virtual void disableMaxIter()=0
Disable stopping criterion on max iterations.
virtual void enableMinEpsilonRate()=0
Enable stopping criterion on epsilon rate.
virtual void enableMaxIter()=0
Enable stopping criterion on max iterations.
virtual bool verbosity() const =0
Returns true if verbosity is enabled.