10 #include <GAParameter.h>
11 #include <GAPopulation.h>
12 #include <GAStatistics.h>
21 constexpr
auto gaNnGenerations =
"number_of_generations";
22 constexpr
auto gaSNnGenerations =
"ngen";
23 constexpr
auto gaNpConvergence =
"convergence_percentage";
24 constexpr
auto gaSNpConvergence =
"pconv";
25 constexpr
auto gaNnConvergence =
"generations_to_convergence";
26 constexpr
auto gaSNnConvergence =
"nconv";
27 constexpr
auto gaNpCrossover =
"crossover_probability";
28 constexpr
auto gaSNpCrossover =
"pcross";
29 constexpr
auto gaNpMutation =
"mutation_probability";
30 constexpr
auto gaSNpMutation =
"pmut";
31 constexpr
auto gaNpopulationSize =
"population_size";
32 constexpr
auto gaSNpopulationSize =
"popsize";
33 constexpr
auto gaNnPopulations =
"number_of_populations";
34 constexpr
auto gaSNnPopulations =
"npop";
35 constexpr
auto gaNpReplacement =
"replacement_percentage";
36 constexpr
auto gaSNpReplacement =
"prepl";
37 constexpr
auto gaNnReplacement =
"replacement_number";
38 constexpr
auto gaSNnReplacement =
"nrepl";
39 constexpr
auto gaNnBestGenomes =
"number_of_best";
40 constexpr
auto gaSNnBestGenomes =
"nbest";
41 constexpr
auto gaNscoreFrequency =
"score_frequency";
42 constexpr
auto gaSNscoreFrequency =
"sfreq";
43 constexpr
auto gaNflushFrequency =
"flush_frequency";
44 constexpr
auto gaSNflushFrequency =
"ffreq";
45 constexpr
auto gaNscoreFilename =
"score_filename";
46 constexpr
auto gaSNscoreFilename =
"sfile";
47 constexpr
auto gaNselectScores =
"select_scores";
48 constexpr
auto gaSNselectScores =
"sscores";
49 constexpr
auto gaNelitism =
"elitism";
50 constexpr
auto gaSNelitism =
"el";
51 constexpr
auto gaNnOffspring =
"number_of_offspring";
52 constexpr
auto gaSNnOffspring =
"noffspr";
53 constexpr
auto gaNrecordDiversity =
"record_diversity";
54 constexpr
auto gaSNrecordDiversity =
"recdiv";
55 constexpr
auto gaNpMigration =
"migration_percentage";
56 constexpr
auto gaSNpMigration =
"pmig";
57 constexpr
auto gaNnMigration =
"migration_number";
58 constexpr
auto gaSNnMigration =
"nmig";
59 constexpr
auto gaNminimaxi =
"minimaxi";
60 constexpr
auto gaSNminimaxi =
"mm";
61 constexpr
auto gaNseed =
"seed";
62 constexpr
auto gaSNseed =
"seed";
64 extern int gaDefNumGen;
65 extern float gaDefPConv;
66 extern int gaDefNConv;
67 extern float gaDefPMut;
68 extern float gaDefPCross;
69 extern int gaDefPopSize;
71 extern float gaDefPRepl;
72 extern int gaDefNRepl;
73 extern int gaDefNumOff;
74 extern float gaDefPMig;
76 extern int gaDefSelectScores;
77 extern int gaDefMiniMaxi;
78 extern bool gaDefDivFlag;
79 extern bool gaDefElitism;
91 GADefineIdentity(
"GAIncrementalGA", GAID::BaseGA);
140 virtual void evolve(
unsigned int seed = 0)
147 if (stats.flushFrequency() > 0)
152 virtual int write(
const char *)
const {
return 0; }
153 virtual int write(std::ostream &)
const {
return 0; }
154 virtual int read(
const char *) {
return 0; }
155 virtual int read(std::istream &) {
return 0; }
157 void *userData()
const {
return ud; }
158 void *userData(
void *d) {
return ud = d; }
159 Terminator terminator()
const {
return cf; }
160 Terminator terminator(Terminator f) {
return cf = f; }
165 const GAParameterList ¶meters(
const std::string &filename,
bool f =
false);
167 virtual int get(
const char *,
void *)
const;
168 virtual int setptr(
const std::string &name,
const void *);
169 int set(
const std::string &s,
int v) {
return setptr(s, (
void *)&v); }
170 int set(
const std::string &s,
unsigned int v) {
return setptr(s, (
void *)&v); }
171 int set(
const std::string &s,
char v) {
return setptr(s, (
void *)&v); }
172 int set(
const std::string &s,
const char *v) {
return setptr(s, (
void *)v); }
173 int set(
const std::string &s,
const void *v) {
return setptr(s, v); }
174 int set(
const std::string &name,
double v);
176 virtual int minimaxi()
const {
return minmax; }
177 virtual int minimaxi(
int m);
178 int minimize() {
return minimaxi(MINIMIZE); }
179 int maximize() {
return minimaxi(MAXIMIZE); }
180 int nGenerations()
const {
return ngen; }
181 int nGenerations(
unsigned int n)
183 params.set(gaNnGenerations, n);
186 int nConvergence()
const {
return nconv; }
187 int nConvergence(
unsigned int n)
189 params.set(gaNnConvergence, n);
190 return nconv = stats.nConvergence(n);
192 float pConvergence()
const {
return pconv; }
193 float pConvergence(
float p)
195 params.set(gaNpConvergence, p);
198 float pCrossover()
const {
return pcross; }
199 float pCrossover(
float p)
201 params.set(gaNpCrossover, p);
204 float pMutation()
const {
return pmut; }
205 float pMutation(
float p)
207 params.set(gaNpMutation, p);
211 GAGenome::SexualCrossover crossover(GAGenome::SexualCrossover f)
215 GAGenome::SexualCrossover sexual()
const {
return scross; }
216 GAGenome::AsexualCrossover crossover(GAGenome::AsexualCrossover f)
220 GAGenome::AsexualCrossover asexual()
const {
return across; }
222 const GAStatistics &statistics()
const {
return stats; }
223 float convergence()
const {
return stats.convergence(); }
224 int generation()
const {
return stats.generation(); }
227 if (stats.flushFrequency() > 0)
233 int scoreFrequency()
const {
return stats.scoreFrequency(); }
234 int scoreFrequency(
unsigned int x)
236 params.set(gaNscoreFrequency, x);
237 return stats.scoreFrequency(x);
239 int flushFrequency()
const {
return stats.flushFrequency(); }
240 int flushFrequency(
unsigned int x)
242 params.set(gaNflushFrequency, x);
243 return stats.flushFrequency(x);
245 std::string scoreFilename()
const {
return stats.scoreFilename(); }
246 std::string scoreFilename(
const std::string &fn)
248 params.set(gaNscoreFilename, fn.c_str());
249 return stats.scoreFilename(fn);
251 int selectScores() {
return stats.selectScores(); }
252 int selectScores(
int w)
254 params.set(gaNselectScores, w);
255 return stats.selectScores(w);
257 bool recordDiversity()
const {
return stats.recordDiversity(); }
258 bool recordDiversity(
bool f)
260 params.set(gaNrecordDiversity,
static_cast<int>(f));
261 return stats.recordDiversity(f);
264 virtual const GAPopulation &population()
const {
return *pop; }
266 virtual int populationSize()
const {
return pop->size(); }
267 virtual int populationSize(
unsigned int value);
268 virtual int nBestGenomes()
const {
return stats.nBestGenomes(); }
269 virtual int nBestGenomes(
unsigned int n)
271 params.set(gaNnBestGenomes, n);
272 return stats.nBestGenomes(pop->individual(0), n);
278 return pop->scaling(s);
283 return pop->selector(s);
285 virtual void objectiveFunction(GAGenome::Evaluator f);
286 virtual void objectiveData(
const GAEvalData &v);
This is the basic interface for the object that contains evaluation data.
Definition: GAEvalData.h:15
The base GA class is virtual - it defines the core data elements and parts of the interface that are ...
Definition: GABaseGA.h:89
virtual void initialize(unsigned int seed=0)=0
Undefined for the base class.
GAGenome::AsexualCrossover across
asexual crossover to use
Definition: GABaseGA.h:311
GAGenome::SexualCrossover scross
sexual crossover to use
Definition: GABaseGA.h:308
virtual void step()=0
Evolve by one generation.
void * ud
pointer to user data structure
Definition: GABaseGA.h:297
Terminator cf
function for determining done-ness
Definition: GABaseGA.h:294
bool done()
Calls the completion measure routine to tell whether or not the GA is done.
Definition: GABaseGA.h:117
virtual void evolve(unsigned int seed=0)
This method is provided as a convenience so that you don't have to increment the GA generation-by-gen...
Definition: GABaseGA.h:140
The base genome class just defines the genome interface - how to mutate, crossover,...
Definition: GAGenome.h:200
This defines the identifiers for polymorphic classes.
Definition: gaid.h:20
Parameter List.
Definition: GAParameter.h:83
Definition: GAPopulation.h:66
Definition: GAScaling.h:46
Definition: GASelector.h:55
Statistics class.
Definition: GAStatistics.h:30