Issue671

Title Identically named parameters in action produce incorrect plan
Priority bug Status resolved
Superseder Nosy List christoph, gabi, malte, silvan
Assigned To silvan Keywords translator
Optional summary

Created on 2016-09-09.12:31:09 by christoph, last changed by malte.

Files
File name Uploaded Type Edit Remove
issue671.diff gabi, 2016-09-09.19:29:19 text/x-patch
sample.zip christoph, 2016-09-09.12:31:09 application/zip
Messages
msg5645 (view) Author: malte Date: 2016-09-19.11:42:37
Excellent, thanks, Gabi and Silvan!
msg5644 (view) Author: silvan Date: 2016-09-19.10:16:57
No objections, merged and pushed.
msg5641 (view) Author: malte Date: 2016-09-19.00:15:05
The translator attributes only change in trucks-strips, which is fine. In this
domain we get timeouts of the invariant synthesis, and this affects the results;
this is not new. (The timeouts occur at different stages of the computation due
to noise in runtime.) You can also tell the instability of these attributes from
the fact that they also differ in the blind vs. LAMA search for the same code
configuration.

Regarding the lost runs for blind search: I looked at one of them (Thoughtful
Solitaire #3), and it was very close to the timeout. I then looked at the
translator output files for this task, and they were identical. So all fine here.

I suggest we merge. Any objections? Silvan, can you take care of this?
msg5627 (view) Author: silvan Date: 2016-09-14.13:37:55
The results have been updated (99 MB file, due to the large number of translator
attributes):
http://ai.cs.unibas.ch/_tmp_files/sieverss/issue671-v1-issue671-base-issue671-v1-compare.html

Unfortunately, we lose some coverage with blind, and some of the translator
attributes change.
msg5626 (view) Author: silvan Date: 2016-09-12.11:52:42
Yes, sorry about that, forgot to change to the "all" suite, after looking up
that the suite is indeed still called "all" :-/
msg5625 (view) Author: malte Date: 2016-09-12.11:50:08
PS: It seems the experiment uses the wrong suite?

See this earlier comment:

> I suggest using blind search and lama-first on all tasks (the old "all" suite).
> In particular, we should make sure that we include all domains with ADL features
> and derived predicates in the test. A short timeout (60 seconds?) should be fine.

(The code path affected by this change should not be triggered on STRIPS-ish
domains, so it's important we include the larger set.)
msg5624 (view) Author: malte Date: 2016-09-12.11:47:54
Thanks, Silvan! It would be great if you could add the translator-specific
attributes. If it's not there yet, it might also make sense to add some info to
our experiment README about how to do this.
msg5623 (view) Author: silvan Date: 2016-09-12.11:44:56
I ran the experiment, and the performance did not change:
http://ai.cs.unibas.ch/_tmp_files/sieverss/issue671-v1-issue671-base-issue671-v1-compare.html

I did not include any attributes specific to translating, but if we need them,
I'll search for an example list of attributes that could be included.
msg5621 (view) Author: malte Date: 2016-09-09.19:54:24
Update: after looking at it some more, I think that "typed_parameters" is a
generator expression in the new code, and I think these are hashed by identity.
This probably means that we wouldn't detect any duplicates, losing some
efficiency where duplicates could be detected. I've added a conversion to tuple,
which should hopefully be enough to fix this.

Silvan, can you run an experiment on this, or find someone else to do it, or
explain to me how to do it on Monday? I pushed the branch issue671 to the master
repository.

I suggest using blind search and lama-first on all tasks (the old "all" suite).
In particular, we should make sure that we include all domains with ADL features
and derived predicates in the test. A short timeout (60 seconds?) should be fine.
msg5620 (view) Author: malte Date: 2016-09-09.19:47:36
Patch looks plausible to me, and the task is solved correctly for me after
applying it.
msg5619 (view) Author: gabi Date: 2016-09-09.19:29:19
I don't have a clean repository at hand and I am a bit distracted, so I don't
want to push my quick fix. Instead I attach a patch. Maybe someone has time for
a review.
msg5618 (view) Author: gabi Date: 2016-09-09.19:05:20
I think I have identified the problem. In normalize.remove_universal_quantifiers
we use a dictionary new_axioms_by_condition to introduce only one axiom for
conditions that occur several times. At this point, we do not consider the type
information, so when processing action doPartB, the translator reuses the axiom
from the condition of doPartA.
msg5616 (view) Author: gabi Date: 2016-09-09.18:20:37
The action preconditions are already removed by the translator.
msg5615 (view) Author: silvan Date: 2016-09-09.12:34:11
Moved summary to change note (the summary should not be used for regular
messages, but only for an up-to-date summary of the issue's state).
msg5614 (view) Author: silvan Date: 2016-09-09.12:32:53
see https://groups.google.com/forum/#!topic/fast-downward/OIQbeAAsAwc for 
complete description

Short version: A precondition using "forall" and "imply" is incorrectly 
ignored. The issue appears if a similar action targeting a different type 
exists and uses an identically named parameter.

See the attached sample. The plan shows only one action, while an additional 
one would be necessary beforehand.
The behavior changes if the unused action "doPartA" is removed or its parameter 
is renamed from "z" to something else.

fd is ran with:
fast-downward.py small_domain.pddl small_problem.pddl --search 
"eager_greedy(ff(), preferred=ff())"
History
Date User Action Args
2016-09-19 11:42:37maltesetmessages: + msg5645
2016-09-19 10:16:57silvansetstatus: in-progress -> resolved
messages: + msg5644
2016-09-19 00:15:05maltesetmessages: + msg5641
2016-09-14 13:37:56silvansetmessages: + msg5627
2016-09-12 11:52:42silvansetmessages: + msg5626
2016-09-12 11:50:08maltesetmessages: + msg5625
2016-09-12 11:47:54maltesetmessages: + msg5624
2016-09-12 11:44:56silvansetstatus: chatting -> in-progress
assignedto: silvan
messages: + msg5623
2016-09-09 19:54:24maltesetmessages: + msg5621
2016-09-09 19:47:36maltesetmessages: + msg5620
2016-09-09 19:29:19gabisetfiles: + issue671.diff
messages: + msg5619
2016-09-09 19:05:20gabisetmessages: + msg5618
2016-09-09 18:20:37gabisetnosy: + gabi
messages: + msg5616
keyword: + translator
2016-09-09 12:34:11silvansetnosy: + malte, christoph
messages: + msg5615
2016-09-09 12:32:53silvansetnosy: + silvan
messages: + msg5614
summary: see https://groups.google.com/forum/#!topic/fast-downward/OIQbeAAsAwc for complete description Short version: A precondition using "forall" and "imply" is incorrectly ignored. The issue appears if a similar action targeting a different type exists and uses an identically named parameter. See the attached sample. The plan shows only one action, while an additional one would be necessary beforehand. The behavior changes if the unused action "doPartA" is removed or its parameter is renamed from "z" to something else. fd is ran with: fast-downward.py small_domain.pddl small_problem.pddl --search "eager_greedy(ff(), preferred=ff())" ->
2016-09-09 12:32:30christophsetsummary: see https://groups.google.com/forum/#!topic/fast-downward/OIQbeAAsAwc for complete description Short version: A precondition using "forall" and "imply" is incorrectly ignored. The issue appears if a similar action targeting a different type exists and uses an identically named parameter. See the attached sample. The plan shows only one action, while an additional one would be necessary beforehand. The behavior changes if the unused action "doPartA" is removed or its parameter is renamed from "z" to something else. fd is ran with: https://groups.google.com/forum/#!topic/fast-downward/OIQbeAAsAwc -> see https://groups.google.com/forum/#!topic/fast-downward/OIQbeAAsAwc for complete description Short version: A precondition using "forall" and "imply" is incorrectly ignored. The issue appears if a similar action targeting a different type exists and uses an identically named parameter. See the attached sample. The plan shows only one action, while an additional one would be necessary beforehand. The behavior changes if the unused action "doPartA" is removed or its parameter is renamed from "z" to something else. fd is ran with: fast-downward.py small_domain.pddl small_problem.pddl --search "eager_greedy(ff(), preferred=ff())"
2016-09-09 12:31:09christophcreate