Conscience Core
CscNeuralNetworkGeneticAlgorithmGenerationGenerator.h
Go to the documentation of this file.
1 /*
2  * CscNeuralNetworkGeneticAlgorithmGenerationGenerator.h
3  *
4  * Created on: 5 août 2024
5  * Author: Max Lhermitte
6  */
7 
8 #ifndef CSCNEURALNETWORKGENETICALGORITHMGENERATIONGENERATOR_H_
9 #define CSCNEURALNETWORKGENETICALGORITHMGENERATIONGENERATOR_H_
10 
11 #include "CscNeuralNetwork.h"
14 
17 
18 namespace conscience_core::ai::nn {
19 
29 public:
38  public :
39  NeuralNetworkGeneticAlgorithmGeneration(unsigned populationSizeInit);
41 
42  vector<CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *> *getPopulation() const;
43  void setPopulation(vector<CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *> *newPopulation);
44  const unsigned getPopulationSize() const;
45 
46  void addNewIndivual(CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *newHyperparametersIndividual);
47 
48  private:
49  const unsigned populationSize;
50  vector<CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *> *population = new vector<CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *>({});
51  };
52 
53  // constructor and destructor
54  CscNeuralNetworkGeneticAlgorithmGenerationGenerator(unsigned populationSizeInit, unsigned nbNeuralNetworkInputsInit, unsigned nbNeuralNetworkOutputsInit, unsigned copyPercentOfChanceInit, unsigned crossoverPercentOfChanceInit, unsigned mutationPercentOfChanceInit, CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters *allPossibilitiesHyperparameters);
56 
57  // getters
58  CscNeuralNetworkGeneticAlgorithmIndividualGenerator *getIndividualGenerator() const;
59  NeuralNetworkGeneticAlgorithmGeneration *getPreviousGeneration() const;
60  NeuralNetworkGeneticAlgorithmGeneration *getCurrentGeneration() const;
61  const unsigned getPopulationSize() const;
62  const unsigned getCopyPercentOfChance() const;
63  const unsigned getCrossoverPercentOfChance() const;
64  const unsigned getMutationPercentOfChance() const;
65 
66 
67  // public methods
84  CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *selectParentByTournament(const unsigned nbParticipantsInTournament = DEFAULT_NB_PARTICIPANTS_IN_TOURNAMENT, const float probaForBestInTournament = DEFAULT_PROBA_FOR_BEST_IN_TOURNAMENT);
85 
86  void sortCurrentGenerationByResult();
87 
88  void fillCurrentGenerationRandomly();
89  void fillNewCurrentGeneration(unsigned nthGeneration);
90 
91  void printResultsGenerationCreation();
92 
93 private:
94  // Attributes
95  unique_ptr<CscLogger> logger;
96  CscNeuralNetworkGeneticAlgorithmIndividualGenerator *individualGenerator = nullptr;
99  const unsigned populationSize;
100  const unsigned copyPercentOfChance;
101  const unsigned crossoverPercentOfChance;
102  const unsigned mutationPercentOfChance;
103 
104  // Private methods
105  CscGeneticOperator drawGeneticOperatorByLot(const unsigned copyPercentOfChance, const unsigned crossoverPercentOfChance, const unsigned mutationPercentOfChance);
106  CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *createIndividual(const unsigned individualId, const unsigned generationOfCreation, CscGeneticOperator geneticOperator);
107 
109 };
110 };
111 
112 #endif /* CSCNEURALNETWORKGENETICALGORITHMGENERATIONGENERATOR_H_ */
DEFAULT_PROBA_FOR_BEST_IN_TOURNAMENT
const float DEFAULT_PROBA_FOR_BEST_IN_TOURNAMENT
Definition: CscNeuralNetworkGeneticAlgorithmGenerationGenerator.h:16
DEFAULT_NB_PARTICIPANTS_IN_TOURNAMENT
const unsigned DEFAULT_NB_PARTICIPANTS_IN_TOURNAMENT
Definition: CscNeuralNetworkGeneticAlgorithmGenerationGenerator.h:15
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai::logger
unique_ptr< CscLogger > logger
Definition: CscMrptAutonomousExploration.cpp:49
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:38
conscience_core::ai::nn
Definition: CscNeuralNetwork.cpp:12
conscience_core::ai::nn::CscGeneticOperator
CscGeneticOperator
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:29
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmGenerationGenerator
Generates generations for a neural network genetic algorithm.
Definition: CscNeuralNetworkGeneticAlgorithmGenerationGenerator.h:28
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:63
CscNeuralNetwork.h
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmGenerationGenerator::NeuralNetworkGeneticAlgorithmGeneration
Represents a generation in the neural network genetic algorithm.
Definition: CscNeuralNetworkGeneticAlgorithmGenerationGenerator.h:37
CscNeuralNetworkTensorFlow.h
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:36
CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h