openModeller  Version 1.5.0
rules_base.hh
Go to the documentation of this file.
1 
36 #ifndef _RULES_BASE_HH_
37 #define _RULES_BASE_HH_
38 
39 #include <openmodeller/om.hh>
40 #include <openmodeller/Sample.hh>
41 
43 {
45  PerfUtil = 0,
46 
48  PerfPrStr = 1,
49 
52 
55 
58 
61 
64 
66  PerfCov = 7,
67 
69  PerfSig = 8,
70 
72  PerfErr = 9
73 
86 };
87 
88 
90 {
96 };
97 
98 
100 {
107 };
108 
109 bool equalEps(double v1, double v2);
110 bool between(double value, double min, double max);
111 int membership(double value1, double value2, double value);
112 
113 
114 /****************************************************************/
115 /****************** GarpRule class hierarchy ********************/
116 
123 class GarpRule
124 {
125 public:
127  GarpRule();
128 
130  GarpRule(const int numGenes);
131 
133  GarpRule(Scalar prediction, int numGenes,
134  const Sample& chrom1, const Sample& chrom2,
135  const double * performances);
136 
138  virtual ~GarpRule();
139 
140 
144  virtual GarpRule * clone() const;
145 
146  virtual GarpRule * objFactory() const = 0;
147 
148  virtual int copy(const GarpRule * fromRule);
149 
150  int numGenes() const { return _numGenes; }
151 
152  virtual char type() const { return 'v'; }
153  bool needsEvaluation() const { return _needsEvaluation; }
154  void forceEvaluation() { _needsEvaluation = true; }
155  void evaluated() { _needsEvaluation = false; }
156  void setPrediction(double pred) { _prediction = pred; }
157 
158  Scalar getPrediction() const { return _prediction; }
159  const Sample& getChrom1() const { return _chrom1; };
160  const Sample& getChrom2() const { return _chrom2; };
161  const double * getPerformanceArray() const { return static_cast<const double *>(_performance); }
162  double getPerformance(PerfIndex perfIndex) const;
163 
164  virtual int getStrength(const Sample& sample) const = 0;
165  virtual int getCertainty(const Scalar pred) const;
166  virtual double getError(const Scalar predefinedValue, const Scalar prediction) const;
167 
168  virtual bool similar(const GarpRule * compareToRule) const;
169  virtual void mutate(double temperature);
170  virtual void crossover(GarpRule * rule, int xpt1, int xpt2);
171 
172  void adjustRange(Scalar& v1, Scalar& v2) const;
173  virtual bool applies(const Sample& sample) const = 0;
174  double evaluate(const OccurrencesPtr& occs);
175 
176  virtual void log();
177 
178 protected:
183 
186 
188  double _performance[10];
190  char _origin;
191 };
192 
193 // ====================================================================
194 
195 #endif
virtual void crossover(GarpRule *rule, int xpt1, int xpt2)
Definition: rules_base.cpp:212
PerfIndex
Definition: rules_base.hh:42
RuleType
Definition: rules_base.hh:99
double _performance[10]
Vector for storing the performance values for the rule.
Definition: rules_base.hh:188
virtual void log()
Definition: rules_base.cpp:469
double Scalar
Type of map values.
Definition: om_defs.hh:39
bool _needsEvaluation
Definition: rules_base.hh:189
Scalar _prediction
Definition: rules_base.hh:182
bool equalEps(double v1, double v2)
Definition: rules_base.cpp:62
bool needsEvaluation() const
Definition: rules_base.hh:153
int numGenes() const
Definition: rules_base.hh:150
Sample _chrom1
BYTE vector containing the genes (representation of the variables in a Genetic Algorithm.
Definition: rules_base.hh:180
char _origin
Definition: rules_base.hh:190
void forceEvaluation()
Definition: rules_base.hh:154
double evaluate(const OccurrencesPtr &occs)
Definition: rules_base.cpp:297
void setPrediction(double pred)
Definition: rules_base.hh:156
const Sample & getChrom1() const
Definition: rules_base.hh:159
void adjustRange(Scalar &v1, Scalar &v2) const
Definition: rules_base.cpp:195
bool between(double value, double min, double max)
Definition: rules_base.cpp:67
GarpRule()
Definition: Rule.cpp:492
virtual GarpRule * objFactory() const =0
int _numGenes
Number of genes stored by the rule.
Definition: rules_base.hh:185
virtual GarpRule * clone() const
Definition: rules_base.cpp:134
virtual int copy(const GarpRule *fromRule)
Definition: rules_base.cpp:157
virtual bool applies(const Sample &sample) const =0
Sample _chrom2
Definition: rules_base.hh:181
virtual ~GarpRule()
Definition: Rule.cpp:495
virtual void mutate(double temperature)
Definition: rules_base.cpp:250
Scalar getPrediction() const
Definition: rules_base.hh:158
virtual int getStrength(const Sample &sample) const =0
virtual char type() const
Definition: rules_base.hh:152
Definition: Rule.h:116
virtual int getCertainty(const Scalar pred) const
Definition: rules_base.cpp:183
const double * getPerformanceArray() const
Definition: rules_base.hh:161
RuleOrigin
Definition: rules_base.hh:89
double getPerformance(PerfIndex perfIndex) const
Definition: rules_base.cpp:177
void evaluated()
Definition: rules_base.hh:155
virtual double getError(const Scalar predefinedValue, const Scalar prediction) const
Definition: rules_base.cpp:189
const Sample & getChrom2() const
Definition: rules_base.hh:160
int membership(double value1, double value2, double value)
Definition: rules_base.cpp:73
virtual bool similar(const GarpRule *compareToRule) const
Definition: rules_base.cpp:271
int min(int v1, int v2)
Definition: rules_base.cpp:56
Definition: Sample.hh:25