Exemplo n.º 1
0
        static void Main(string[] args)
        {
            int          randomSeed = (int)((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
            QLearningAI  ai1        = new QLearningAI(randomSeed + 0, 0.3f, 0.9f, 0.9f);
            RandomMoveAI ai2        = new RandomMoveAI(randomSeed + 1);

            const int numTrainGames    = 100000;
            const int numEvaluateGames = 10000;

            TrainGames(ai1, ai2, numTrainGames);

            Simulate.WinnerStats winnerStats = Simulate.RunGames(Simulate.CreateNewGameState(), (gameState) => {
                switch (gameState.NextPlayer)
                {
                case BoardState.Player.Player1:
                    return(ai1.GetPlayerInput(gameState, false));

                case BoardState.Player.Player2:
                    return(ai2.GetPlayerInput(gameState));

                default:
                    throw new Exception("Invalid NextPlayer");
                }
            }, numEvaluateGames);

            Display.PrintWinnerStats(winnerStats);
        }