> In landmark_cost_partitioning_heuristic.cc we have an override of the default with the method
> that returns always true, i.e. the same as the default implementation of Evaluator.
>
> In case we want to keep the default implementation of Evaluator we should remove such
> methods from the concrete classes.
Right. It exists for historical reasons: "landmark_cost_partitioning_heuristic" and "landmark_sum_heuristic" are both split off from a common heuristic, and when the split happened, the code for this method for "landmark_cost_partitioning_heuristic" apparently simplified to "true", and whoever did the split at the time didn't realize that this is already the inherited behaviour.
For what it's worth, the implementatino of dead_ends_is_reliable for these two heuristics is very suspect. I don't think there is a good conceptual reason why the two heuristics should behave differently in this regard. This seems to be a holdover from the old broken progression code, but now both should progress correctly, and whether or not they are safe should only depend on whether the used landmark factories provide the required guarantees. There should be no difference between the two heuristics regarding safety, they should return infinity for exactly the same states.
|