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]);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }