Esempio n. 1
0
def parse_temporal_domain(domain_pddl):
    translate_path = os.path.join(get_tfd_path(), 'translate/') # tfd & temporal-FD
    prefixes = ['pddl', 'normalize']
    deleted = delete_imports(prefixes)
    sys.path.insert(0, translate_path)
    import pddl
    import normalize
    temporal_domain = TemporalDomain(*pddl.tasks.parse_domain(pddl.parser.parse_nested_list(domain_pddl.splitlines())))
    name, requirements, constants, predicates, types, functions, actions, durative_actions, axioms = temporal_domain
    fluents = normalize.get_fluent_predicates(temporal_domain)

    sys.path.remove(translate_path)
    delete_imports(prefixes)
    sys.modules.update(deleted) # This is important otherwise classes are messed up
    import pddl
    import pddl_parser
    assert not actions

    simple_from_durative = simple_from_durative_action(durative_actions, fluents)
    simple_actions = [action for triplet in simple_from_durative.values() for action in triplet]

    requirements = pddl.Requirements([])
    types = [pddl.Type(ty.name, ty.basetype_name) for ty in types]
    pddl_parser.parsing_functions.set_supertypes(types)
    predicates = [pddl.Predicate(p.name, p.arguments) for p in predicates]
    constants = convert_parameters(constants)
    axioms = list(map(convert_axiom, axioms))

    return SimplifiedDomain(name, requirements, types, {ty.name: ty for ty in types}, constants,
                            predicates, {p.name: p for p in predicates}, functions,
                            simple_actions, axioms, simple_from_durative, domain_pddl)
Esempio n. 2
0
def get_fluent_facts(task, model):
  fluent_predicates = normalize.get_fluent_predicates(task)
  return set([fact for fact in model
              if fact.predicate in fluent_predicates])
def get_fluent_facts(task, model):
  fluent_predicates = normalize.get_fluent_predicates(task)
  return set([fact for fact in model
              if fact.predicate in fluent_predicates])