private static IAgent Agent(IReadOnlyDictionary <string, string> parameters, Options options) { IHeuristic heuristic = new WorstCaseNumberOfPlaysToGo(); if (parameters.ContainsKey("heuristic")) { heuristic = options.Heuristics[parameters["heuristic"]].CreateHeuristic(parameters); } return(options.Agents[parameters["agent"]].CreateAgent(heuristic, parameters)); }
public void ShouldReturnCheapestPlayWithDepthZero() { var heuristic = new WorstCaseNumberOfPlaysToGo(); var agent = new ExpectMaxAgent(0, heuristic); var state = TestUtilities.GenerateTestState(); var root = new RootNode(state); var expectedCheapestCost = root.Expand().Select(child => heuristic.Evaluate(child.State)).Min(); var play = agent.FormulatePlay(state); var cheapestState = state.Successor(play); var observedCheapestCost = heuristic.Evaluate(cheapestState); Assert.AreEqual(expectedCheapestCost, observedCheapestCost); }