-
Notifications
You must be signed in to change notification settings - Fork 91
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
Improvements to the evaluate function focusing on optimizing derived predicates and existential preconditions resolution #330
base: rolling
Are you sure you want to change the base?
Conversation
Possible improvements:
|
When the evaluate function is called with This is a crucial issue when generating the plan graph.
Then:
|
Actually, I think the State class shouldn't contain
|
Sorry for the conflicts, @Rezenders . There were some things to fix Please, merge, or better, rebase |
Ideas to improve BT generator algorithm:
|
Ok, no worries :) |
Adding an <action, state> cache reduced the time for creating a graph from around 145 seconds to 13 seconds in the following test: |
This was required due to conflicts between the Graph structure defined in BTBuilder and the new Graph class in plansys2_core
The derived predicates graph algorithm described in #328 is implemented. The time for creating the plan graph is now around 1.3 seconds. Some improvements can still be made but I will work on it later. For example, adding a <action, state> cache in the BT nodes. I am sorry that the PR got super long, it will probably be annoying to review it. |
This PR is a draft to solve issue #328.
I implemented the algorithm described by @tobiaswjohn for most of the Plansys2 Node types.
This version is much faster than the previous version in the main branch. It takes around 37643ms to solve all derived predicates in this PDDL formulation, whereas it wouldn't finish with the previous version of the algorithm.
The evaluate function could be further improved by:
I still need to adjust the other packages to make it compatible with the new evaluation and problem expert.
I didn't adjust the evaluation for anything related to
functions
. If you think this approach would be mergeable when complete, I can adjust it to handlefunctions
. But right now, I don't need it for my project, so I will focus on finishing what I need first.