public MCTS(POGame poGame, Dictionary <string, List <Card> > decksDict, Dictionary <string, double> probsDict, int turnDepth = 1, int timeBudget = 2000, SelectionStrategy selectionStrategy = SelectionStrategy.UCT, StateRateStrategy stateRateStrategy = StateRateStrategy.Greedy, double explorationConstant = 0.5) { TurnDepth = turnDepth; COMPUTATIONAL_BUDGET = timeBudget; EXPLORATION_CONSTANT = explorationConstant; Selection = selectionStrategy; StateRate = stateRateStrategy; player = poGame.CurrentPlayer; Root = new Node(poGame, player.PlayerId); InitialState = poGame; InitializeNode(Root, InitialState); DecksDict = decksDict; ProbabilitiesDict = probsDict; ActionEstimator = new ActionEstimator(DecksDict, ProbabilitiesDict); //poGame.CurrentPlayer.Options().ForEach(task => Console.Write(task + " ")); //Console.WriteLine(); }
public static Func <POGame, Controller, int> GetStateRateStrategy(StateRateStrategy strategy) { return(StateRateStrategiesDict.GetValueOrDefault(strategy, StateRateStrategiesDict[StateRateStrategy.Greedy])); }