summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/brain/neural_link.h13
-rw-r--r--include/brain/neural_network.h20
-rw-r--r--include/brain/neuron.h13
-rw-r--r--include/brain/sensor_neuron.h7
4 files changed, 53 insertions, 0 deletions
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);
+};