If I recall our code correctly, in the presence of conditional effects, our FF
heuristic's relaxed plans are not actually guaranteed to be proper relaxed plans
(in the sense that they solve the relaxation).
Specifically, in cases where the same operator is needed twice, we only count it
once. Here's such an example:
Facts {a, b, c}
initial state I = {a} (using STRIPS-ish set notation)
goal set G = {c}
operator set O = {o} with
pre(o) = \top
eff(o) = b AND (IF b THEN c)
We'll need o twice, but only count it once.
There are various ways to solve this. One way is what we do in the planning
lecture: Treat two effects of an operator as coming from a different operator
iff they have different associated effect conditions. For example, an operator o
with preconditions {u, v, w} and effect list
a
b
IF x THEN c
IF x and y THEN d
IF x THEN e
f
IF x THEN g
would be treated as three different operators:
o_1 with preconditions {u, v, w} and effects {a, b, f}
o_2 with preconditions {u, v, w, x} and effects {c, e, g}
o_3 with preconditions {u, v, w, x, y} and effects {d}
This should also influence preferred operators: e.g. if in the current state o
is applicable but x is not true and we're really only interested in the o_2 part
of o, then o should not be marked as preferred even though it's applicable and
"occurs in the relaxed plan" (in the form of o_2).
It should only be marked as preferred if one of the o_i versions that is part of
the relaxed plan is applicable in the current state.
|