summaryrefslogtreecommitdiff
path: root/src/brain/neural_network.cpp
diff options
context:
space:
mode:
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;
}
}
}