Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Domain and problem that cause parsing explosion #29

Open
rpgoldman opened this issue Jan 12, 2024 · 0 comments
Open

Domain and problem that cause parsing explosion #29

rpgoldman opened this issue Jan 12, 2024 · 0 comments

Comments

@rpgoldman
Copy link
Contributor

I thought this might be of interest, because it's a case where a 440 line domain file and
a 131-line problem file combine to yield a parsed output file that is over 14 million lines and 285 megabytes.
What's interesting is that this domain does not have conditional effects and that I ran the parser with the -k option.

The problem is in the following method for (achieve-goals) which checks that all goal facts (which are in the problem's initial state) have been achieved, and which involves both disjunction and quantification:

 (:method check-for-all-goals-done
   :parameters ()
   :task (achieve-goals)
  :precondition
  (and
    (forall (?w - waypoint)
      (imply
        (goal_communicated_soil_data ?w)
        (communicated_soil_data ?w)))
    (forall (?w - waypoint)
      (imply
        (goal_communicated_rock_data ?w)
        (communicated_rock_data ?w)))
    (forall (?m - mode ?o - objective)
      (imply
        (goal_communicated_image_data ?o ?m)
        (communicated_image_data ?o ?m))))
  :ordered-subtasks (and))

This method terminates a chain of recursive invocations of (achieve-goals).

If I delete this method (which makes the problem unsolvable), the parser output file is reduced to approximately 2700 lines.

There are only 10 facts of the goal_ predicates in the initial state, and they are static, so this explosion is not necessary.

Anyway, I thought this might be useful to you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant