(C++)  1.1.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
EvoScript.hh
1 #ifndef GRAIL_EVO_SCRIPT_H
2 #define GRAIL_EVO_SCRIPT_H
3 
4 #include "EvoParam.hh"
5 #include <memory>
6 #include <vector>
7 
8 namespace grail
9 {
10  namespace evolution
11  {
12  class EvoScript
13  {
14  private:
15  float fitness = -1.0f;
16 
17  protected:
18  std::vector<std::reference_wrapper<IEvoParam>> evoParams{};
19 
20  public:
21  virtual ~EvoScript();
22  void SetFitness(float _fitness);
23  float GetFitness() const;
24 
26  std::unique_ptr<EvoScript> SystemClone() const;
27 
30  virtual std::unique_ptr<EvoScript> UserClone() const = 0;
31 
33  void Randomize(std::mt19937_64& randomGenerator);
34 
35  std::vector<std::unique_ptr<EvoScript>> GetRandomRealizations(std::mt19937_64& randomGenerator, size_t count) const;
36  std::vector<std::reference_wrapper<IEvoParam>>& GetEvoParams();
37  size_t EvoParamsCount() const;
38 
39  const IEvoParam& GetEvoParamAt(size_t index) const;
40  void ExchangeParams(EvoScript& other, size_t inclusiveFrom, size_t exclusiveTo);
41 
42  float CalculateSimilarity(const EvoScript& other) const;
43  void CopyEvoParamValuesFrom(const EvoScript& other);
44 
45  virtual std::string ToString() const;
46  protected:
47  void RegisterParam(IEvoParam& parameter);
48  void RegisterParamsFromOther(const EvoScript& other);
49  };
50 
51  bool EvoScriptComparator(const std::unique_ptr<EvoScript>& first, const std::unique_ptr<EvoScript>& second);
52  }
53 }
54 #endif // GRAIL_EVO_SCRIPT_H
Definition: EvoScript.hh:13
void Randomize(std::mt19937_64 &randomGenerator)
Definition: EvoScript.cpp:29
virtual std::unique_ptr< EvoScript > UserClone() const =0
std::unique_ptr< EvoScript > SystemClone() const
Definition: EvoScript.cpp:22
Definition: IEvoParam.hh:12