53 #if !defined(EVOCOSM_FUNCTION_OPTIMIZER_H) 54 #define EVOCOSM_FUNCTION_OPTIMIZER_H 89 typedef vector<double>
t_function(vector<double> a_args);
148 :
organism< vector<double> >(), value(0.0)
153 if (a_maxarg < a_minarg)
155 double temp = a_maxarg;
162 m_extent = a_maxarg - a_minarg;
165 for (
size_t n = 0; n < a_nargs; ++n)
166 genes.push_back(g_random.get_real() * m_extent + a_minarg);
174 :
organism< vector<double> >(a_source), value(0.0)
185 :
organism< vector<double> >(a_source), value(0.0)
196 :
organism< vector<double> >(a_source),
197 value(a_source.value),
198 m_minarg(a_source.m_minarg),
199 m_maxarg(a_source.m_maxarg),
200 m_extent(a_source.m_extent)
223 value = a_source.
value;
224 m_minarg = a_source.m_minarg;
225 m_maxarg = a_source.m_maxarg;
226 m_extent = a_source.m_extent;
238 virtual bool operator < (const organism< vector<double> > & a_right)
const 240 return (fitness > a_right.fitness);
256 : m_mutation_rate(a_mutation_rate)
259 if (m_mutation_rate > 1.0)
260 m_mutation_rate = 1.0;
261 else if (m_mutation_rate < 0.0)
262 m_mutation_rate = 0.0;
271 : m_mutation_rate(a_source.m_mutation_rate)
293 m_mutation_rate = a_source.m_mutation_rate;
304 return m_mutation_rate;
312 void mutate(vector<function_solution> & a_population);
316 double m_mutation_rate;
331 : m_crossover_rate(p_crossover_rate)
334 if (m_crossover_rate > 1.0)
335 m_crossover_rate = 1.0;
336 else if (m_crossover_rate < 0.0)
337 m_crossover_rate = 0.0;
346 : m_crossover_rate(a_source.m_crossover_rate)
368 m_crossover_rate = a_source.m_crossover_rate;
379 return m_crossover_rate;
392 virtual vector<function_solution> breed(
const vector<function_solution> & a_population,
size_t p_limit);
396 double m_crossover_rate;
416 m_function(a_function)
424 m_function(a_source.m_function)
433 m_function = a_source.m_function;
456 vector<double> z = m_function(a_organism.
genes);
457 a_organism.
value = z[0];
503 virtual bool analyze(
const vector<function_solution> & a_population,
521 virtual void ping_generation_begin(
size_t a_iteration);
529 virtual void ping_generation_end(
const vector<function_solution> & a_population,
size_t a_iteration);
542 vector<function_solution> m_population;
554 const size_t m_iterations;
573 double a_mutation_rate,
574 size_t a_iterations);
function_reproducer(const function_reproducer &a_source)
Copy constructor.
Definition: function_optimizer.h:345
static evoreal g_evoreal
Provides mutation and crossover services for doubles.
Definition: function_optimizer.h:92
An abstract interface defining a fitness landscape.
Definition: landscape.h:80
virtual ~function_solution()
Virtual destructor.
Definition: function_optimizer.h:209
function_landscape(t_function *a_function, listener< function_solution > &a_listener)
Creation constructor.
Definition: function_optimizer.h:414
Creates new organisms from an existing population.
Definition: reproducer.h:72
double mutation_rate() const
Gets the mutation rate.
Definition: function_optimizer.h:302
function_solution()
Default contructor.
Definition: function_optimizer.h:133
virtual ~function_reproducer()
Virtual destructor.
Definition: function_optimizer.h:355
A potential solution to the problem at hand.
Definition: function_optimizer.h:105
A toolkit and framework for implementing evolutionary algorithms.
Definition: analyzer.h:60
Associates organisms with the components of an evolutionary system.
Definition: evocosm.h:102
Reports on a given population.
Definition: analyzer.h:70
virtual ~function_mutator()
Virtual destructor.
Definition: function_optimizer.h:280
function_solution(int a_nargs, double a_minarg, double a_maxarg)
Creation constructor.
Definition: function_optimizer.h:147
Implements reproduction.
Definition: function_optimizer.h:323
Global things used by all optimizer classes.
Definition: function_optimizer.h:77
function_reproducer(double p_crossover_rate=1.0)
Creation constructor.
Definition: function_optimizer.h:330
virtual void child_copy(const organism &a_source)
Definition: function_optimizer.h:118
function_analyzer(listener< function_solution > &a_listener, size_t max_iterations)
Constructor.
Definition: function_optimizer.h:484
function_solution(const function_solution &a_source)
Copy constructor.
Definition: function_optimizer.h:195
Genotype genes
Definition: organism.h:97
function_mutator(double a_mutation_rate)
Creation constructor.
Definition: function_optimizer.h:255
A generic function optimizer.
Definition: function_optimizer.h:538
Defines the test for a population of solutions.
Definition: function_optimizer.h:405
function_solution(const organism< vector< double > > &a_source)
Construct from base class.
Definition: function_optimizer.h:184
double fitness
Definition: organism.h:88
An evolving organism.
Definition: organism.h:78
virtual double test(function_solution &a_organism, bool a_verbose=false) const
Performs fitness testing.
Definition: function_optimizer.h:454
double crossover_rate() const
Gets the crossover rate.
Definition: function_optimizer.h:377
double value
Definition: function_optimizer.h:114
A linear normalization scaler.
Definition: scaler.h:126
An listener implementation that ignores all events.
Definition: function_optimizer.h:513
landscape & operator=(const landscape &a_source)
Assignment operator.
Definition: landscape.h:102
function_mutator(const function_mutator &a_source)
Copy constructor.
Definition: function_optimizer.h:270
function_solution(const vector< double > &a_source)
Construct from raw genes.
Definition: function_optimizer.h:173
Mutates solutions.
Definition: function_optimizer.h:248
Tools for evolving real numbers.
Definition: evoreal.h:85
vector< double > t_function(vector< double > a_args)
Definition of a function type.
Definition: function_optimizer.h:89
Implements a elitism selector.
Definition: selector.h:159
Reports the state of a population of solutions.
Definition: function_optimizer.h:472
~function_landscape()
Virtual destructor.
Definition: function_optimizer.h:441
Mutates organisms.
Definition: mutator.h:72
function_landscape(const function_landscape &a_source)
Copy constructor.
Definition: function_optimizer.h:422
An listener implementation that ignores all events.
Definition: listener.h:147