summaryrefslogtreecommitdiff
path: root/include/brain
diff options
context:
space:
mode:
Diffstat (limited to 'include/brain')
-rw-r--r--include/brain/bias_node.h4
-rw-r--r--include/brain/neural_link.h3
-rw-r--r--include/brain/neural_network.h3
-rw-r--r--include/brain/neural_node.h9
-rw-r--r--include/brain/neuron.h4
-rw-r--r--include/brain/sensor.h1
6 files changed, 22 insertions, 2 deletions
diff --git a/include/brain/bias_node.h b/include/brain/bias_node.h
index 0b57e15..77c5884 100644
--- a/include/brain/bias_node.h
+++ b/include/brain/bias_node.h
@@ -5,8 +5,8 @@
class BiasNode: public NeuralNode
{
public:
- BiasNode()
+BiasNode() : NeuralNode("b0")
{
- _activation = 1;
+ _activation = 1;
}
};
diff --git a/include/brain/neural_link.h b/include/brain/neural_link.h
index b9cf4d1..14f58b9 100644
--- a/include/brain/neural_link.h
+++ b/include/brain/neural_link.h
@@ -7,6 +7,9 @@ class NeuralLink
public:
NeuralLink(NeuralNode* input, double weight);
double weightedActivation() const;
+
+ double weight() const { return _weight; }
+ std::string inputIdentifier() const { return _input->identifier(); }
private:
NeuralNode* _input;
diff --git a/include/brain/neural_network.h b/include/brain/neural_network.h
index a1af7cc..7fcf5f4 100644
--- a/include/brain/neural_network.h
+++ b/include/brain/neural_network.h
@@ -22,6 +22,9 @@ public:
unsigned int numberOfSensors() const { return _sensors.size(); }
unsigned int numberOfOutputs() const { return _outputs.size(); }
+ unsigned int numberOfNeurons() const { return _neurons.size(); }
+
+ bool linkExists(std::string srcIdentifier, std::string destIdentifier, double weight) const;
private:
std::vector<std::shared_ptr<Sensor>> _sensors;
diff --git a/include/brain/neural_node.h b/include/brain/neural_node.h
index 62b7b15..2684146 100644
--- a/include/brain/neural_node.h
+++ b/include/brain/neural_node.h
@@ -1,9 +1,18 @@
#pragma once
+#include <string>
+
class NeuralNode
{
public:
double activation() const { return _activation; }
+ std::string identifier() const { return _identifier; }
+
+NeuralNode(std::string identifier): _identifier(identifier) {}
+
protected:
double _activation;
+
+private:
+ std::string _identifier;
};
diff --git a/include/brain/neuron.h b/include/brain/neuron.h
index 204b303..ca26c73 100644
--- a/include/brain/neuron.h
+++ b/include/brain/neuron.h
@@ -12,6 +12,10 @@ public:
void addInput(NeuralLink&& link);
bool calculateActivation();
+Neuron(int index) : NeuralNode('n'+std::to_string(index)){};
+
+ bool hasInputWithWeight(std::string srcIdentifier, double weight) const;
+
private:
std::vector<NeuralLink> _inputLinks;
double sigmoid(double input) const;
diff --git a/include/brain/sensor.h b/include/brain/sensor.h
index a780c49..10f62a7 100644
--- a/include/brain/sensor.h
+++ b/include/brain/sensor.h
@@ -5,5 +5,6 @@
class Sensor: public NeuralNode
{
public:
+Sensor(int index) :NeuralNode('s'+std::to_string(index)){}
void setActivation(double activation) { _activation = activation; }
};