private void BaselineBtn_Click(object sender, RoutedEventArgs e) { Pig.Player humanPlayer = new Pig.Player(); XmlSerializer deserializer = new XmlSerializer(typeof(Pig.Player)); Pig.Player aiPlayer = new Pig.Player(); FileStream openFile = new FileStream("basePlayer.dat", FileMode.Open); Pig.Player tempPlayer; try { tempPlayer = (Pig.Player)deserializer.Deserialize(openFile); } catch (Exception err) { System.Windows.Forms.MessageBox.Show(err.Message); throw; } //creation of two players openFile.Close(); aiPlayer = new Pig.Player(tempPlayer); Pig.Player bestCurrentPlayer = new Pig.Player(aiGeneration.Players[0]); for (int i = 0; i < 10000; i++) { //get two players Pig.Pig game; if (rndGen.NextDouble() > 0.5) // to change who is starting player { game = new Pig.Pig(aiPlayer, bestCurrentPlayer); } else { game = new Pig.Pig(bestCurrentPlayer, aiPlayer); } while (!game.hasEnded && game.turnCount < game.maxTurns) { //breaks here game.PlayRound(); } aiPlayer.gameCount++; bestCurrentPlayer.gameCount++; game.CalculateFitness(); } //ratio of fitness of bestplayer to otherplayer baseLbl.Content = bestCurrentPlayer.totalFitness / aiPlayer.totalFitness; }
public void PlayGame() { if (versusIndex == playerIndex) { versusIndex++; } if (versusIndex >= Players.Count) { playerIndex++; versusIndex = 0; } if (playerIndex >= Players.Count) { if (_currentGenIteration < _iterationsPerGeneration) { //resets player versusIndex = 0; playerIndex = 0; _currentGenIteration++; } else { //reset generation _currentGenIteration = 0; versusIndex = 0; playerIndex = 0; CreateGen(); currentGen++; } } else { Pig.Player p1 = Players[playerIndex]; Pig.Player p2 = Players[versusIndex]; versusIndex++; //get two players Pig.Pig game = new Pig.Pig(p1, p2); game.trainType = trainType; while (!game.hasEnded && game.turnCount < game.maxTurns) { //breaks here game.PlayRound(); Constants.debugGen++; } p1.gameCount++; p2.gameCount++; game.CalculateFitness(); } }
public void PlayGenIteration() { int playerIndex = 0; int versusIndex = 0; while (true) { if (versusIndex == playerIndex) { versusIndex++; } if (versusIndex >= Players.Count) { playerIndex++; versusIndex = 0; } if (playerIndex >= Players.Count) { Thread.CurrentThread.Abort(); //done the work end thread } else { Pig.Player p1 = Players[playerIndex]; Pig.Player p2 = Players[versusIndex]; versusIndex++; //get two players Pig.Pig game = new Pig.Pig(p1, p2); while (!game.hasEnded && game.turnCount < game.maxTurns) { //breaks here game.PlayRound(); Constants.debugGen++; } p1.gameCount++; p2.gameCount++; game.CalculateFitness(); } } }
public void PlayGame() { if (versusIndex == playerIndex) { versusIndex++; } if (versusIndex >= Players.Count) { playerIndex++; versusIndex = 0; } if (playerIndex >= Players.Count) { CreateGen(); currentGen++; versusIndex = 0; playerIndex = 0; } else { Pig.Player p1 = Players[playerIndex]; Pig.Player p2 = Players[versusIndex]; versusIndex++; //get two players Pig.Pig game = new Pig.Pig(p1, p2); while (!game.hasEnded && game.turnCount < game.maxTurns) { //breaks here game.PlayRound(); Constants.debugGen++; } p1.gameCount++; p2.gameCount++; game.CalculateFitness(); } }
private void CalcBaseline() { Pig.Player humanPlayer = new Pig.Player(); XmlSerializer deserializer = new XmlSerializer(typeof(Pig.Player)); Pig.Player aiPlayer = new Pig.Player(); int wins = 0; int gameIterations = 10000; FileStream openFile = new FileStream("basePlayer.dat", FileMode.Open); Pig.Player tempPlayer; try { tempPlayer = (Pig.Player)deserializer.Deserialize(openFile); } catch (Exception err) { System.Windows.Forms.MessageBox.Show(err.Message); throw; } //creation of two players openFile.Close(); aiPlayer = new Pig.Player(tempPlayer); Pig.Player bestCurrentPlayer = new Pig.Player(aiGeneration.Players[0]); for (int i = 0; i < gameIterations; i++) { //get two players Pig.Pig game; if (rndGen.NextDouble() > 0.5) // to change who is starting player { game = new Pig.Pig(aiPlayer, bestCurrentPlayer); } else { game = new Pig.Pig(bestCurrentPlayer, aiPlayer); } game.trainType = aiGeneration.trainType; while (!game.hasEnded && game.turnCount < game.maxTurns) { //breaks here game.PlayRound(); } if (game.hasEnded && game._winnerPlayer == bestCurrentPlayer) { wins++; } aiPlayer.gameCount++; bestCurrentPlayer.gameCount++; game.CalculateFitness(); } //ratio of fitness of bestplayer to otherplayer //baseLbl.Content = bestCurrentPlayer.totalFitness / aiPlayer.totalFitness; baseLbl.Content = ((double)wins / (double)gameIterations * 100) + "%"; }