Tron.h
Go to the documentation of this file.00001 #ifndef _CTron_H
00002 #define _CTron_H
00003
00004 #include "lib/config.h"
00005
00006 #ifdef HAVE_LAPACK
00007 #include "base/SGObject.h"
00008
00009 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00010
00011 class function
00012 {
00013 public:
00021 virtual float64_t fun(float64_t *w) = 0 ;
00022
00030 virtual void grad(float64_t *w, float64_t *g) = 0 ;
00031
00039 virtual void Hv(float64_t *s, float64_t *Hs) = 0 ;
00040
00047 virtual int32_t get_nr_variable(void) = 0 ;
00048
00049 virtual ~function(void){}
00050 };
00051 #endif // DOXYGEN_SHOULD_SKIP_THIS
00052
00054 class CTron : public CSGObject
00055 {
00056 public:
00063 CTron(
00064 const function *fun_obj, float64_t eps = 0.1, int32_t max_iter = 1000);
00065 virtual ~CTron();
00066
00071 void tron(float64_t *w);
00072
00074 inline virtual const char* get_name() const { return "LibLinear"; }
00075
00076 private:
00077 int32_t trcg(float64_t delta, double* g, double* s, double* r);
00078 float64_t norm_inf(int32_t n, float64_t *x);
00079
00080 float64_t eps;
00081 int32_t max_iter;
00082 function *fun_obj;
00083 };
00084
00085 #endif
00086 #endif //HAVE_LAPACK