Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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();
                }
            }
        }
Ejemplo n.º 4
0
        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) + "%";
        }