36 #ifndef _FITNESSFUNCTIONIMPLEMENTATION_HPP_
37 #define _FITNESSFUNCTIONIMPLEMENTATION_HPP_
40 #include "QuantitativeTrait.hpp"
41 #include "PopulationData.hpp"
42 #include "shared_ptr.hpp"
73 virtual void calculate_trait_values(
const PopulationData& population_data)
const
75 (*population_data.trait_values)[object_id()] =
76 DataVectorPtr(
new DataVector(population_data.population_size, 1));
81 virtual std::string class_name()
const {
return "FitnessFunction_Trivial";}
82 virtual Parameters parameters()
const {
return Parameters();}
83 virtual void configure(
const Parameters& parameters,
const Registry& registry) {}
123 double optimum = 0,
double radius = 0,
double power = 0);
125 virtual void calculate_trait_values(
const PopulationData& population_data)
const;
129 virtual std::string class_name()
const {
return "FitnessFunction_Optimum";}
130 virtual Parameters parameters()
const;
131 virtual void configure(
const Parameters& parameters,
const Registry& registry);
139 double gaussian_width_;
171 void calculate_trait_values_with_threshold(
const PopulationData& population_data,
double threshold)
const;
173 virtual void calculate_trait_values(
const PopulationDataPtrs& population_datas)
const;
177 virtual std::string class_name()
const {
return "FitnessFunction_TruncationSelection";}
178 virtual Parameters parameters()
const;
179 virtual void configure(
const Parameters& parameters,
const Registry& registry);
184 double proportion_selected_;
186 bool single_threshold_;
187 size_t single_threshold_population_index_;
190 double calculate_threshold(
const PopulationData& population_data)
const;
194 #endif // _FITNESSFUNCTIONIMPLEMENTATION_HPP_