OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IPOPCMAES.h
Go to the documentation of this file.
1 #ifndef OPENANN_OPTIMIZATION_IPOPCMAES_H_
2 #define OPENANN_OPTIMIZATION_IPOPCMAES_H_
3 
4 #include <OpenANN/io/Logger.h>
7 #include <Eigen/Core>
8 
9 template<typename T> class CMAES;
10 template<typename T> class Parameters;
11 
12 namespace OpenANN
13 {
14 
43 class IPOPCMAES : public Optimizer
44 {
45  Logger logger;
46  StoppingCriteria stop;
47  bool maxFunEvalsActive;
48  Optimizable* opt; // do not delete
49  CMAES<double>* cmaes;
50  Parameters<double>* parameters;
51 
52  int currentIndividual;
53  double* initialX;
54  double* initialStdDev;
55  double* const* population;
56  double* fitnessValues;
57  int restarts;
58  int evaluations;
59  int evaluationsAfterRestart;
60  bool stopped;
61 
62  Eigen::VectorXd optimum;
63  double optimumValue;
64 
65  double sigma0;
66 
67 public:
71  IPOPCMAES();
72  virtual ~IPOPCMAES();
73  virtual void setOptimizable(Optimizable& opt);
74  virtual void setStopCriteria(const StoppingCriteria& stop);
79  bool restart();
80  virtual void optimize();
81  virtual bool step();
86  Eigen::VectorXd getNext();
91  void setError(double fitness);
96  bool terminated();
97  virtual Eigen::VectorXd result();
98  virtual std::string name();
103  void setSigma0(double sigma0);
104 };
105 
106 } // namespace OpenANN
107 
108 #endif // OPENANN_OPTIMIZATION_IPOPCMAES_H_