public void test_iterateOverTable_fixedValues()
        {
            RandVar          aRV   = new RandVar("A", new BooleanDomain());
            RandVar          bRV   = new RandVar("B", new BooleanDomain());
            RandVar          cRV   = new RandVar("C", new BooleanDomain());
            ProbabilityTable ptABC = new ProbabilityTable(new double[] {
                // A = true, B = true, C = true
                1.0,
                // A = true, B = true, C = false
                10.0,
                // A = true, B = false, C = true
                100.0,
                // A = true, B = false, C = false
                1000.0,
                // A = false, B = true, C = true
                10000.0,
                // A = false, B = true, C = false
                100000.0,
                // A = false, B = false, C = true
                1000000.0,
                // A = false, B = false, C = false
                10000000.0
            }, aRV, bRV, cRV);

            ICollection <double> answer = CollectionFactory.CreateQueue <double>();

            ProbabilityTable.ProbabilityTableIterator pti = new iter(answer);

            answer.Clear();
            ptABC.iterateOverTable(pti, new AssignmentProposition(aRV, true));
            Assert.AreEqual(1111.0, sumOf(answer), DELTA_THRESHOLD);

            answer.Clear();
            ptABC.iterateOverTable(pti, new AssignmentProposition(aRV, false));
            Assert.AreEqual(11110000.0, sumOf(answer), DELTA_THRESHOLD);

            answer.Clear();
            ptABC.iterateOverTable(pti, new aima.net.probability.proposition.AssignmentProposition(bRV, true));
            Assert.AreEqual(110011.0, sumOf(answer), DELTA_THRESHOLD);

            answer.Clear();
            ptABC.iterateOverTable(pti, new AssignmentProposition(bRV, false));
            Assert.AreEqual(11001100.0, sumOf(answer), DELTA_THRESHOLD);

            answer.Clear();
            ptABC.iterateOverTable(pti, new AssignmentProposition(cRV, true));
            Assert.AreEqual(1010101.0, sumOf(answer), DELTA_THRESHOLD);

            answer.Clear();
            ptABC.iterateOverTable(pti, new AssignmentProposition(cRV, false));
            Assert.AreEqual(10101010.0, sumOf(answer), DELTA_THRESHOLD);

            answer.Clear();
            ptABC.iterateOverTable(pti, new AssignmentProposition(bRV, true),
                                   new AssignmentProposition(cRV, true));
            Assert.AreEqual(10001.0, sumOf(answer), DELTA_THRESHOLD);
        }
Esempio n. 2
0
 iter = selectMoveSquareMoves(iter, parts.MoveSquare);
Esempio n. 3
0
 iter = selectFromSquareMoves(iter, parts.from);
 Write(ref state, fieldNumber, wireType, ref iter, pairSerializer);