Message2496

Author salome
Recipients salome
Date 2013-06-21.15:36:03
Content
When running experiments for issue289 I discovered that on some problems in the
scheduling domain there was a significant difference in expansions between my
fix and the original version, even though both versions found the exact same
landmarks and thus should behave exactly the same. Sometimes the fix has 10
times more expansions or is even not solvable while the other version has below
100'000 expansions.

I backtracked the error to the generation of reasonable orderings: The function
approximate_reasonable_orders in landmark_factory.cc loops over all landmarks
and searches for reasonable orders. As soon as a landmark is true in the initial
state, the function is exited altogether without checking the rest of the
landmarks. Since we cannot know in which order the Landmarks are passed (it
iterates through a set of Landmark pointers) this leads to non-deterministic
behavior.

I think there should rather be a continue statement instead of exiting the
function, as it is just above when checking for disjunctive landmarks. I tried
this out on two problems already and it seems to work, but I will test this further.
History
Date User Action Args
2013-06-21 15:36:04salomesetrecipients: + salome
2013-06-21 15:36:04salomesetmessageid: <1371821764.05.0.0247352644024.issue383@unibas.ch>
2013-06-21 15:36:04salomelinkissue383 messages
2013-06-21 15:36:03salomecreate