//Constructor public LifeObject(Hive h, NodalNetwork nn) { //Set Energies //this._interalEnergy = new Energy(Energy.State.Entropy, nn.EnergyCost); //Handle Hive Creation/Setting if (h == null) this._myHive = new Hive(); else this._myHive = h; //Add TO Hive //this._myHive.AddLifeObject(this); this._myID = this._myHive.NextID(); //Set Neural Netowrk this._myNetwork = nn; }
public LifeObject(NodalNetwork nn) : this(null, nn) { }
//Static Constructor public NodalNetwork CreateClone() { var nnn = new NodalNetwork(); nnn._PointerIDGen = this._PointerIDGen.Clone(); nnn._LinkIDGen = this._LinkIDGen.Clone(); nnn._costFunc = this._costFunc; var allPtrs = new List<Pointer>(); var inPtrs = new List<Pointer>(); var outPtrs = new List<Pointer>(); var hidPtrs = new List<Pointer>(); var Links = new List<Link>(); //Create Inputs for (int i = 0; i < this._myInputs.Count; i++) inPtrs.Add(new Pointer(Pointer.PointerType.Input, new ID(nnn._PointerIDGen, this._myInputs[i].IDNum))); //Create Outputs for (int i = 0; i < this._myOutputs.Count; i++) outPtrs.Add(new Pointer(Pointer.PointerType.Output, new ID(nnn._PointerIDGen, this._myOutputs[i].IDNum), this._myOutputs[i], true)); //Create Hidden for (int i = 0; i < this._myHidden.Count; i++) hidPtrs.Add(new Pointer(Pointer.PointerType.Sigmoid, new ID(nnn._PointerIDGen, this._myHidden[i].IDNum), this._myHidden[i], true)); //Add inptrs and outPtrs to Nodal Netowrk allPtrs.AddRange(inPtrs); allPtrs.AddRange(outPtrs); allPtrs.AddRange(hidPtrs); nnn._myInputs = inPtrs; nnn._myOutputs = outPtrs; nnn._myHidden = hidPtrs; nnn._myPointers = allPtrs; //Clone Links for (int i = 0; i < this._myLinks.Count; i++) { var parLink = this.LinkByID(this._myLinks[i].IDNum); Links.Add(new Link(new ID(nnn._LinkIDGen, parLink.IDNum), nnn.NodeByID(parLink.InputIDNum), nnn.NodeByID(parLink.OutputIDNum), parLink, true)); } //Set Links nnn._myLinks = Links; return nnn; }