예제 #1
0
        //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;
        }
예제 #2
0
 public LifeObject(NodalNetwork nn)
     : this(null, nn)
 {
 }
예제 #3
0
        //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;
        }