abcorrea / powerlifted

Powerlifted Planner
GNU General Public License v3.0
28 stars 12 forks source link

Translator loops infinitely when a hierarchy of types is used. #49

Closed SmartMario1 closed 7 months ago

SmartMario1 commented 7 months ago

Problem

When using a hierarchy of types, the planner infinitely loops. The loop occurs during the "Normalizing task" phase. I've attached a very small planning problem in which this issue occurs: issue_problem.zip.

Cause

When using a keyboard interrupt to stop execution, the function it is looping in is revealed to be "remove_trivially_inapplicable_actions" in "/builds/release/translator/normalize.py". The specific loop that goes on indefinitely can be seen in the following screenshot: image After printing the value "type_name", it is revealed that it tries to find the parent of "locatable" in the graph, but somehow ends up with the empty string. Then the empty string also gets the empty string back and thus, as we never get the name 'object', the translator loops forever.

abcorrea commented 7 months ago

Hi,

Thanks for pointing that out!

I pushed a bugfix (commit 7bfa0cc, master branch). Could you try it out?

The problem was that the planner assumed that all supertypes (in this case, locatable) would be mentioned explicitly in the types section of the domain file. So the while-loop was expecting to find a supertype object at some point. The bugfix simply adds the supertype object to the hierarchy when necessary. (Unfortunately, we cannot easily get rid of this supertype, as other parts of the planner assume the existence of at least one type.)

Let me know if you find other bugs or if the problem was not solved!

SmartMario1 commented 7 months ago

The issue was resolved! Thanks for the quick fix!