/// <summary> /// Perform the specified connection task. This task will be performed over /// all connections. /// </summary> /// <param name="task">The connection task.</param> public void PerformConnectionTask(FreeformConnectionTask task) { var visited = new HashSet <IFreeformNeuron>(); foreach (IFreeformNeuron neuron in _outputLayer.Neurons) { PerformConnectionTask(visited, neuron, task); } }
/// <summary> /// Perform the specified connection task. /// </summary> /// <param name="visited">The list of visited neurons.</param> /// <param name="parentNeuron"></param> /// <param name="task"></param> private void PerformConnectionTask(HashSet <IFreeformNeuron> visited, IFreeformNeuron parentNeuron, FreeformConnectionTask task) { visited.Add(parentNeuron); // does this neuron have any inputs? if (parentNeuron.InputSummation != null) { // visit the inputs foreach (IFreeformConnection connection in parentNeuron .InputSummation.List) { task(connection); IFreeformNeuron neuron = connection.Source; // have we already visited this neuron? if (!visited.Contains(neuron)) { PerformConnectionTask(visited, neuron, task); } } } }
/// <summary> /// Perform the specified connection task. /// </summary> /// <param name="visited">The list of visited neurons.</param> /// <param name="parentNeuron"></param> /// <param name="task"></param> private void PerformConnectionTask(HashSet<IFreeformNeuron> visited, IFreeformNeuron parentNeuron, FreeformConnectionTask task) { visited.Add(parentNeuron); // does this neuron have any inputs? if (parentNeuron.InputSummation != null) { // visit the inputs foreach (IFreeformConnection connection in parentNeuron .InputSummation.List) { task(connection); IFreeformNeuron neuron = connection.Source; // have we already visited this neuron? if (!visited.Contains(neuron)) { PerformConnectionTask(visited, neuron, task); } } } }
/// <summary> /// Perform the specified connection task. This task will be performed over /// all connections. /// </summary> /// <param name="task">The connection task.</param> public void PerformConnectionTask(FreeformConnectionTask task) { var visited = new HashSet<IFreeformNeuron>(); foreach (IFreeformNeuron neuron in _outputLayer.Neurons) { PerformConnectionTask(visited, neuron, task); } }