Example #1
0
 def remap_inputs(self, bindings):
     # TODO: speed this procedure up
     #if not any(o in bindings for o in self.instance.get_objects()):
     #    return self
     input_objects = apply_mapping(self.instance.input_objects, bindings)
     fluent_facts = [Fact(get_prefix(f), apply_mapping(get_args(f), bindings))
                     for f in self.instance.fluent_facts]
     new_instance = self.external.get_instance(input_objects, fluent_facts=fluent_facts)
     new_instance.opt_index = self.instance.opt_index
     return self.__class__(new_instance, self.output_objects, self.opt_index,
                           self.call_index, self.list_index, self.optimistic)
Example #2
0
 def remap_inputs(self, bindings):
     #if not any(o in bindings for o in self.instance.get_objects()):
     #    return self
     input_objects = apply_mapping(self.instance.input_objects, bindings)
     new_instance = self.external.get_instance(input_objects)
     new_instance.opt_index = self.instance.opt_index
     return self.__class__(new_instance, self.value, self.opt_index, self.optimistic)
Example #3
0
def get_reachable_action_params(instantiated_actions):
    reachable_action_params = defaultdict(list)
    for inst_action in instantiated_actions:
        action = inst_action.action
        parameters = [p.name for p in action.parameters]
        args = apply_mapping(parameters, inst_action.var_mapping)
        reachable_action_params[action].append(args) # TODO: does this actually do anything
    return reachable_action_params
Example #4
0
 def remap_inputs(self, bindings):
     # TODO: speed this procedure up
     #if not any(o in bindings for o in self.get_all_input_objects()):
     #    return self
     input_objects = apply_mapping(self.input_objects, bindings)
     fluent_facts = [
         substitute_fact(f, bindings) for f in self.fluent_facts
     ]
     new_instance = self.external.get_instance(input_objects,
                                               fluent_facts=fluent_facts)
     new_instance.opt_index = self.opt_index
     return new_instance
Example #5
0
def get_instance_facts(instance, node_from_atom):
    # TODO: ignores conditional effect conditions
    facts = []
    for precondition in get_literals(instance.action.precondition):
        if precondition.negated:
            continue
        args = apply_mapping(precondition.args, instance.var_mapping)
        literal = precondition.__class__(precondition.predicate, args)
        fact = fact_from_fd(literal)
        if fact in node_from_atom:
            facts.append(fact)
    return facts
Example #6
0
def substitute_fact(fact, mapping):
    return Fact(get_prefix(fact), apply_mapping(get_args(fact), mapping))
Example #7
0
def bind_action_plan(action_plan, mapping):
    return [(name, apply_mapping(args, mapping)) for name, args in action_plan]
Example #8
0
 def bind_action_plan(self, mapping):
     return [(name, apply_mapping(args, mapping))
             for name, args in self.action_plan]