summaryrefslogtreecommitdiff
path: root/src/brain/neural_network.cpp
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@gmail.com>2015-08-02 19:01:01 +0200
committerJustin Worthe <justin.worthe@gmail.com>2015-08-02 19:01:01 +0200
commit87ef7e90829053b7bc336f7316c3facb6c51e781 (patch)
tree0dbe68a138211d0099c602a97efc53b65bf8ffc8 /src/brain/neural_network.cpp
parent2e6ecf423c8228ac8de4badf4fc2d037a876b7ff (diff)
Reading brain in from a file
Diffstat (limited to 'src/brain/neural_network.cpp')
-rw-r--r--src/brain/neural_network.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/brain/neural_network.cpp b/src/brain/neural_network.cpp
index 15eedca..30da46c 100644
--- a/src/brain/neural_network.cpp
+++ b/src/brain/neural_network.cpp
@@ -17,6 +17,24 @@ NeuralNetwork::NeuralNetwork(std::istream &&networkConfigFile, int numberOfSenso
parseFile(std::move(networkConfigFile));
}
+NeuralNetwork::NeuralNetwork(std::istream &&networkConfigFile, std::vector<bool> sensorInitialValues, int numberOfOutputs)
+{
+ _biasNode = std::make_shared<BiasNode>();
+
+ for (int i=0; i<sensorInitialValues.size(); ++i)
+ {
+ auto sensor = std::make_shared<Sensor>(i);
+ sensor->setActivation(sensorInitialValues.at(i) ? 1 : 0);
+ _sensors.push_back(sensor);
+ }
+ for (int i=0; i<numberOfOutputs; ++i)
+ {
+ _outputs.push_back(std::make_shared<Neuron>(i));
+ }
+
+ parseFile(std::move(networkConfigFile));
+}
+
void NeuralNetwork::parseFile(std::istream &&file)
{
double weight;
@@ -123,6 +141,7 @@ void NeuralNetwork::setInput(int inputIndex, double activation)
if (sensor->id() == inputIndex)
{
sensor->setActivation(activation);
+ break;
}
}
}