public void AddNode(int plLayer, eNeuralNodeType peType) { Node oNode; Connection oConnection; int lNodeIndex; //create node oNode = new Node(peType, plLayer); oNode.Treshold = 0; oNode.Id = Nodes.Count; Nodes.Add(oNode); switch (peType) { case eNeuralNodeType.eInput: { InputNodes.Add(oNode); break; } case eNeuralNodeType.eOutput: { OutputNodes.Add(oNode); break; } } lNodeIndex = Nodes.Count - 1; //create connections to all nodes in previous layer for (int lIndex = 0; lIndex < (int)Nodes.Count; lIndex++) { if (Nodes[lIndex].lLayer == plLayer - 1) { oConnection = new Connection(lIndex, lNodeIndex); oConnection.fWeight = 0; oNode.Connections.Add(oConnection); } } //create connections to all nodes in next layer foreach (Node Node in Nodes) { if (Node.lLayer == plLayer + 1) { oConnection = new Connection(lNodeIndex, Node.Id); oConnection.fWeight = 0; Node.Connections.Add(oConnection); } } }
public Node(eNeuralNodeType peType, int plLayer) { m_Type = peType; m_Layer = plLayer; m_Calculated = false; m_Value = 0; m_CumulativeErrorDelta = 0; Treshold = 0; InputMax = 0; Id = 0; Connections = new List <Connection>(0); }