openModeller  Version 1.5.0
garp.hh
Go to the documentation of this file.
1 
35 #ifndef _GARP_HH_
36 #define _GARP_HH_
37 
38 #include <openmodeller/om.hh>
39 #include <openmodeller/Sample.hh>
40 
41 // required include because of enum PerfIndex and class GarpRule
42 #include "rules_base.hh"
43 #include "bioclim_histogram.hh"
44 #include "regression.hh"
45 
46 
47 class GarpRuleSet;
48 
49 class Random;
50 
51 /****************************************************************/
52 /************************* GARP Algorithm ***********************/
53 
57 class Garp : public AlgorithmImpl
58 {
59 public:
60  Garp();
61  virtual ~Garp();
62 
67  int initialize();
68 
78  int iterate();
79 
84  int done() const;
85 
87  float getProgress() const;
88 
89  //
90  // Methods used to project the model
91  //
92 
101  Scalar getValue( const Sample& x ) const;
102 
109  int getConvergence( Scalar * const val ) const;
110 
111  int getGeneration() { return _gen; }
112 
117  void deleteTempDataMembers();
118 
119 protected:
120  virtual void _getConfiguration( ConfigurationPtr& ) const;
121  virtual void _setConfiguration( const ConstConfigurationPtr & );
122 
123 private:
124 
125  void cacheSamples(const SamplerPtr&, OccurrencesPtr&, int resamples);
126 
131  void colonize(GarpRuleSet * ruleset, int numRules);
132 
137  void evaluate(GarpRuleSet * ruleset);
138 
153  void keepFittest(GarpRuleSet * source, GarpRuleSet * target, PerfIndex perfIndex);
154 
155 
163  void select(GarpRuleSet * source, GarpRuleSet * target, double gapsize);
164 
165 
169  void mutate(GarpRuleSet * ruleset);
170 
171 
175  void crossover(GarpRuleSet * ruleset);
176 
177  //
178  // Algorithm parameters
179  //
180 
182  int _max_gen;
183 
185  int _popsize;
186 
189 
191  double _acc_limit;
192 
194  double _conv_limit;
195 
197  double _mortality;
198 
200  double _significance;
203  double _gapsize;
204 
205  //
206  // Internal variables
207  //
208 
211 
214 
217 
219 
221 
222  double _convergence;
224 
227 
228  int _gen;
229 
230  mutable float _maxProgress;
231 };
232 
233 
234 #endif
235 
GarpRuleSet * _fittest
Definition: garp.hh:210
PerfIndex
Definition: rules_base.hh:42
virtual void _setConfiguration(const ConstConfigurationPtr &)
Definition: garp.cpp:489
void evaluate(GarpRuleSet *ruleset)
Definition: garp.cpp:640
double _convergence
Definition: garp.hh:222
void crossover(GarpRuleSet *ruleset)
Definition: garp.cpp:793
virtual void _getConfiguration(ConfigurationPtr &) const
Definition: garp.cpp:444
OccurrencesPtr _cachedOccs
Definition: garp.hh:220
void keepFittest(GarpRuleSet *source, GarpRuleSet *target, PerfIndex perfIndex)
Definition: garp.cpp:579
double Scalar
Type of map values.
Definition: om_defs.hh:39
void cacheSamples(const SamplerPtr &, OccurrencesPtr &, int resamples)
Definition: garp.cpp:331
int _resamples
Definition: garp.hh:188
double _conv_limit
Definition: garp.hh:194
int _popsize
Definition: garp.hh:185
float _maxProgress
Definition: garp.hh:230
Garp()
Definition: garp.cpp:231
int iterate()
Definition: garp.cpp:351
GarpRuleSet * _offspring
Definition: garp.hh:213
BioclimHistogram _bioclimHistogram
Definition: garp.hh:216
Definition: Random.hh:44
int _curr_heur_count[5]
Definition: garp.hh:225
int _gen
Definition: garp.hh:228
int _improvements
Definition: garp.hh:223
Definition: garp.hh:57
double _acc_limit
Definition: garp.hh:191
double _significance
Definition: garp.hh:200
Scalar getValue(const Sample &x) const
Definition: garp.cpp:427
double _gapsize
Definition: garp.hh:203
int initialize()
Definition: garp.cpp:290
float getProgress() const
Definition: garp.cpp:401
int getGeneration()
Definition: garp.hh:111
double _crossover_rate
Definition: garp.hh:201
Regression _regression
Definition: garp.hh:218
void deleteTempDataMembers()
Definition: garp.cpp:818
int getConvergence(Scalar *const val) const
Definition: garp.cpp:435
virtual ~Garp()
Definition: garp.cpp:270
double _mutation_rate
Definition: garp.hh:202
void mutate(GarpRuleSet *ruleset)
Definition: garp.cpp:780
int _prev_heur_count[5]
Definition: garp.hh:226
void colonize(GarpRuleSet *ruleset, int numRules)
Definition: garp.cpp:656
int done() const
Definition: garp.cpp:419
void select(GarpRuleSet *source, GarpRuleSet *target, double gapsize)
Definition: garp.cpp:699
double _mortality
Definition: garp.hh:197
int _max_gen
Definition: garp.hh:182
Definition: Sample.hh:25