From 550caeee11086bd56db69176b3149ddfa160ee30 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sat, 17 Oct 2015 17:02:24 +0200 Subject: Reverted to a simple decision tree Turns out it's much easier to write a bot by hand with if statements. --- include/brain/bias_node.h | 4 ++-- include/brain/neural_link.h | 3 +++ include/brain/neural_network.h | 3 +++ include/brain/neural_node.h | 9 +++++++++ include/brain/neuron.h | 4 ++++ include/brain/sensor.h | 1 + 6 files changed, 22 insertions(+), 2 deletions(-) (limited to 'include/brain') 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> _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 + 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 _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; } }; -- cgit v1.2.3