diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | include/brain/neural_link.h | 13 | ||||
-rw-r--r-- | include/brain/neural_network.h | 20 | ||||
-rw-r--r-- | include/brain/neuron.h | 13 | ||||
-rw-r--r-- | include/brain/sensor_neuron.h | 7 |
5 files changed, 54 insertions, 0 deletions
@@ -9,3 +9,4 @@ bin/ Debug/ Testing/ Makefile +*~ diff --git a/include/brain/neural_link.h b/include/brain/neural_link.h new file mode 100644 index 0000000..d89ac18 --- /dev/null +++ b/include/brain/neural_link.h @@ -0,0 +1,13 @@ +#pragma once + +#include <memory> + +class NeuralLink +{ +public: + double weightedActivation(); + +private: + std::shared_ptr<Neuron> _input; + double _weight; +}; diff --git a/include/brain/neural_network.h b/include/brain/neural_network.h new file mode 100644 index 0000000..d62112c --- /dev/null +++ b/include/brain/neural_network.h @@ -0,0 +1,20 @@ +#pragma once + +#include <memory> +#include <istream> +#include <vector> + +class NeuralNetwork +{ +public: + NeuralNetwork(std::istream &&networkConfigFile, int numberOfSensors, int numberOfOutputs); + + void setInput(int inputIndex, double activation); + int findOutputIndex(); + +private: + std::vector<std::shared_ptr<Neuron>> _neurons; + std::vector<std::shared_ptr<SensorNeuron>> _sensors; + std::vector<std::shared_ptr<Neuron>> _outputs; +}; + diff --git a/include/brain/neuron.h b/include/brain/neuron.h new file mode 100644 index 0000000..dd658cd --- /dev/null +++ b/include/brain/neuron.h @@ -0,0 +1,13 @@ +#pragma once + +#include <memory> +#include <vector> + +class Neuron +{ +public: + virtual double activation(); + +private: + std::vector<std::shared_ptr<NeuralLink>> _inputLinks; +}; diff --git a/include/brain/sensor_neuron.h b/include/brain/sensor_neuron.h new file mode 100644 index 0000000..fb3d4df --- /dev/null +++ b/include/brain/sensor_neuron.h @@ -0,0 +1,7 @@ +#pragma once + +class SensorNeuron: public Neuron +{ +public: + setActivation(double activation); +}; |