Example #1
0
 def compute_join_cost(self, left_joinee, right_joinee):
     left_vars = pddl_to_prolog.get_variables([left_joinee])
     right_vars = pddl_to_prolog.get_variables([right_joinee])
     if len(left_vars) > len(right_vars):
         left_vars, right_vars = right_vars, left_vars
     common_vars = left_vars & right_vars
     return (len(left_vars) - len(common_vars), len(right_vars) - len(common_vars), -len(common_vars))
Example #2
0
 def compute_join_cost(self, left_joinee, right_joinee):
     left_vars = pddl_to_prolog.get_variables([left_joinee])
     right_vars = pddl_to_prolog.get_variables([right_joinee])
     if len(left_vars) > len(right_vars):
         left_vars, right_vars = right_vars, left_vars
     common_vars = left_vars & right_vars
     return (len(left_vars) - len(common_vars),
             len(right_vars) - len(common_vars), -len(common_vars))
Example #3
0
def get_connected_conditions(conditions):
    agraph = graph.Graph(conditions)
    var_to_conditions = {var: [] for var in get_variables(conditions)}
    for cond in conditions:
        for var in cond.args:
            if var[0] == "?":
                var_to_conditions[var].append(cond)

    # Connect conditions with a common variable
    for var, conds in var_to_conditions.items():
        for cond in conds[1:]:
            agraph.connect(conds[0], cond)
    return sorted(map(sorted, agraph.connected_components()))
Example #4
0
def get_connected_conditions(conditions):
    agraph = graph.Graph(conditions)
    var_to_conditions = dict([(var, []) for var in get_variables(conditions)])
    for cond in conditions:
        for var in cond.args:
            if isinstance(var, pddl.Variable):
                var_to_conditions[var].append(cond)

    # Connect conditions with a common variable
    for var, conds in var_to_conditions.iteritems():
        for cond in conds[1:]:
            agraph.connect(conds[0], cond)
    return agraph.connected_components()
Example #5
0
def get_connected_conditions(conditions):
    agraph = graph.Graph(conditions)
    var_to_conditions = dict([(var, [])
                              for var in get_variables(conditions)])
    for cond in conditions:
        for var in cond.args:
            if var[0] == "?":
                var_to_conditions[var].append(cond)

    # Connect conditions with a common variable
    for var, conds in var_to_conditions.items():
        for cond in conds[1:]:
            agraph.connect(conds[0], cond)
    return sorted(map(sorted, agraph.connected_components()))
Example #6
0
def get_connected_conditions(conditions):
  agraph = graph.Graph(conditions)
  var_to_conditions = dict([(var, [])
                            for var in get_variables(conditions)])
  for cond in conditions:
    for var in cond.args:
      if isinstance(var,pddl.Variable):
        var_to_conditions[var].append(cond)

  # Connect conditions with a common variable
  for var, conds in var_to_conditions.iteritems():
    for cond in conds[1:]:
      agraph.connect(conds[0], cond)
  return agraph.connected_components()
Example #7
0
def project_rule(rule, conditions, name_generator):
    predicate = next(name_generator)
    effect_variables = set(rule.effect.args) & get_variables(conditions)
    effect = pddl.Atom(predicate, sorted(effect_variables))
    projected_rule = Rule(conditions, effect)
    return projected_rule
Example #8
0
def project_rule(rule, conditions, name_generator):
    predicate = next(name_generator)
    effect_variables = set(rule.effect.args) & get_variables(conditions)
    effect = pddl.Atom(predicate, sorted(effect_variables))
    projected_rule = Rule(conditions, effect)
    return projected_rule