(C++)  1.1.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
IEvoParam.hh
1 #ifndef GRAIL_IEVO_PARAM_H
2 #define GRAIL_IEVO_PARAM_H
3 
4 #include <random>
5 #include <string>
6 
7 namespace grail
8 {
9  namespace evolution
10  {
11  class IEvoParam
12  {
13  protected:
14  const size_t domainLength = { 0 };
16  size_t positionIndex;
17 
18  IEvoParam(size_t domainLength);
19 
20  public:
21  //Helper methods for implementing mutations and crossover
22 
24  void Randomize(std::mt19937_64& rand_gen);
25 
27  const IEvoParam* SetNext();
28 
30  const IEvoParam* SetPrev();
31 
33  const IEvoParam* SetNextClamped();
34 
36  const IEvoParam* SetPrevClamped();
37 
39  float GetNormalizedPositionWeight() const;
40 
42  size_t GetPositionIndex() const;
43 
45  void SetPositionIndex(size_t position);
46 
47  virtual std::string ToString() const;
48  };
49  }
50 }
51 #endif //GRAIL_IEVO_PARAM_H
Definition: IEvoParam.hh:12
const IEvoParam * SetNextClamped()
Definition: IEvoParam.cpp:28
size_t positionIndex
Definition: IEvoParam.hh:16
void Randomize(std::mt19937_64 &rand_gen)
Definition: IEvoParam.cpp:7
const IEvoParam * SetPrevClamped()
Definition: IEvoParam.cpp:34
float GetNormalizedPositionWeight() const
Definition: IEvoParam.cpp:43
void SetPositionIndex(size_t position)
Definition: IEvoParam.cpp:53
const IEvoParam * SetNext()
Definition: IEvoParam.cpp:12
const IEvoParam * SetPrev()
Definition: IEvoParam.cpp:20
size_t GetPositionIndex() const
Definition: IEvoParam.cpp:48