Пример #1
0
        public void AllStateValues_AreBetween_0_and_1()
        {
            var opponent = new FirstAvailableSlotPlayer(BoardTile.O);

            _1StepAgent.Train(opponent, 50);

            var stateValues = _1StepAgent.GetCurrentStateValues().All().ToList();

            Assert.IsTrue(stateValues.All(sv => Math.Abs(sv.Item2) >= 0.0 && Math.Abs(sv.Item2) <= 1.0));
        }
Пример #2
0
        public void AfterTraining_PlaysAGameToCompletion()
        {
            var opponent = new FirstAvailableSlotPlayer(BoardTile.O);

            _1StepAgent.Train(opponent, 50);
            var agentPlayer = new GreedyStateValuePlayer(_1StepAgent.GetCurrentStateValues(), BoardTile.X);
            var game        = new TicTacToeGame(Board.CreateEmptyBoard(), agentPlayer, opponent);

            game.Run();

            Assert.IsTrue(game.IsFinished());
        }
Пример #3
0
        public void Saves_And_Loads()
        {
            var opponent = new FirstAvailableSlotPlayer(BoardTile.O);

            _1StepAgent.Train(opponent, 1);

            var path = $"{nameof(NStepAgentTests)}.{nameof(Saves_And_Loads)}.agent.json";

            _1StepAgent.SaveTrainedValues("asdf", path);

            var stateValueTable = PolicyFileIo.LoadStateValueTable(path);

            Assert.NotNull(stateValueTable);
        }
Пример #4
0
        public void Saves_And_Loads()
        {
            var agent    = new MonteCarloTicTacToeAgent(BoardTile.X);
            var opponent = new FirstAvailableSlotPlayer(BoardTile.O);

            agent.Train(opponent, 1);

            var path = $"{nameof(MonteCarloTicTacToeAgentTests)}.{nameof(Saves_And_Loads)}.agent.json";

            agent.SaveTrainedValues("asdf", path);

            var stateActionTable = PolicyFileIo.LoadStateActionTable(path);

            Assert.NotNull(stateActionTable);
        }