Comparing to the description in the Fast Downward paper,
the procedure does not work as advertised (at least not as I understand it).
I see how different formulations can influence the weight of arcs,
but this is not directly related to the issue.
The attached problems have the exact same causal graphs (and arc weights)
except that the one with the quantified goal has an arc from one state-variable
to an axiom and from that axiom to another axiom.
Thus the ordering should be identical up to ties in cumulated weights,
but it is not.
The reason for this is that goals are hardcoded to be the highest level
(see the code pasted in below).
Example: Say we have a planning task with state-variables A and B and a goal
defined for A. Furthermore A and B are strongly connected in the causal graph
with B having higher cumulated weight than A.
According to the FastDownward paper B should then be the sink variable,
and as the goal is defined for A, B should be removed from the task.
However, what actually happens is that A becomes the sink variable with
B as an ancestor because this is "hardcoded" into the translator.
Yet, if we put a quantifier in the pddl goal description,
it is the axiom that gets to be the "hardcoded" sink variable.
Thus B is a predecessor of A and is thus removed from the task.
### from causal_graph.cc ###
if (goal_map.find(target) != goal_map.end()) {
//TODO: soll das so bleiben? (Zahl taucht in max_dag auf)
// target is goal
subgraph_edges.push_back(make_pair(new_index, 100000 + cost));
} |