/// <summary> /// Creates a new nuron on a given network, with a given activation /// function and level depth. An index is required to be able to /// refrence the nuron from outside the network. /// </summary> /// <param name="network">Network on wich to create the nuron</param> /// <param name="func">Activation funciton of the nuron</param> /// <param name="level">Level of the nuron</param> /// <param name="index">Index of the nuron</param> internal NuronOld(NetworkCPP network, ActFunc func, int level, int index) { this.network = network; this.func = func; this.level = level; this.index = index; inputs = new VListArray <Axon>(); value = 0.0; }
/// <summary> /// Clears all the data contained in this node. It is nessary to /// call this when disposing of the parent network in order to /// avoid cyclical refrences and potential memory leaks. /// </summary> internal void ClearData() { //desposes of the internal data sturctor if (inputs != null) { inputs.Clear(); } //deletes the network to avoid cyclic refrences this.network = null; this.inputs = null; }
/// <summary> /// Creates a copy of a given nuron for a given network. All of the /// refrences to axons in the old network, now point to axons in /// the new network. All other values remain the same. /// </summary> /// <param name="network">The network containing this nuron</param> /// <param name="other">Another neuron to copy its values</param> internal NuronOld(NetworkCPP network, NuronOld other) { //sets the network refrence to the new network this.network = network; //copies the other vlaues func = other.func; level = other.level; value = other.value; inputs = new VListArray <Axon>(other.inputs.Count); //makes a deep copy of the list of inputs foreach (Axon ax in other.inputs) { Axon clone = new Axon(ax); this.inputs.Add(clone); } }