Exemplo n.º 1
0
    def testMultEmpty(self):
        newpot = self.pot * Potential()
        self.assertTwoPot(newpot, self.pot)
        newpot = None

        newpot = Potential() * self.pot
        self.assertTwoPot(newpot, self.pot)
Exemplo n.º 2
0
    def testMatchPot(self):
        """all variables's dimensions are match in pot"""
        pot = [Potential() for i in range(4)]
        pot[0].variables = np.array([0])
        pot[0].card = np.array([2])
        pot[0].table = np.zeros(2)

        pot[1].variables = np.array([1])
        pot[1].card = np.array([3])
        pot[1].table = np.zeros(3)

        pot[2].variables = np.array([2, 0, 1])
        pot[2].card = np.array([4, 2, 3])
        pot[2].table = np.zeros((4, 2, 3))

        pot[3].variables = np.array([3, 1])
        pot[3].card = np.array([3])
        pot[3].table = np.zeros((2, 3))

        v, ns, con, convec = potvariables(pot)
        #pot.dispose()
        pot = None
        self.assertEqual(v, [0, 1, 2, 3])
        self.assertEqual(ns, [2, 3, 4, 2])
        self.assertEqual(con, 1)
        self.assertEqual(convec, [1, 1, 1, 1])
Exemplo n.º 3
0
def setpot(pot, evvariables, evidstates):
    #FIXME: data format needed to be unified
    vars = pot.variables
    #vars = np.array(pot.variables) # convert to ndarray format
    #evariables = np.array(evvariables)
    # convert to ndarray format
    #evidstates = np.array(evidstates) # convert to ndarray format
    #print("variables:", vars)
    table = pot.table
    nstates = pot.card
    #print("number of states:", nstates)
    #print("vars:", vars)
    #print("evvariables:", evvariables)
    intersection, iv, iev = intersect(vars, evvariables)
    #iv = np.array(iv)
    #iev = np.array(iev)
    #print("intersection:", intersection)
    #print("iv:", iv)
    #print("iev:", iev)
    #print("iv type:", type(iv))
    #print("number of intersection:", intersection.size)
    if intersection.size == 0:
        newpot = copy.copy(pot)
    else:
        newvar = setminus(vars, intersection)
        dummy, idx = ismember(newvar, vars)
        newns = nstates[idx]
        newpot = Potential()
        newpot.variables = newvar
        newpot.card = newns
        newpot.table = np.zeros(newns)
        #print("idx:", idx)
        #print("iv:", iv)
        for i in range(np.prod(newns)):
            newassign = index_to_assignment(i, newns)
            oldassign = np.zeros(nstates.size, 'int8')
            oldassign[idx] = newassign
            oldassign[iv] = evidstates
            #print("newpot.table.shape:", newpot.table.shape)
            #print("newassign:", newassign)
            #print("newassign type:", type(newassign))
            newpot.table[tuple(newassign)] = pot.table[tuple(oldassign)]

    return newpot
Exemplo n.º 4
0
 def setUp(self):
     self.pot = Potential()
     self.pot.variables = np.array([3, 2, 1])
     self.card = np.array([2, 3, 4])
     self.pot.table = np.arange(0, 24).reshape(2, 3, 4)
Exemplo n.º 5
0
variable = [Variable(None, None) for i in range(4)]

variable[burglar].name = 'burglar'
variable[burglar].domain = ['yes', 'no']

variable[earthquake].name = 'earthquake'
variable[earthquake].domain = ['yes', 'no']

variable[alarm].name = 'alarm'
variable[alarm].domain = ['yes', 'no']

variable[radio].name = 'radio'
variable[radio].domain = ['yes', 'no']

pot = [Potential() for i in range(4)]

pot[burglar].variables = np.array([burglar])
pot[burglar].card = np.array([2])
table = np.zeros(2)
table[yes] = 0.01
table[no] = 0.99
pot[burglar].table = table

pot[earthquake].variables = np.array([earthquake])
pot[earthquake].card = np.array([2])
table = np.zeros(2)
table[yes] = 0.000001
table[no] = 1 - table[yes]
pot[earthquake].table = table
Exemplo n.º 6
0
    def testMult(self):
        otherpot = Potential()
        otherpot.variables = np.array([3])
        otherpot.card = np.array([3])
        otherpot.table = np.array([0.1, 0.4, 0.5])
        answerpot = Potential()
        answerpot.variables = np.array([1, 2, 3])
        answerpot.card = np.array([2, 2, 3])
        answerpot.table = np.array([[[0.02, 0.08, 0.1], [0.08, 0.32, 0.4]],
                                    [[0.06, 0.24, 0.3], [0.04, 0.16, 0.2]]])
        self.assertTwoPot(self.pot * otherpot, answerpot)

        otherpot = Potential()
        otherpot.variables = np.array([3, 1])
        otherpot.card = np.array([3, 2])
        otherpot.table = np.array([[0.2, 0.3], [0.2, 0.2], [0.6, 0.5]])
        answerpot = Potential()
        answerpot.variables = np.array([1, 2, 3])
        answerpot.card = np.array([2, 2, 3])
        answerpot.table = np.array([[[0.04, 0.04, 0.12], [0.16, 0.16, 0.48]],
                                    [[0.18, 0.12, 0.3], [0.12, 0.08, 0.2]]])
        self.assertTwoPot(self.pot * otherpot, answerpot)
Exemplo n.º 7
0
 def setUp(self):
     self.pot = Potential()
     self.pot.variables = np.array([2, 1])
     self.pot.card = np.array([2, 2])
     self.pot.table = np.array([[0.2, 0.6], [0.8, 0.4]])
Exemplo n.º 8
0
 def testDiffVaTa(self):
     pot = [Potential(np.array([1, 2]), np.zeros((3, 2, 2)))]
     self.assertRaises(ValueError, potvariables, pot)
Exemplo n.º 9
0
 def testNoneVariables(self):
     pot = [Potential(np.array([]), np.zeros(3))]
     self.assertRaises(ValueError, potvariables, pot)
Exemplo n.º 10
0
    def testMult(self):
        otherpot = Potential()
        otherpot.variables = np.array([3])
        otherpot.card = np.array([3])
        otherpot.table = np.array([0.1, 0.4, 0.5])
        answerpot = Potential()
        answerpot.variables = np.array([1, 2, 3])
        answerpot.card = np.array([2, 2, 3])
        answerpot.table = np.array([[[0.02, 0.08, 0.1],
                                     [0.08, 0.32, 0.4]],
                                    [[0.06, 0.24, 0.3],
                                     [0.04, 0.16, 0.2]]])
        self.assertTwoPot(self.pot * otherpot, answerpot)

        otherpot = Potential()
        otherpot.variables = np.array([3, 1])
        otherpot.card = np.array([3, 2])
        otherpot.table = np.array([[0.2, 0.3], [0.2, 0.2], [0.6, 0.5]])
        answerpot = Potential()
        answerpot.variables = np.array([1, 2, 3])
        answerpot.card = np.array([2, 2, 3])
        answerpot.table = np.array([[[0.04, 0.04, 0.12],
                                     [0.16, 0.16, 0.48]],
                                    [[0.18, 0.12, 0.3],
                                     [0.12, 0.08, 0.2]]])
        self.assertTwoPot(self.pot * otherpot, answerpot)
Exemplo n.º 11
0
#!/usr/bin/env python

# this is a test case for sample codes

from brml.potential import Potential
from brml.variable import Variable

p = Potential(1, 1)
print("var POTENTIAL.p created")
print("p.variable = ", p.variables)
print("p.table = ", p.table)

v = Variable('butler', ['hehe', 'heihei'])
# v = variable('butler',['murderer','not murderer'])
print("var VARIABLE.v created")
print("v.name = ", v.name)
print("v.domain = ", v.domain)