Exemple #1
0
        public void AddClauseTest()
        {
            var p      = new Problem("Add clause test");
            var clause = p.AddClause("x", "y");

            Assert.AreEqual("x", p.KeyOf(clause, 0).Name);
            Assert.AreEqual("y", p.KeyOf(clause, 1));
        }
Exemple #2
0
        //Test wp in regular constrains
        public void CardinalityConstrainTest()
        {
            var p      = new Problem("cardinality");
            var clause = p.AddClause(2, 4, "w", "x", "y", "z");

            p.AddClause(0, 2, "x", "y");
            p.AddClause("w");
            p.AddClause(0, 3, "w", "x", "y");
            p.AddClause(0, 2, "x", "y");
            p.AddClause("w");
            for (int i = 0; i < 10; i++)
            {
                var m     = p.Solve();
                var count = 0;
                if (m.IsTrue("w"))
                {
                    count++;
                }
                if (m.IsTrue("x"))
                {
                    count++;
                }
                if (m.IsTrue("y"))
                {
                    count++;
                }
                if (m.IsTrue("z"))
                {
                    count++;
                }


                Assert.AreEqual("w", p.KeyOf(clause, 0).Name);
            }
        }
Exemple #3
0
        //Test if noise pushed up with Big pseudo bool constrains
        public void BigConstrainTest4()
        {
            var prob   = new Problem("bigCardinality3");
            var clause = prob.AddClause(1, 1, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ab", "cd", "ac", "ad");

            prob.AddClause(1, 1, "ef", "eg", "hi", "hl", "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj", "kk", "ll", "mm", "nn", "oo", "pp", "qq", "rr", "ss", "tt", "uu", "vv", "ww", "xx", "yy", "zz");
            prob.AddClause(1, 1, "aab", "abb", "ccd", "ddc", "aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg", "hhh", "iii", "jjj", "kkk", "lll", "mmm", "nnn", "ooo", "ppp", "qqq", "rrr", "sss", "ttt", "uuu", "vvv", "www", "xxx", "yyy", "zzz");
            //prob.AddClause(1, 1, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ab", "cd", "ac", "ad");
            //prob.AddClause(1, 1, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ab", "cd", "ac", "ad");
            for (int i = 0; i < 3; i++)
            {
                var m     = prob.Solve();
                var count = 0;
                if (m.IsTrue("w"))
                {
                    count++;
                }
                if (m.IsTrue("x"))
                {
                    count++;
                }
                if (m.IsTrue("y"))
                {
                    count++;
                }
                if (m.IsTrue("z"))
                {
                    count++;
                }

                Assert.AreEqual("a", prob.KeyOf(clause, 0).Name);
            }
        }
Exemple #4
0
        //Test wp under regular pseudo bool constrains
        public void BigConstrainTest5()
        {
            var p      = new Problem("cardinality");
            var clause = p.AddClause(1, 1, "w", "x", "y", "z");

            p.AddClause("w");
            p.AddClause(1, 1, "a", "b", "c");
            p.AddClause(1, 1, "e", "f");
            p.AddClause(1, 1, "e");
            for (int i = 0; i < 3; i++)
            {
                var m     = p.Solve();
                var count = 0;
                if (m.IsTrue("w"))
                {
                    count++;
                }
                if (m.IsTrue("x"))
                {
                    count++;
                }
                if (m.IsTrue("y"))
                {
                    count++;
                }
                if (m.IsTrue("z"))
                {
                    count++;
                }

                Assert.AreEqual("w", p.KeyOf(clause, 0).Name);
            }
        }
Exemple #5
0
        //Test if noise pushed up with Big constrains
        public void BigConstrainTest3()
        {
            var prob   = new Problem("bigCardinality3");
            var clause = prob.AddClause(10, 29, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ll", "mm", "nn", "oo");

            prob.AddClause(20, 29, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "p", "q", "r", "s", "t", "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj", "pp", "qq", "rr", "ss", "tt");
            prob.AddClause(10, 29, "a", "b", "c", "d", "e", "f", "g", "h", "i", "t", "u", "v", "w", "x", "y", "z", "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj", "kk", "ll", "mm", "nn", "oo");

            for (int i = 0; i < 5; i++)
            {
                var m     = prob.Solve();
                var count = 0;
                if (m.IsTrue("w"))
                {
                    count++;
                }
                if (m.IsTrue("x"))
                {
                    count++;
                }
                if (m.IsTrue("y"))
                {
                    count++;
                }
                if (m.IsTrue("z"))
                {
                    count++;
                }

                //Assert.AreEqual(3, count);
                //Assert.IsTrue(m.IsTrue("w"));
                Assert.AreEqual("a", prob.KeyOf(clause, 0).Name);
            }
        }