Beispiel #1
0
 def __init__(self, formula, mrf, parent=None, assignment=None):
     """
     Instantiates the formula grounding for a given
     - formula:    the formula grounded in this node
     - mrf:        the MRF associated to this problem
     - parent:     the formula grounding this fg has been created from
     - assignment: dictionary mapping variables to their values
     """
     self.mrf = mrf
     self.formula = formula
     self.parent = Ref(parent)
     self.trueGroundings = Number(0.)
     self.processed = Boolean(False)
     if parent is None:
         self.depth = 0
     else:
         self.depth = parent.depth + 1
     self.children = List()
     self.assignment = assignment
     self.domains = ListDict()
     if parent is None:
         for var in self.formula.getVariables(self.mrf.mln):
             self.domains.extend(
                 var,
                 list(self.mrf.domains[self.formula.getVarDomain(
                     var, self.mrf.mln)]))
     else:
         for (v, d) in parent.domains.iteritems():
             self.domains.extend(v, list(d))
     self.domains.epochEndsHere()
Beispiel #2
0
 def __init__(self, formula, mrf):
     """
     formula might be a formula or a FormulaGrounding instance.
     """
     self.mrf = mrf
     self.costs = .0
     if isinstance(formula, Logic.Formula):
         self.formula = formula
         self.root = FormulaGrounding(formula, mrf)
     elif isinstance(formula, FormulaGrounding):
         self.root = formula
         self.formula = formula.formula
     self.values_processed = ListDict()
     self.variable_stack = List(None)
     self.var2fgs = ListDict({None: [self.root]})
     self.gndAtom2fgs = ListDict()
     self.manipulatedFgs = List()