BALL  1.5.0
genes.h
Go to the documentation of this file.
1 // ----------------------------------------------------
2 // $Maintainer: Marcel Schumann $
3 // $Authors: Jan Fuhrmann, Marcel Schumann $
4 // ----------------------------------------------------
5 
6 #ifndef BALL_DOCKING_GENETICDOCK_GENES_H
7 #define BALL_DOCKING_GENETICDOCK_GENES_H
8 
10 
11 #include <vector>
12 #include <random>
13 
14 namespace BALL
15 {
19  {
20  public:
21 
25 
28  virtual ~GenericGene(){};
29 
32  virtual GenericGene* mate(GenericGene* gg) = 0;
33 
36  virtual void mutate() = 0;
37 
40  virtual GenericGene* clone() = 0;
41 
44  virtual void randomize() = 0;
45 
46  protected:
47  double randomGeneValue();
48  int randomGenePosition(int from, int to);
49 
50  private:
51  std::mt19937 rng_;
52  std::uniform_real_distribution<double> dist_;
53  };
54 
58  {
59  public:
60 
64 
67  virtual ~DoubleGene();
68 
72 
75  virtual GenericGene *mate(GenericGene * gg);
76 
79  virtual void mutate();
80 
83  std::vector<double> getValues();
84 
87  void setValue(std::vector<double> v);
88 
91  virtual GenericGene *clone();
92 
95  void randomize();
96 
97  private:
98 
101  std::vector<double> values_;
102  };
103 
104 
108  {
109  public:
110 
114 
117  virtual ~QuaternionGene();
118 
121  virtual GenericGene *mate(GenericGene *gg);
122 
125  virtual void mutate();
126 
130 
133  virtual GenericGene *clone();
134 
137  void randomize();
138 
139  private:
140 
143  Quaternion quat_;
144  };
145 }
146 
147 #endif /* BALL_DOCKING_GENETICDOCK_GENES_H */
BALL::QuaternionGene::QuaternionGene
QuaternionGene()
BALL_EXPORT
#define BALL_EXPORT
Definition: COMMON/global.h:50
BALL::GenericGene::mutate
virtual void mutate()=0
BALL::QuaternionGene::mutate
virtual void mutate()
BALL::QuaternionGene
Definition: genes.h:108
BALL::GenericGene::randomGeneValue
double randomGeneValue()
BALL::DoubleGene::DoubleGene
DoubleGene()
BALL::DoubleGene::setValue
void setValue(std::vector< double > v)
BALL::DoubleGene
Definition: genes.h:58
BALL::DoubleGene::mutate
virtual void mutate()
BALL
Definition: constants.h:13
quaternion.h
BALL::DoubleGene::mate
virtual GenericGene * mate(GenericGene *gg)
BALL_SIZE_TYPE
BALL::GenericGene::GenericGene
GenericGene()
BALL::GenericGene::randomize
virtual void randomize()=0
BALL::DoubleGene::~DoubleGene
virtual ~DoubleGene()
BALL::TQuaternion< float >
BALL::GenericGene::~GenericGene
virtual ~GenericGene()
Definition: genes.h:28
BALL::GenericGene::clone
virtual GenericGene * clone()=0
BALL::DoubleGene::clone
virtual GenericGene * clone()
BALL::GenericGene::randomGenePosition
int randomGenePosition(int from, int to)
BALL::DoubleGene::DoubleGene
DoubleGene(Size i)
BALL::GenericGene
Definition: genes.h:19
BALL::DoubleGene::getValues
std::vector< double > getValues()
BALL::QuaternionGene::clone
virtual GenericGene * clone()
BALL::DoubleGene::randomize
void randomize()
BALL_DEPRECATED
#define BALL_DEPRECATED
Definition: COMMON/global.h:64
BALL::GenericGene::mate
virtual GenericGene * mate(GenericGene *gg)=0
BALL::QuaternionGene::~QuaternionGene
virtual ~QuaternionGene()
BALL::QuaternionGene::mate
virtual GenericGene * mate(GenericGene *gg)
BALL::QuaternionGene::getValue
Quaternion getValue()
BALL::QuaternionGene::randomize
void randomize()