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

Update axiom documentation #233

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

salome-eriksson
Copy link
Contributor

Update documentation for axiom support and safety properties for heuristics that have the new axioms option.
Furthermore, removed the axioms option from landmark_cost_partitioning_heuristic since it does not support axioms.

@@ -17,9 +17,9 @@ class LandmarkSumHeuristic : public LandmarkHeuristic {
int get_heuristic_value(const State &ancestor_state) override;
public:
LandmarkSumHeuristic(
tasks::AxiomHandlingType axioms,
Copy link
Contributor Author

@salome-eriksson salome-eriksson Sep 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not happy about the order here because landmark heuristics always had the factory as first option which has no default value. Now we have axioms as first option here with a default value, meaning we cannot write landmark_sum(lm_rhw()) anymore and instead need to write landmark_sum(lm_factory=lm_rhw())

This is also the reason the tests fail at the moment, but before I change the parameter strings anywhere I'd be interested if someone comes up with a better option.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that landmark_sum(lm_rhw()) is more user friendly than landmark_sum(lm_factory=lm_rhw()).

One issue is the parameter test that checks if the parameters in the cc constructor match the parameters in the documentation of the feature.

If we do tasks::add_axioms_option_to_feature(*this); add_landmark_heuristic_options_to_feature( *this, "landmark_sum_heuristic"); then the test expects the AxiomHandlingType first. If we do it the other way around it expects the AxiomHandlingType in the very end.

A third option would be to not call add_landmark_heuristic_options_to_feature( *this, "landmark_sum_heuristic");
but to implement add_landmark_sum_heuristic_options_to_feature( *this);
That does adds the options (that differ from Heuristic) one by one, as add_landmark_heuristic_options_to_feature does but in the order we prefer and with a call to tasks::add_axioms_option_to_feature at the right moment.

"conditional effects when using a LandmarkFactory "
"not supporting them");
"yes except on tasks with conditional effects when "
"using a LandmarkFactory not supporting them");
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically we still have a bug that could maybe? lead to unsafe estimates on tasks with axioms, namely the one reported in issue247 and issue442. The short version is that we can introduce incorrect greedy-necessary orderings when derived variables are present. Before updating the landmark progression this could lead to incorrect dead-ends. With the new progression method this doesn't happen anymore on the tasks reported in these issues, but we're not entirely sure if it's guaranteed to not happen anymore.

@SimonDold
Copy link
Contributor

SimonDold commented Oct 2, 2024

Looks good to me

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

Successfully merging this pull request may close these issues.

2 participants