36 #ifndef _TRAJECTORY_HPP_
37 #define _TRAJECTORY_HPP_
40 #include "Configurable.hpp"
41 #include "shared_ptr.hpp"
64 virtual double value(
size_t generation_index,
size_t population_index)
const = 0;
68 virtual std::string class_name()
const;
69 virtual Parameters parameters()
const;
70 virtual void configure(
const Parameters& parameters,
const Registry& registry);
78 typedef shared_ptr<Trajectory> TrajectoryPtr;
79 typedef std::vector<TrajectoryPtr> TrajectoryPtrs;
104 const TrajectoryPtrs& trajectories = TrajectoryPtrs());
106 virtual double value(
size_t generation_index,
size_t population_index)
const;
110 virtual std::string class_name()
const {
return "Trajectory_PopulationComposite";}
111 virtual Parameters parameters()
const;
112 virtual void configure(
const Parameters& parameters,
const Registry& registry);
114 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
118 TrajectoryPtrs trajectories_;
143 typedef std::map<size_t, TrajectoryPtr> GenerationTrajectoryMap;
146 const GenerationTrajectoryMap& trajectories = GenerationTrajectoryMap());
148 virtual double value(
size_t generation_index,
size_t population_index)
const;
152 virtual std::string class_name()
const {
return "Trajectory_GenerationComposite";}
153 virtual Parameters parameters()
const;
154 virtual void configure(
const Parameters& parameters,
const Registry& registry);
155 virtual void write_child_configurations(std::ostream& os, std::set<std::string>& ids_written)
const;
159 GenerationTrajectoryMap trajectories_;
188 virtual double value(
size_t generation_index,
size_t population_index)
const {
return value_;}
192 virtual std::string class_name()
const {
return "Trajectory_Constant";}
193 virtual Parameters parameters()
const;
194 virtual void configure(
const Parameters& parameters,
const Registry& registry);
232 Trajectory_Linear(
const std::string&
id,
double slope = 0.,
double intercept = 0.)
233 :
Trajectory(
id), slope_(slope), intercept_(intercept),
234 generation_index_begin_(-1ul), generation_index_end_(-1ul),
235 value_begin_(0), value_end_(0)
238 virtual double value(
size_t generation_index,
size_t population_index)
const
240 return slope_ * generation_index + intercept_;
245 virtual std::string class_name()
const {
return "Trajectory_Linear";}
246 virtual Parameters parameters()
const;
247 virtual void configure(
const Parameters& parameters,
const Registry& registry);
254 size_t generation_index_begin_;
255 size_t generation_index_end_;
287 size_t generation_index_begin = 0,
288 double value_begin = 0.,
291 generation_index_begin_(generation_index_begin),
292 value_begin_(value_begin),
296 virtual double value(
size_t generation_index,
size_t population_index)
const;
300 virtual std::string class_name()
const {
return "Trajectory_Exponential";}
301 virtual Parameters parameters()
const;
302 virtual void configure(
const Parameters& parameters,
const Registry& registry);
306 size_t generation_index_begin_;
312 #endif // _TRAJECTORY_HPP_