OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
LBFGS.h
Go to the documentation of this file.
1 #ifndef OPENANN_OPTIMIZATION_LBFGS_H_
2 #define OPENANN_OPTIMIZATION_LBFGS_H_
3 
6 #include <Eigen/Core>
7 #include <optimization.h>
8 
9 namespace OpenANN
10 {
11 
20 class LBFGS : public Optimizer
21 {
22  StoppingCriteria stop;
23  Optimizable* opt; // do not delete
24  Eigen::VectorXd optimum;
25  int iteration, n, m;
26  Eigen::VectorXd parameters, gradient;
27  double error;
28  alglib_impl::ae_state envState;
29  alglib::minlbfgsstate state;
30  alglib::real_1d_array xIn;
31 public:
39  LBFGS(int m = 10);
40  virtual ~LBFGS() {}
41  virtual void setStopCriteria(const StoppingCriteria& stop);
42  virtual void setOptimizable(Optimizable& optimizable);
43  virtual void optimize();
44  virtual bool step();
45  void initialize();
46  void reset();
47  virtual Eigen::VectorXd result();
48  virtual std::string name();
49 };
50 
51 } // namespace OpenANN
52 
53 #endif // OPENANN_OPTIMIZATION_LBFGS_H_