public void LinkNextNode(NeuralNode next) { var link = new NeuralLink(this, next, 1.0); this.nextLayer.Add(link); next.prevLayer.Add(link); }
/// <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); }
/// <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); }
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; } } } }
/// <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; } }
/// <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); } }
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(); }
/// <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(); } }