Replies: 1 comment 1 reply
-
For now I have it printing a warning and add the fluent. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
In the original base API we implemented a method to check the validity of a fluent being added as a precondition or effect. The method checks that the
Fluent
andAction
share at least one object, making them relevant to eachother. In implementing Observer, I came across an interesting problem where seemingly irrelevant fluents can be classified as preconditions (or effects) despite acting on different objects, which raises the exception in the validity check.My example is a simple blocks world with 2 blocks, and the issue arises with the action "Pick up A" and the precondition "B on table". The fluent "B on table" is always true in the pre-state to "Pick up A", so it is a precondition according to observer, but because it doesn't include the object A it is invalid.
I think the solution would be to remove the validity check from
Action
and leave it all up to the extraction technique.Or if it is important that irrelevant fluents aren't added to an action, to simply not add the fluent and print a warning instead of raising an exception.
Beta Was this translation helpful? Give feedback.
All reactions