Conscience Core
CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h
Go to the documentation of this file.
1 /*
2  * CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h
3  *
4  * Created on: 15 mai 2024
5  * Author: Max Lhermitte
6  */
7 
8 #ifndef CSCNEURALNETWORKGENETICALGORITHMINDIVIDUALGENERATOR_H_
9 #define CSCNEURALNETWORKGENETICALGORITHMINDIVIDUALGENERATOR_H_
10 
12 
13 namespace conscience_core::ai::nn {
14 
26  COUNT // Number of elements in this enum // Must be stay last element !!!
27 };
28 
30  Copy = 0,
31  Crossover = 1,
32  Mutation = 2,
33  Random = 3,
34 };
35 
37 public:
39  public:
40  AllPossibilitiesHyperparameters(vector<CscNeuralNetworkType> *neuralNetworkTypePossibilitiesToAdd,
41  vector<unsigned> *nbHiddenLayersPossibilitiesToAdd,
42  vector<unsigned> *nbNeuronsPerLayerPossibilitiesToAdd,
43  vector<CscActivationFunction> *hiddenLayersActivationFunctionPossibilitiesToAdd,
44  vector<CscActivationFunction> *outputLayerFunctionPossibilitiesToAdd,
45  vector<CscLossFunction> *lossFunctionPossibilitiesToAdd,
46  vector<CscInitializationWeightsStrategy> *initializationWeightsStrategyPossibilitiesToAdd,
47  vector<CscInitializationBiasStrategy> *initializationBiasesStrategyPossibilitiesToAdd,
48  vector<float> *learningRatePossibilitiesToAdd,
49  vector<unsigned> *nbDataPerMiniBatchPossibilitiesToAdd);
51  const vector<CscNeuralNetworkType> *neuralNetworkTypePossibilities;
52  const vector<unsigned> *nbHiddenLayersPossibilities;
53  const vector<unsigned> *nbNeuronsPerLayerPossibilities;
54  const vector<CscActivationFunction> *hiddenLayersActivationFunctionPossibilities;
55  const vector<CscActivationFunction> *outputLayerFunctionPossibilities;
56  const vector<CscLossFunction> *lossFunctionPossibilities;
57  const vector<CscInitializationWeightsStrategy> *initializationWeightsStrategyPossibilities;
58  const vector<CscInitializationBiasStrategy> *initializationBiasesStrategyPossibilities;
59  const vector<float> *learningRatePossibilities;
60  const vector<unsigned> *nbDataPerMiniBatchPossibilities;
61  };
62 
64  public:
65  HyperparametersIndividual(const unsigned individualId, const unsigned generationOfCreation, const CscGeneticOperator geneticOperator, CscNeuralNetworkTensorFlow *neuralNetworkInit, CscNeuralNetwork::ResultTraining *resultInit);
67 
68  const unsigned getId() const;
69  const unsigned getGenerationOfCreation() const;
70  const CscGeneticOperator getGeneticOperator() const;
71  CscNeuralNetworkTensorFlow *getNeuralNetwork() const;
72  CscNeuralNetwork::ResultTraining *getResultTraining() const;
73 
74  void setResultTraining(CscNeuralNetwork::ResultTraining *resultTraining);
75 
76  private:
77  const unsigned individualId;
78  const unsigned generationOfCreation;
79  const CscGeneticOperator geneticOperator;
80  CscNeuralNetworkTensorFlow *neuralNetwork = nullptr;
81  CscNeuralNetwork::ResultTraining *result = nullptr;
82  };
83 
84  // constructor and destructor
85  CscNeuralNetworkGeneticAlgorithmIndividualGenerator(unsigned nbNeuralNetworkInputsInit, unsigned nbNeuralNetworkOutputsInit, AllPossibilitiesHyperparameters *allPossibilitiesHyperparameters);
87 
88  // getters
89  const unsigned getNbNeuralNetworkInputs() const;
90  const unsigned getNbNeuralNetworkOutputs() const;
91  const vector<CscNeuralNetworkType> *getNeuralNetworkTypePossibilities() const;
92  const vector<unsigned> *getNbHiddenLayersPossibilities() const;
93  const vector<unsigned> *getNbNeuronsPerHiddenLayerPossibilities() const;
94  const vector<CscActivationFunction> *getHiddenLayersActivationFunctionPossibilities() const;
95  const vector<CscActivationFunction> *getOutputLayerActivationFunctionPossibilities() const;
96  const vector<CscLossFunction> *getLossFunctionPossibilities() const;
97  const vector<CscInitializationWeightsStrategy> *getInitializationWeightsStrategyPossibilities() const;
98  const vector<CscInitializationBiasStrategy> *getInitializationBiasesStrategyPossibilities() const;
99  const vector<float> *getLearningRatePossibilities() const;
100  const vector<unsigned> *getNbDataPerMiniBatchPossibilities() const;
101 
102  // public methods
103  HyperparametersIndividual *createNeuralNetworkIndividualRandomly(const unsigned individualId, const unsigned generationOfCreation);
104 
105  CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *createIndividualByCopy(const unsigned individualId, HyperparametersIndividual *parent);
106  CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *createIndividualByCrossover(const unsigned individualId, const unsigned generationOfCreation, HyperparametersIndividual *parent1, HyperparametersIndividual *parent2);
107  CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual *createIndividualByMutation(const unsigned individualId, const unsigned generationOfCreation, HyperparametersIndividual *parent);
108 
109 private:
110  // Attributes
111  const unsigned nbNeuralNetworkInputs;
112  const unsigned nbNeuralNetworkOutputs;
113 
114  const vector<CscNeuralNetworkType> *neuralNetworkTypePossibilities;
115  const vector<unsigned> *nbHiddenLayersPossibilities;
116  const vector<unsigned> *nbNeuronsPerLayerPossibilities;
117  const vector<CscActivationFunction> *hiddenLayersActivationFunctionPossibilities;
118  const vector<CscActivationFunction> *outputLayerFunctionPossibilities;
119  const vector<CscLossFunction> *lossFunctionPossibilities;
120  const vector<CscInitializationWeightsStrategy> *initializationWeightsStrategyPossibilities;
121  const vector<CscInitializationBiasStrategy> *initializationBiasesStrategyPossibilities;
122  const vector<float> *learningRatePossibilities;
123  const vector<unsigned> *nbDataPerMiniBatchPossibilities;
124 
125  // Private methods
126 
127 };
128 };
129 
130 #endif /* CSCNEURALNETWORKGENETICALGORITHMINDIVIDUALGENERATOR_H_ */
conscience_core::ai::nn::OutputLayerActivationFunction
@ OutputLayerActivationFunction
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:20
conscience_core::ai::nn::NeuralNetworkType
@ NeuralNetworkType
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:16
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::learningRatePossibilities
const vector< float > * learningRatePossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:59
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::hiddenLayersActivationFunctionPossibilities
const vector< CscActivationFunction > * hiddenLayersActivationFunctionPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:54
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::neuralNetworkTypePossibilities
const vector< CscNeuralNetworkType > * neuralNetworkTypePossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:51
conscience_core::ai::nn::Random
@ Random
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:33
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:38
conscience_core::ai::nn::CscHyperparameter
CscHyperparameter
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:15
conscience_core::ai::nn
Definition: CscNeuralNetwork.cpp:12
conscience_core::ai::nn::CscGeneticOperator
CscGeneticOperator
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:29
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::HyperparametersIndividual
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:63
conscience_core::ai::nn::InitializationBiasesStrategy
@ InitializationBiasesStrategy
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:23
conscience_core::ai::nn::Copy
@ Copy
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:30
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::nbNeuronsPerLayerPossibilities
const vector< unsigned > * nbNeuronsPerLayerPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:53
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::initializationBiasesStrategyPossibilities
const vector< CscInitializationBiasStrategy > * initializationBiasesStrategyPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:58
conscience_core::ai::nn::Mutation
@ Mutation
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:32
conscience_core::ai::nn::NbDataPerMiniBatch
@ NbDataPerMiniBatch
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:25
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::nbDataPerMiniBatchPossibilities
const vector< unsigned > * nbDataPerMiniBatchPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:60
conscience_core::ai::nn::NbNeuronsPerHiddenLayer
@ NbNeuronsPerHiddenLayer
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:18
conscience_core::ai::nn::InitializationWeightsStrategy
@ InitializationWeightsStrategy
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:22
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::outputLayerFunctionPossibilities
const vector< CscActivationFunction > * outputLayerFunctionPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:55
CscNeuralNetworkTensorFlow.h
conscience_core::ai::nn::NbHiddenLayers
@ NbHiddenLayers
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:17
conscience_core::ai::nn::CscNeuralNetwork::ResultTraining
Definition: CscNeuralNetwork.h:115
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:36
conscience_core::ai::nn::COUNT
@ COUNT
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:26
conscience_core::ai::nn::HiddenLayerActivationFunction
@ HiddenLayerActivationFunction
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:19
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::nbHiddenLayersPossibilities
const vector< unsigned > * nbHiddenLayersPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:52
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::initializationWeightsStrategyPossibilities
const vector< CscInitializationWeightsStrategy > * initializationWeightsStrategyPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:57
conscience_core::ai::nn::LearningRate
@ LearningRate
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:24
conscience_core::ai::nn::Crossover
@ Crossover
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:31
conscience_core::ai::nn::LossFunction
@ LossFunction
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:21
conscience_core::ai::nn::CscNeuralNetworkGeneticAlgorithmIndividualGenerator::AllPossibilitiesHyperparameters::lossFunctionPossibilities
const vector< CscLossFunction > * lossFunctionPossibilities
Definition: CscNeuralNetworkGeneticAlgorithmIndividualGenerator.h:56
conscience_core::ai::nn::CscNeuralNetworkTensorFlow
Definition: CscNeuralNetworkTensorFlow.h:24