def _init_manager(self, var_count):
     if isinstance(var_count, sdd.SddManager):
         self.manager = var_count.copy(list(var_count.vars))
     if isinstance(var_count, sdd.Vtree):
         self.manager = sdd.SddManager.from_vtree(var_count)
     else:
         self.manager = sdd.SddManager(var_count=var_count)
Esempio n. 2
0
    def __init__(self, varcount=0, auto_gc=False, var_constraint=None):
        """Create a new SDD manager.

        :param varcount: number of initial variables
        :type varcount: int
        :param auto_gc: use automatic garbage collection and minimization
        :type auto_gc: bool
        :param var_constraint: A variable ordering constraint. Currently only x_constrained namedtuple are allowed.
        :type var_constraint: x_constrained
        """
        DDManager.__init__(self)
        if varcount is None or varcount <= 0:
            varcount = 1
        vtree = None
        if var_constraint is not None and varcount > 1:
            x_constraint = self._to_x_constrained_list(varcount,
                                                       var_constraint)
            vtree = Vtree.new_with_X_constrained(var_count=varcount,
                                                 is_X_var=x_constraint,
                                                 vtree_type="balanced")

        self.__manager = sdd.SddManager(var_count=varcount,
                                        auto_gc_and_minimize=auto_gc,
                                        vtree=vtree)
        self._assigned_varcount = 0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.translated_probfact_sets = dict()
     self.tagged_sets = []
     self.var_count = 0
     symbols_seen = set()
     for k, v in self.symbol_table.items():
         if not isinstance(v, (DeterministicFactSet, ProbabilisticFactSet,
                               ProbabilisticChoiceSet)):
             continue
         symbol = v.relation
         if symbol in symbols_seen:
             continue
         n = len(self.symbol_table[symbol].value)
         self.var_count += n
         symbols_seen.add(symbol)
     self.manager = sdd.SddManager(var_count=self.var_count,
                                   auto_gc_and_minimize=False)
     self.symbols_to_literals = dict()
     self.literals_to_symbos = dict()
     self.var_count = self.manager.var_count()
     self.positive_weights = []
     self._current_var = 1