summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@gmail.com>2015-07-27 08:02:41 +0200
committerJustin Worthe <justin.worthe@gmail.com>2015-07-27 08:02:41 +0200
commitfc6933f34f7ce4efb522e4af34f94e9e437ec31c (patch)
treeaab6576cfe4e5eede304ae094528b92864eaf18f /include
parent8f4d784c77df73ae810465c7b6ceb1efc112866a (diff)
Added interface for neural network
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);
+};