public void LinkNextNode(NeuralNode next)
            {
                var link = new NeuralLink(this, next, 1.0);

                this.nextLayer.Add(link);
                next.prevLayer.Add(link);
            }
Esempio n. 2
0
        /// <summary>
        /// Check if the database contains a character with the handle.
        /// <see cref="NeuralLink"/> must be closed before calling this method.
        /// </summary>
        /// <param name="charName">The character's handle.</param>
        /// <returns></returns>
        public bool CheckCharacterExists(string charName)
        {
            bool   exists = false;
            string q      = "SELECT * FROM CP2020Db.CP_CHARACTERS WHERE charHandle = '" + charName + "' ;";

            NeuralLink.Open();
            MySqlDataReader result = runQuery(q);

            if (result != null)
            {
                exists = result.Read();
            }
            NeuralLink.Close();
            return(exists);
        }
Esempio n. 3
0
        /// <summary>
        /// Loads a character from the database with the given name.
        /// </summary>
        /// <param name="n">The name of the character to load from the database.</param>
        /// <returns></returns>
        public Character LoadCharacter(string n)
        {
            Character loadedChar = new Character();

            if (CheckCharacterExists(n))
            {
                // Get character info from the database
                string q = "SELECT * FROM CP2020Db.CP_CHARACTERS WHERE charHandle = '" + n + "';";
                NeuralLink.Open();
                MySqlDataReader characterData = runQuery(q);
                characterData.Read();

                string charName   = characterData.GetString(1);
                string charHandle = characterData.GetString(2);
                int    charPoints = characterData.GetInt32(3);
                string charRole   = characterData.GetString(4);
                int    charAge    = characterData.GetInt32(5);
                int    charAttr   = characterData.GetInt32(6);
                int    charBod    = characterData.GetInt32(7);
                int    charCool   = characterData.GetInt32(8);
                int    charEmp    = characterData.GetInt32(9);
                int    charInt    = characterData.GetInt32(10);
                int    charLuck   = characterData.GetInt32(11);
                int    charMove   = characterData.GetInt32(12);
                int    charRef    = characterData.GetInt32(13);
                int    charTech   = characterData.GetInt32(14);
                int    charRun    = characterData.GetInt32(15);
                int    charLeap   = characterData.GetInt32(16);
                int    charLift   = characterData.GetInt32(17);
                int    charHum    = characterData.GetInt32(18);
                NeuralLink.Close();

                // Generate new character
                List <int> charStats = new List <int> {
                    charInt, charRef, charTech, charCool, charAttr, charLuck, charMove, charBod, charEmp
                };
                loadedChar = CreateCharacter(charName, charStats, charRole, handle: charHandle);
            }
            else
            {
                throw new InvalidOperationException("ERROR: could not find character '" + n + "'. Please create a new character.");
            }
            return(loadedChar);
        }
Esempio n. 4
0
        protected SONNode [][] KohonenLayer;                    // Kohonen layer

        public override void CreateNetwork()
        {
            Nodes     = new NeuralNodeBase[NodeCount];
            LinkCount = NodeCount * XSize * YSize;

            Links = new NeuralLink[LinkCount];

            //int curr=nodeCount;
            for (var i = 0; i < NodeCount; i++)
            {
                Nodes[i] = new InputNode();
            }

            for (var i = 0; i < LinkCount; i++)
            {
                Links[i] = new SONLink();
            }

            // now build kohonen network
            KohonenLayer = new SONNode[XSize][];
            for (int x = 0, curr = 0; x < XSize; x++)
            {
                KohonenLayer[x] = new SONNode[YSize];
                for (var y = 0; y < YSize; y++)
                {
                    KohonenLayer[x][y] = new SONNode(LearningRate);
                    for (var i = 0; i < NodeCount; i++)
                    {
                        var inNode  = Nodes[i];
                        var outNode = KohonenLayer[x][y];
                        var link    = Links[curr++];

                        outNode.InLinks.Add(link);
                        inNode.OutLinks.Add(link);

                        link.InNode  = inNode;
                        link.OutNode = outNode;
                    }
                }
            }
        }
Esempio n. 5
0
 /// <summary>
 /// Deletes a character from the database.
 /// MAKE SURE this is what the user wants
 /// before running this method.
 /// Update to this method is required upon
 /// addition of weapons, gear, and cybernetics
 /// to the database.
 /// </summary>
 /// <param name="n">The n.</param>
 /// <exception cref="InvalidOperationException">ERROR: Attempt to delete non-existent character</exception>
 public void DeleteCharacter(string n)
 {
     if (CheckCharacterExists(n))
     {
         string q   = "DELETE FROM CP2020Db.CP_CHARACTERS WHERE charHandle = '" + n + "';";
         string dis = "SET autocommit = 0;";
         string com = "COMMIT;";
         NeuralLink.Open();
         MySqlDataReader r1 = runQuery(dis);
         r1.Close();
         r1 = runQuery(q);
         r1.Close();
         runQuery(com);
         r1.Close();
         NeuralLink.Close();
     }
     else
     {
         throw new InvalidOperationException("ERROR: Attempt to delete non-existent character");
     }
 }
        public override void CreateNetwork()
        {
            Nodes = new NeuralNodeBase[NodeCount];
            Links = new NeuralLink[LinkCount];

            for (var i = 0; i < NodeCount - 2; i++)     // Create Input Nodes
            {
                Nodes[i] = new InputNode();
            }

            Nodes[NodeCount - 2] = new BiasNode();      // Create Bias Node
            Nodes[NodeCount - 1] = new AdalineNode(LearningRate);

            for (var i = 0; i < LinkCount; i++)
            {
                var l = new AdalineLink(Nodes[i], Nodes[NodeCount - 1]); // Create links
                Links[i] = l;
            }

            for (var i = 0; i < LinkCount; i++)           // Connect inputs to ADALINE
            {
                Nodes[i].OutLinks.Add(Links[i]);
                Nodes[NodeCount - 1].InLinks.Add(Links[i]);
                Links[i].InNode  = Nodes[i];
                Links[i].OutNode = Nodes[NodeCount - 1];

                var inNode  = Nodes[i];
                var outNode = Nodes[NodeCount - 1];
                var link    = Links[i];

                outNode.InLinks.Add(link);
                inNode.OutLinks.Add(link);

                link.InNode  = inNode;
                link.OutNode = outNode;
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Loads all characters in the database.
        /// </summary>
        public void LoadAll()
        {
            string q = "SELECT * FROM CP2020Db.CP_CHARACTERS;";

            NeuralLink.Open();
            MySqlDataReader characterData = runQuery(q);

            while (characterData.Read())
            {
                string charName   = characterData.GetString(1);
                string charHandle = characterData.GetString(2);
                int    charPoints = characterData.GetInt32(3);
                string charRole   = characterData.GetString(4);
                int    charAge    = characterData.GetInt32(5);
                int    charAttr   = characterData.GetInt32(6);
                int    charBod    = characterData.GetInt32(7);
                int    charCool   = characterData.GetInt32(8);
                int    charEmp    = characterData.GetInt32(9);
                int    charInt    = characterData.GetInt32(10);
                int    charLuck   = characterData.GetInt32(11);
                int    charMove   = characterData.GetInt32(12);
                int    charRef    = characterData.GetInt32(13);
                int    charTech   = characterData.GetInt32(14);
                int    charRun    = characterData.GetInt32(15);
                int    charLeap   = characterData.GetInt32(16);
                int    charLift   = characterData.GetInt32(17);
                int    charHum    = characterData.GetInt32(18);
                NeuralLink.Close();

                // Generate new character
                List <int> charStats = new List <int> {
                    charInt, charRef, charTech, charCool, charAttr, charLuck, charMove, charBod, charEmp
                };
                CreateCharacter(charName, charStats, charRole, handle: charHandle);
            }
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            CreateInputPatterns();
            //
            // TODO: Add code to start application here
            //

            Console.WriteLine("Network class test......");

            //NeuralNodeBase [] nodes = new NeuralNodeBase[5];

//			for( int i=0; i<5; i++ )
//			{
//				nodes[i] = new FeedbackNode();
//				nodes[i].Name = string.Format( "Node:{0}", i.ToString() );
//			}
//
//			Console.WriteLine("Creatiung a network, it should look like this:");
//			Console.WriteLine("(0)--\\");
//			Console.WriteLine("(1)===\\");
//			Console.WriteLine("		 (4)");
//			Console.WriteLine("(2)===/");
//			Console.WriteLine("(3)--/");


            NeuralNodeBase [] nodes = new NeuralNodeBase[4];
            NeuralLink []     Link  = new NeuralLink[3];

            nodes[0] = new InputNode();                      // Create Nodes for Network
            nodes[1] = new InputNode();

            nodes[0].Name = "Input1";
            nodes[1].Name = "Input2";

            nodes[2]      = new BiasNode();
            nodes[2].Name = "BiasNode";

            nodes[3]      = new AdalineNode(0.45);         // ADALINE node with learning rate of 0.45
            nodes[3].Name = "AdalineNode";

            Link[0] = new AdalineLink(nodes[0], nodes[3]);                      // Create Links for Network
            Link[1] = new AdalineLink(nodes[1], nodes[3]);
            Link[2] = new AdalineLink(nodes[2], nodes[3]);

            NeuralNodeBase.Link(nodes[0], nodes[3], Link[0]);               // Connect Network
            NeuralNodeBase.Link(nodes[1], nodes[3], Link[1]);
            NeuralNodeBase.Link(nodes[2], nodes[3], Link[2]);

            // add output links
//			nodes[0].Link( nodes[4], LinkDirection.OUTPUT );
//			nodes[1].Link( nodes[4], LinkDirection.OUTPUT );
//			nodes[2].Link( nodes[4], LinkDirection.OUTPUT );
//			nodes[3].Link( nodes[4], LinkDirection.OUTPUT );
//
//			// add input links
//			nodes[4].Link( nodes[0], LinkDirection.INPUT );
//			nodes[4].Link( nodes[1], LinkDirection.INPUT );
//			nodes[4].Link( nodes[2], LinkDirection.INPUT );
//			nodes[4].Link( nodes[3], LinkDirection.INPUT );

            // let's see
            Console.WriteLine("Examining Links.....");

            for (int i = 0; i < nodes.Length; i++)
            {
                Console.WriteLine("Node Index: {0}, Node Name: {1}", i, nodes[i].Name);
                Console.WriteLine("   Input Nodes ({0}):", nodes[i].InLinks.Count);
                foreach (NeuralLink link in nodes[i].InLinks)
                {
                    Console.WriteLine("      In Node:{0} Out Node:{1}", link.InNode.Name, link.OutNode.Name);
                }

                Console.WriteLine("   Output Nodes ({0}):", nodes[i].OutLinks.Count);
                foreach (NeuralLink link in nodes[i].OutLinks)
                {
                    Console.WriteLine("      In Node:{0} Out Node:{1}", link.InNode.Name, link.OutNode.Name);
                }
            }

            Console.WriteLine("Press enter to continue....");
            Console.Read();
        }
Esempio n. 9
0
        /// <summary>
        /// Saves a given character to the database.
        /// BE SURE to check if user wishes to potentially override a
        /// character record with the same name as the given character
        /// BEFORE calling this method.
        /// </summary>
        /// <param name="c">The character being saved to the database.</param>
        public void SaveCharacter(Character c)
        {
            NeuralLink.Close();
            if (CheckCharacterExists(c.Handle))
            {
                string q = "UPDATE CP2020Db.CP_CHARACTERS " +
                           " SET charName = '" + c.Name + "' " +
                           ", charHandle = '" + c.Handle + "' " +
                           ", charPoints = " + c.CharacterPoints +
                           ", charRole = '" + c.Class.ToString() + "' " +
                           ", charAge = " + c.Age +
                           ", charAttract = " + c.Stats.Attract +
                           ", charBody = " + c.Stats.Body +
                           ", charCool = " + c.Stats.Cool +
                           ", charEmpathy = " + c.Stats.Empathy +
                           ", charIntelligence = " + c.Stats.Intell +
                           ", charLuck = " + c.Stats.Luck +
                           ", charMove = " + c.Stats.Move +
                           ", charReflex = " + c.Stats.Reflex +
                           ", charTech = " + c.Stats.Tech +
                           ", charRun = " + c.Stats.Run +
                           ", charLeap = " + c.Stats.Leap +
                           ", charLift = " + c.Stats.Lift +
                           ", charHumanity = " + c.Humanity +
                           " WHERE charHandle = '" + c.Handle + "';";

                string dis = "SET autocommit = 0;";
                string com = "COMMIT;";
                string res = "SET autocommit = 1;";
                NeuralLink.Open();
                MySqlDataReader r1 = runQuery(dis);
                r1.Close();
                r1 = runQuery(q);
                r1.Close();
                r1 = runQuery(com);
                r1.Close();
                r1 = runQuery(res);
                r1.Close();
                NeuralLink.Close();
            }
            else
            {
                string q = "INSERT INTO CP2020Db.CP_CHARACTERS (charName, charHandle, charPoints, charRole, charAge, charAttract, charBody, charCool, charEmpathy, charIntelligence, charLuck, charMove, charReflex, charTech, charRun, charLeap, charLift, charHumanity)" +
                           "VALUES (" +
                           "'" + c.Name + "', " +
                           "'" + c.Handle + "', " +
                           c.CharacterPoints + ", " +
                           "'" + c.Class.ToString() + "', " +
                           c.Age + ", " +
                           c.Stats.Attract + ", " +
                           c.Stats.Body + ", " +
                           c.Stats.Cool + ", " +
                           c.Stats.Empathy + ", " +
                           c.Stats.Intell + ", " +
                           c.Stats.Luck + ", " +
                           c.Stats.Move + ", " +
                           c.Stats.Reflex + ", " +
                           c.Stats.Tech + ", " +
                           c.Stats.Run + ", " +
                           c.Stats.Leap + ", " +
                           c.Stats.Lift + ", " +
                           c.Humanity + ");";
                string dis = "SET autocommit = 0;";
                string com = "COMMIT;";
                string res = "SET autocommit = 1;";
                NeuralLink.Open();
                MySqlDataReader r1 = runQuery(dis);
                r1.Close();
                r1 = runQuery(q);
                r1.Close();
                r1 = runQuery(com);
                r1.Close();
                r1 = runQuery(res);
                NeuralLink.Close();
            }
        }