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)); }
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()); }
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); }
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); }