Exemplo n.º 1
0
        public void Test_Convert()
        {
            GameDefinition gd = XmlSerializerExt.Deserialize <GameDefinition>(
                Props.Global.Expand("${bds.DataDir}ai.pkr.metastrategy/kuhn.gamedef.xml"));

            StrategyTree st = TreeHelper.CreateStrategyTree(gd, 0);

            st.Nodes[4].Probab = 0.4;
            st.Nodes[9].Probab = 0.6;
            st.Nodes[7].Probab = 0.3;
            st.Nodes[8].Probab = 0.7;

            st.Nodes[13].Probab = 0.5;
            st.Nodes[18].Probab = 0.5;
            st.Nodes[16].Probab = 0.1;
            st.Nodes[17].Probab = 0.9;

            st.Nodes[22].Probab = 0.2;
            st.Nodes[27].Probab = 0.8;
            st.Nodes[25].Probab = 0.5;
            st.Nodes[26].Probab = 0.5;

            string error;

            Assert.IsTrue(VerifyCondStrategy.Verify(st, 0, out error), error);

            ConvertCondToAbs.Convert(st, 0);

            Assert.IsTrue(VerifyAbsStrategy.Verify(st, 0, 1e-7, out error), error);

            Assert.AreEqual(0.4, st.Nodes[4].Probab, 1e-7);
            Assert.AreEqual(0.6, st.Nodes[9].Probab, 1e-7);
            Assert.AreEqual(0.12, st.Nodes[7].Probab, 1e-7);
            Assert.AreEqual(0.28, st.Nodes[8].Probab, 1e-7);

            Assert.AreEqual(0.5, st.Nodes[13].Probab, 1e-7);
            Assert.AreEqual(0.5, st.Nodes[18].Probab, 1e-7);
            Assert.AreEqual(0.05, st.Nodes[16].Probab, 1e-7);
            Assert.AreEqual(0.45, st.Nodes[17].Probab, 1e-7);

            Assert.AreEqual(0.2, st.Nodes[22].Probab, 1e-7);
            Assert.AreEqual(0.8, st.Nodes[27].Probab, 1e-7);
            Assert.AreEqual(0.1, st.Nodes[25].Probab, 1e-7);
            Assert.AreEqual(0.1, st.Nodes[26].Probab, 1e-7);
        }
        public void Test_Leduc()
        {
            GameDefinition gd = XmlSerializerExt.Deserialize <GameDefinition>(
                Props.Global.Expand("${bds.DataDir}ai.pkr.metastrategy/leduc-he.gamedef.xml"));

            for (_heroPos = 0; _heroPos < gd.MinPlayers; ++_heroPos)
            {
                StrategyTree st = CreateValidStrategy(gd);

                string fileName = Path.Combine(_outDir, string.Format("{0}-{1}.gv", gd.Name, _heroPos));
                VisStrategyTree.Show(st, fileName);

                string errorText;
                Assert.IsTrue(VerifyCondStrategy.Verify(st, _heroPos, out errorText));

                // Now make some errors.
                if (_heroPos == 0)
                {
                    st.Nodes[339].Probab += 0.1;
                    Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText));
                    string expTextBegin = string.Format("Node {0}:", 291);
                    Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length));
                    st.Nodes[339].Probab -= 0.1;

                    st.Nodes[348].Probab += 0.1;
                    Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText));
                    expTextBegin = string.Format("Node {0}:", 345);
                    Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length));
                }
                else
                {
                    st.Nodes[435].Probab += 0.1;
                    Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText));
                    string expTextBegin = string.Format("Node {0}:", 387);
                    Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length));
                    st.Nodes[435].Probab -= 0.1;

                    st.Nodes[432].Probab += 0.1;
                    Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText));
                    expTextBegin = string.Format("Node {0}:", 429);
                    Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length));
                }
            }
        }
Exemplo n.º 3
0
        static int Main(string[] args)
        {
            if (!Parser.ParseArgumentsWithUsage(args, _cmdLine))
            {
                return(1);
            }

            if (_cmdLine.DebuggerLaunch)
            {
                Debugger.Launch();
            }

            StrategyTree st = StrategyTree.Read <StrategyTree>(_cmdLine.StrategyTree);

            if (_cmdLine.Verify)
            {
                string error = "";
                bool   isOk  = true;
                if (_cmdLine.IsAbsolute)
                {
                    Console.Write("Verifying absolute strategy ...");
                    isOk = VerifyAbsStrategy.Verify(st, _cmdLine.HeroPosition, 1e-7, out error);
                }
                else
                {
                    Console.Write("Verifying conditional strategy ...");
                    isOk = VerifyCondStrategy.Verify(st, _cmdLine.HeroPosition, 1e-7, out error);
                }
                if (isOk)
                {
                    Console.WriteLine(" OK");
                }
                else
                {
                    Console.WriteLine(" Verification failed: {0}", error);
                    return(1);
                }
            }

            AnalyzeStrategyTree.AnalyzeS(st, _cmdLine.IsAbsolute, _cmdLine.HeroPosition);

            return(0);
        }