From 8eebf1079fbed2848ee47cf990f5def5926a0c1f Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Tue, 19 Apr 2022 21:24:15 +0200 Subject: Refile for merging repos --- 2015-spacebot/include/brain/neural_network.h | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 2015-spacebot/include/brain/neural_network.h (limited to '2015-spacebot/include/brain/neural_network.h') diff --git a/2015-spacebot/include/brain/neural_network.h b/2015-spacebot/include/brain/neural_network.h new file mode 100644 index 0000000..7fcf5f4 --- /dev/null +++ b/2015-spacebot/include/brain/neural_network.h @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include "brain/neural_node.h" +#include "brain/sensor.h" +#include "brain/bias_node.h" +#include "brain/neuron.h" + +class NeuralNetwork +{ +public: + NeuralNetwork(std::istream &&networkConfigFile, unsigned int numberOfSensors, unsigned int numberOfOutputs); + NeuralNetwork(std::istream &&networkConfigFile, std::vector sensorInitialValues, unsigned int numberOfOutputs); + + void setInput(unsigned int inputIndex, double activation); + unsigned int findMaxOutputIndex() const; + + 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; + std::shared_ptr _biasNode; + std::vector> _neurons; + std::vector> _outputs; + + void parseFile(std::istream &&file); + + void addLink(std::shared_ptr source, std::shared_ptr destination, double weight); + std::shared_ptr findOrAddSensor(unsigned int id); + std::shared_ptr findOrAddNeuron(unsigned int id); +}; + -- cgit v1.2.3