I had a look at the code. The changes are straight-forward, but they also
include some break statements, that also could have been used in the old code
(return DEAD_END if one of the components reports a dead end). Did you
experiments include this trick also for the base version?
I'm surprised to see that version C is fastest, but I'm even more surprised that
it apparently recovers all the lost tasks. I thought one major issue for pdb
heuristics would be that the full state is copied/unpacked for each heuristic
evaluation (GlobalState -> State) where the old code only looked at a couple of
values (msg4325). That time would probably show up for tasks with large states ,
and be more visible in the search than in the hill-climbing.
|