Thanks, Jendrik!
I would say there are few strong trends in the experiments. The experimental
results for the LAMA-like configs have a trend towards using no randomization,
but that's not really true for the FF-like configs, where the overall winner (in
terms of quality) is a shuffled config. There are also no clear general trends;
it depends quite a bit on the domain.
Given this, I think it's good to keep options available here, so that it's
possible to choose whatever is good for the given domain.
The question then is what the default should be. All other things being equal,
"original" would seem a logical default since that's what the other search
algorithms use. If we add up the quality scores in the two LAMA experiments, it
also performs better than our current default. So I would suggest making
"original" the default in the future.
Regarding "shuffled_preferred_first": to me, randomizing the order and ordering
preferred operators first are two orthogonal things, and I think it's cleanest
and simplest to avoid "multiplying out" the choices in an enum. Rather, I think
we should have two boolean options:
- randomize_successors (default: false)
- preferred_successors_first (default: false)
The documentation should make clear that randomization happens first (if
enabled), and after that preferred successors are moved to the front (if enabled).
I checked the code, and if I didn't overlook something, this would also suggest
a simplified implementation of the form:
if (randomize_successors) {
[shuffle operators]
}
if (preferred_successors_first {
...
}
Can you modify the code along these lines? I don't think we need another
experiment now, but I'd like to have a repeated experiment to be on the safe
side just before the final merge (i.e. once code review is complete). I think
it's enough to only repeat the lama-unit and lama-nonunit experiments. If we do
a repeated experiment, I think it might also be good to use the most recent
version of our IssueExperiment class.
Going over the old messages, the remaining TODOs are to open an issue for the
future cleaner implementation of this feature as part of a general successor
modification functionality that could also be used for partial-order reduction
and that should also be part of eager search (msg2796 and msg2985).
|