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)
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