drwiner / Pyperplan

Lightweight STRIP Planner written for Python 3
1 stars 0 forks source link

Error parsing PDDL file #1

Open paulaksm opened 6 years ago

paulaksm commented 6 years ago

Failed to parse Blocksworld PDDL file using only STRIPS as requirement blocksworld.zip . (Both domain and task files are attached.)

Traceback (most recent call last): File "pyperplan.py", line 255, in <module> use_preferred_ops=use_preferred_ops) File "pyperplan.py", line 171, in search_plan problem = _parse(domain_file, problem_file) File "pyperplan.py", line 116, in _parse domain = parser.parse_domain() File "/home/pksm/Pyperplan/src/pddl/parser.py", line 796, in parse_domain domAST.accept(visitor) File "/home/pksm/Pyperplan/src/pddl/tree_visitor.py", line 68, in accept m(self) File "/home/pksm/Pyperplan/src/pddl/tree_visitor.py", line 215, in visit_domain_def a.accept(self) File "/home/pksm/Pyperplan/src/pddl/tree_visitor.py", line 68, in accept m(self) File "/home/pksm/Pyperplan/src/pddl/tree_visitor.py", line 322, in visit_action_stmt node.precond.accept(self) File "/home/pksm/Pyperplan/src/pddl/tree_visitor.py", line 68, in accept m(self) File "/home/pksm/Pyperplan/src/pddl/tree_visitor.py", line 374, in visit_precondition_stmt ' used in precondition of action') pddl.tree_visitor.SemanticError: 'Error unknown predicate not used in precondition of action'

drwiner commented 6 years ago

I believe it's because you have "not" as a precondition, which is unallowed because this lightweight planner (https://bitbucket.org/malte/pyperplan/overview) does not allow negative preconditions. However, you can add negative preconditions using the round-about method of creating a predicate that symbolizes the negative predicate, as in the OpenStacks domain in the benchmarks. predicates( ... not-made...) ... (:action make-product-p1 :parameters () :precondition (and (not-made p1)(started o2)) :effect (and (not (not-made p1)) (made p1)) )

Finally, using only the STRIPS requirement, you may have to declare the "=" predicate in the domain file.