36 #ifndef _FITNESSFUNCTIONIMPLEMENTATION_HPP_
37 #define _FITNESSFUNCTIONIMPLEMENTATION_HPP_
40 #include "FitnessFunction.hpp"
41 #include "QuantitativeTrait.hpp"
42 #include "shared_ptr.hpp"
73 virtual DataVectorPtr calculate_fitnesses(
const TraitValueMap& trait_values,
74 size_t generation_index,
75 size_t population_index)
const
77 return DataVectorPtr();
82 virtual std::string class_name()
const {
return "FitnessFunction_Trivial";}
83 virtual Parameters parameters()
const {
return Parameters();}
84 virtual void configure(
const Parameters& parameters,
const Registry& registry) {}
109 : FitnessFunction(
id), qtid_(quantitative_trait_id)
112 virtual DataVectorPtr calculate_fitnesses(
const TraitValueMap& trait_values,
113 size_t generation_index,
114 size_t population_index)
const
116 if (!trait_values.count(qtid_))
117 throw std::runtime_error(
"[FitnessFunction_Identity] Quantitative trait id not found.");
118 return trait_values.at(qtid_);
123 virtual std::string class_name()
const {
return "FitnessFunction_Identity";}
124 virtual Parameters parameters()
const;
125 virtual void configure(
const Parameters& parameters,
const Registry& registry);
155 const FitnessFunctionPtrs& ffs = FitnessFunctionPtrs());
157 virtual DataVectorPtr calculate_fitnesses(
const TraitValueMap& trait_values,
158 size_t generation_index,
159 size_t population_index)
const;
163 virtual std::string class_name()
const {
return "FitnessFunction_PopulationComposite";}
164 virtual Parameters parameters()
const;
165 virtual void configure(
const Parameters& parameters,
const Registry& registry);
167 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
171 FitnessFunctionPtrs ffs_;
194 typedef std::map<size_t, FitnessFunctionPtr> GenerationFFMap;
197 const GenerationFFMap& ffs = GenerationFFMap());
199 virtual DataVectorPtr calculate_fitnesses(
const TraitValueMap& trait_values,
200 size_t generation_index,
201 size_t population_index)
const;
205 virtual std::string class_name()
const {
return "FitnessFunction_GenerationComposite";}
206 virtual Parameters parameters()
const;
207 virtual void configure(
const Parameters& parameters,
const Registry& registry);
208 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
212 GenerationFFMap ffs_;
252 double optimum = 0,
double radius = 0,
double power = 0);
254 virtual DataVectorPtr calculate_fitnesses(
const TraitValueMap& trait_values,
255 size_t generation_index,
256 size_t population_index)
const;
259 virtual std::string class_name()
const {
return "FitnessFunction_Optimum";}
260 virtual Parameters parameters()
const;
261 virtual void configure(
const Parameters& parameters,
const Registry& registry);
269 double gaussian_width_;
297 const std::string& quantitative_trait_id =
"",
298 double proportion_selected = 0);
300 virtual DataVectorPtr calculate_fitnesses(
const TraitValueMap& trait_values,
301 size_t generation_index,
302 size_t population_index)
const;
305 virtual std::string class_name()
const {
return "FitnessFunction_TruncationSelection";}
306 virtual Parameters parameters()
const;
307 virtual void configure(
const Parameters& parameters,
const Registry& registry);
312 double proportion_selected_;
316 #endif // _FITNESSFUNCTIONIMPLEMENTATION_HPP_