public void Test_Compare() { GameDefinition gd = XmlSerializerExt.Deserialize <GameDefinition>( Props.Global.Expand("${bds.DataDir}ai.pkr.metastrategy/kuhn.gamedef.xml")); string testDir = UTHelper.GetTestResourceDir(Assembly.GetExecutingAssembly()); string strFile = Path.Combine(testDir, "eq-KunhPoker-0-s.xml"); StrategyTree st0 = XmlToStrategyTree.Convert(strFile, gd.DeckDescr); StrategyTree st1 = XmlToStrategyTree.Convert(strFile, gd.DeckDescr); CompareStrategyTrees comparer = new CompareStrategyTrees { IsVerbose = true }; comparer.Compare(st0, st1); for (int p = 0; p < 2; ++p) { Assert.AreEqual(0, comparer.SumProbabDiff[p]); Assert.AreEqual(0, comparer.MaxProbabDiff[p]); Assert.AreEqual(0, comparer.AverageProbabDiff[p]); Assert.AreEqual(13, comparer.PlayerNodesCount[p]); } // Now change a probability Assert.IsTrue(st0.Nodes[4].Probab <= 0.9); Assert.IsTrue(st0.Nodes[9].Probab >= 0.1); st0.Nodes[4].Probab += 0.1; st0.Nodes[9].Probab -= 0.1; comparer.Compare(st0, st1); Assert.AreEqual(0.2, comparer.SumProbabDiff[0], 1e-8); Assert.AreEqual(0.1, comparer.MaxProbabDiff[0], 1e-8); Assert.AreEqual(0.2 / 13, comparer.AverageProbabDiff[0], 1e-8); Assert.AreEqual(13, comparer.PlayerNodesCount[0]); Assert.AreEqual(0, comparer.SumProbabDiff[1]); Assert.AreEqual(0, comparer.MaxProbabDiff[1]); Assert.AreEqual(0, comparer.AverageProbabDiff[1]); Assert.AreEqual(13, comparer.PlayerNodesCount[1]); }
public void Test_Multithreaded_LeducHe() { bool isVerbose = false; var testParams = new GameDefParams(this, "leduc-he.gamedef.xml", 0.002); StrategyTree[] treesSt = RunFictPlay(testParams, false, false, new int[] { 10000, -1 }, s => { s.IsVerbose = isVerbose; s.ThreadsCount = 0; }); StrategyTree[] treesMt = RunFictPlay(testParams, false, false, new int[] { 10000, -1 }, s => { s.IsVerbose = isVerbose; s.ThreadsCount = 7; }); for (int p = 0; p < testParams.GameDef.MinPlayers; ++p) { CompareStrategyTrees cmp = new CompareStrategyTrees { IsVerbose = isVerbose }; cmp.Compare(treesSt[p], treesMt[p]); Assert.AreEqual(new double[] { 0, 0 }, cmp.SumProbabDiff); } }
public void Test_Snapshot_Kuhn() { bool isVerbose = false; var testParams = new GameDefParams(this, "kuhn.gamedef.xml", 0.001); testParams.Name = "Kunh-NoSh"; StrategyTree[] trees = RunFictPlay(testParams, false, false, new int[] { -1 }, s => { s.IsVerbose = isVerbose; s.ThreadsCount = 0; }); testParams.Name = "Kunh-Sh"; StrategyTree[] treesSn = RunFictPlay(testParams, false, false, new int[] { 400, -1 }, s => { s.IsVerbose = isVerbose; s.ThreadsCount = 0; }); for (int p = 0; p < testParams.GameDef.MinPlayers; ++p) { CompareStrategyTrees cmp = new CompareStrategyTrees { IsVerbose = isVerbose }; cmp.Compare(trees[p], treesSn[p]); Assert.AreEqual(new double[] { 0, 0 }, cmp.SumProbabDiff); } }
public void Test_Snapshot_MiniFl() { bool isVerbose = false; var testParams = new GameDefParams(this, "mini-fl.gamedef.xml", 0.001); // Use a big iteration count for the snapshot, it is a good test for // initial setting of varless nodes. StrategyTree[] trees = RunFictPlay(testParams, false, false, new int[] { -1 }, s => { s.IsVerbose = isVerbose; s.ThreadsCount = 0; }); StrategyTree[] treesSn = RunFictPlay(testParams, false, false, new int[] { 10000, -1 }, s => { s.IsVerbose = isVerbose; s.ThreadsCount = 0; }); for (int p = 0; p < testParams.GameDef.MinPlayers; ++p) { CompareStrategyTrees cmp = new CompareStrategyTrees { IsVerbose = isVerbose }; cmp.Compare(trees[p], treesSn[p]); Assert.AreEqual(new double[] { 0, 0 }, cmp.SumProbabDiff); } }