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)); }
//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); } }
//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); } }
//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); } }
//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); } }