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)
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)
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
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
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
def substitute_fact(fact, mapping): return Fact(get_prefix(fact), apply_mapping(get_args(fact), mapping))
def bind_action_plan(action_plan, mapping): return [(name, apply_mapping(args, mapping)) for name, args in action_plan]
def bind_action_plan(self, mapping): return [(name, apply_mapping(args, mapping)) for name, args in self.action_plan]