00001 #ifndef GKWGENERATOR_H_
00002 #define GKWGENERATOR_H_
00003
00004 #include "SVClustering.h"
00005 #include "EuclideanDistance.h"
00006
00007 namespace damina
00008 {
00009
00044 class GKWGenerator
00045 {
00046 private:
00047 SVClustering *svc;
00048
00049 EuclideanDistance *eucDist;
00050
00051 double oldRadius;
00052 double newRadius;
00053 double oldKW;
00054 double newKW;
00055 double initialKW;
00056
00057 struct svm_node *x_max_1, *x_max_2;
00058
00059 int runs;
00060
00061 double eps;
00062
00063 double softening;
00064
00065 void forceMonotonicity();
00066 void intersectLines(double, double, double, double, double, double, double, double, double &, double &);
00067 double maxDistance();
00068 double initialKernelWidth();
00069 public:
00070
00071 virtual void setGrowthSoftening(double);
00072 virtual double getGrowthSoftening();
00073 virtual double getNextKernelWidthValue();
00074 virtual void setEuclideanDistance(EuclideanDistance *);
00075 virtual void reset();
00076
00077
00078 GKWGenerator(SVClustering *, double);
00079 GKWGenerator(SVClustering *, double, double);
00080 virtual ~GKWGenerator();
00081 };
00082
00083 }
00084
00085 #endif