From 7e8dce7224214cbb82e9191917de9f234fe38cb7 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sat, 1 Aug 2015 14:35:58 +0200 Subject: Implemented structure of network --- src/brain/bias_node.cpp | 6 ++++++ src/brain/neural_link.cpp | 11 +++++++++++ src/brain/neural_network.cpp | 4 ++-- src/brain/neural_node.cpp | 6 ++++++ src/brain/neuron.cpp | 24 ++++++++++++++++++++++++ src/brain/sensor.cpp | 5 +++++ 6 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/brain/bias_node.cpp create mode 100644 src/brain/neural_link.cpp create mode 100644 src/brain/neural_node.cpp create mode 100644 src/brain/neuron.cpp create mode 100644 src/brain/sensor.cpp (limited to 'src') diff --git a/src/brain/bias_node.cpp b/src/brain/bias_node.cpp new file mode 100644 index 0000000..99ae70d --- /dev/null +++ b/src/brain/bias_node.cpp @@ -0,0 +1,6 @@ +#include "brain/bias_node.h" + +BiasNode::BiasNode() + :NeuralNode('b', 0) +{ +} diff --git a/src/brain/neural_link.cpp b/src/brain/neural_link.cpp new file mode 100644 index 0000000..d217236 --- /dev/null +++ b/src/brain/neural_link.cpp @@ -0,0 +1,11 @@ +#include "brain/neural_link.h" + +NeuralLink::NeuralLink(double weight) + :_weight(weight) +{ +} + +double NeuralLink::weightedActivation() const +{ + return _input->activation()*_weight; +} diff --git a/src/brain/neural_network.cpp b/src/brain/neural_network.cpp index 980d5bc..c3e9f33 100644 --- a/src/brain/neural_network.cpp +++ b/src/brain/neural_network.cpp @@ -5,11 +5,11 @@ NeuralNetwork::NeuralNetwork(std::istream &&networkConfigFile, int numberOfSenso { for (int i=0; i()); + _sensors.push_back(std::make_shared(i)); } for (int i=0; i()); + _outputs.push_back(std::make_shared(i)); } } diff --git a/src/brain/neural_node.cpp b/src/brain/neural_node.cpp new file mode 100644 index 0000000..9bdd7c6 --- /dev/null +++ b/src/brain/neural_node.cpp @@ -0,0 +1,6 @@ +#include "brain/neural_node.h" + +NeuralNode::NeuralNode(char type, int id) + :_type(type), _id(id) +{ +} diff --git a/src/brain/neuron.cpp b/src/brain/neuron.cpp new file mode 100644 index 0000000..8c2e47c --- /dev/null +++ b/src/brain/neuron.cpp @@ -0,0 +1,24 @@ +#include "brain/neuron.h" +#include + +Neuron::Neuron(int id) + :NeuralNode('n', id) +{ +} + +double Neuron::sigmoid(double input) const +{ + double slope = 4.924273; + double constant = 2.4621365; + return (1/(1+(std::exp(-(slope*input))))); +} + +double Neuron::activation() const +{ + double activationSum = 0; + for (auto link : _inputLinks) + { + activationSum += link->weightedActivation(); + } + return sigmoid(activationSum); +} diff --git a/src/brain/sensor.cpp b/src/brain/sensor.cpp new file mode 100644 index 0000000..3069659 --- /dev/null +++ b/src/brain/sensor.cpp @@ -0,0 +1,5 @@ +#include "brain/sensor.h" + +Sensor::Sensor(int id) + :NeuralNode('s', id) +{} -- cgit v1.2.3