53 #if !defined(LIBEVOCOSM_SCALER_H)
54 #define LIBEVOCOSM_SCALER_H
71 template <
class OrganismType>
95 virtual void scale_fitness(vector<OrganismType> & a_population) = 0;
104 template <
class OrganismType>
125 template <
class OrganismType>
134 : m_fitness_multiple(a_fitness_multiple)
154 if (stats.
getMin() > ((m_fitness_multiple * stats.
getMean() - stats.
getMax()) / (m_fitness_multiple - 1.0)))
158 slope = (m_fitness_multiple - 1.0) * stats.
getMean() / delta;
165 slope = stats.
getMean() / delta;
170 for (
int n = 0; n < a_population.size(); ++n)
171 a_population[n].fitness = slope * a_population[n].fitness + intercept;
175 double m_fitness_multiple;
184 template <
class OrganismType>
207 for (
int n = 0; n < a_population.size(); ++n)
208 a_population[n].fitness = stats.
getMin();
218 template <
class OrganismType>
246 for (
int n = 0; n < a_population.size(); ++n)
247 a_population[n].fitness = pow((m_a * a_population[n].fitness + m_b),m_power);
261 template <
class OrganismType>
270 : m_a(a_a), m_b(a_b), m_c(a_c)
283 for (
int n = 0; n < a_population.size(); ++n)
285 double f = a_population[n].fitness;
286 a_population[n].fitness = m_a * pow(f,2.0) + m_b * f + m_c;
301 template <
class OrganismType>
326 double sigma2 = 2.0 * stats.
getSigma();
331 for (
int n = 0; n < a_population.size(); ++n)
332 a_population[n].fitness = 1.0;
336 for (
int n = 0; n < a_population.size(); ++n)
339 a_population[n].fitness = (1.0 + a_population[n].fitness / stats.mean) / sigma2;
342 if (a_population[n].fitness < 0.1)
343 a_population[n].fitness = 0.1;
virtual void scale_fitness(vector< OrganismType > &a_population)=0
Scale a population's fitness values.
double getMin()
Get the minimum fitness value for analyzed population.
Definition: stats.h:162
virtual void scale_fitness(vector< OrganismType > &a_population)
Scaling function.
Definition: scaler.h:280
virtual void scale_fitness(vector< OrganismType > &a_population)
Scaling function.
Definition: scaler.h:243
A quadratic scaler.
Definition: scaler.h:262
virtual ~scaler()
Virtual destructor.
Definition: scaler.h:83
A sigma scaler.
Definition: scaler.h:302
virtual void scale_fitness(vector< OrganismType > &a_population)
Scaling function.
Definition: scaler.h:202
windowed_scaler()
Constructor.
Definition: scaler.h:192
double getMean()
Get the mean (average) fitness value for analyzed population.
Definition: stats.h:168
A windowed fitness scaler.
Definition: scaler.h:185
An exponential fitness scaler.
Definition: scaler.h:219
virtual void scale_fitness(vector< OrganismType > &a_population)
Do-nothing scaling function.
Definition: scaler.h:113
A toolkit and framework for implementing evolutionary algorithms.
Definition: analyzer.h:60
virtual void scale_fitness(vector< OrganismType > &a_population)
Scaling function.
Definition: scaler.h:144
Elements shared by all classes in Evocosm.
Definition: evocommon.h:117
virtual void scale_fitness(vector< OrganismType > &a_population)
Scaling function.
Definition: scaler.h:321
linear_norm_scaler(double a_fitness_multiple=2.0)
Constructor.
Definition: scaler.h:133
A do-nothing scaler.
Definition: scaler.h:105
double getSigma()
Get the standard deviation (sigma) value for fitness.
Definition: stats.h:174
exponential_scaler(double a_a=1.0, double a_b=1.0, double a_power=2.0)
Constructor.
Definition: scaler.h:230
quadratic_scaler(double a_a, double a_b, double a_c)
Constructor.
Definition: scaler.h:269
Fitness scaling for a population.
Definition: scaler.h:72
double getMax()
Get the maximum fitness value for analyzed population.
Definition: stats.h:165
A linear normalization scaler.
Definition: scaler.h:126
sigma_scaler()
Constructor.
Definition: scaler.h:309
Population fitness statistics.
Definition: stats.h:74