Ejemplo n.º 1
0
        public GameAction GenerateAction(GameState gameState)
        {
            var expander         = new MCTreeSearchExpander <TicTacToeGame, GameState, GameAction, Player>(TicTacToeGame.Instance, new Random(0));
            var playoutGenerator = new GamePlayoutRandomGenerator <GameState, Player, GameAction>(TicTacToeGame.Instance, new Random(0));
            var mcts             = new MCTreeSearch <TicTacToeGame, GameState, GameAction, Player>(expander, playoutGenerator);
            TicTacToeMctsNavigator mctsNavigator = new TicTacToeMctsNavigator(mcts, TicTacToeGame.Instance, new MCTreeSearchNode <GameState, GameAction>(null, gameState, null));

            mctsNavigator.Round(1000);
            return(mctsNavigator.CurrentNode.Children.MaxItem(e => e.Value.Visits).Key);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Creates the tree
 /// </summary>
 /// <param name="initialPieces"></param>
 /// <param name="budget"></param>
 protected void CreateTree(PieceModel[] initialPieces, float budget)
 {
     treeSearch  = new MCTreeSearch(this, currentTetrisState, budget, initialPieces);
     currentNode = treeSearch.rootNode;
 }