Side effects of transposition tables
Posted: 04 Mar 2005, 22:53
Hi folks,
in the last few weeks trying to improve Kiwi has been as much fun as sticking a pin in my back. I've tried many original and promising ideas, and played literally thousands of test games and eventually had to come to terms with reality: not only my engine sucks, but it sucks in an unpredictable way.
Playing 4 games from the same starting position and no book against version 0.4d could yield 4-0-0, 0-4-0, 0-0-4 or everything in between. Maybe I'm asking too much from a bird, but some more determinism would be definitely appreciated.
The problem seems to be in the transposition tables. I've already a few guards in place that eliminates most blunders of the previous versions, but the fact is if I try to analyze a position from scratch, I almost always get a different PV and best move with respect to that played in the game. This makes it quite difficult to spot and fix problems, because it's often impossible for me to reproduce the program behavior.
I'm now considering clearing the hash table before searching for a move. I could only play a few games with such a version and results are not clear yet. On one side I really like to get consistent and predictable results, but on the other side it is sometimes painful to see that each position has to be re-explored from scratch.
What do you think? It seems other engines do not suffer from the problem, maybe MTD(f) is more sensitive to this kind of stuff?
Comments and suggestions would be very welcome, but I accept pats on the back too...
in the last few weeks trying to improve Kiwi has been as much fun as sticking a pin in my back. I've tried many original and promising ideas, and played literally thousands of test games and eventually had to come to terms with reality: not only my engine sucks, but it sucks in an unpredictable way.
Playing 4 games from the same starting position and no book against version 0.4d could yield 4-0-0, 0-4-0, 0-0-4 or everything in between. Maybe I'm asking too much from a bird, but some more determinism would be definitely appreciated.
The problem seems to be in the transposition tables. I've already a few guards in place that eliminates most blunders of the previous versions, but the fact is if I try to analyze a position from scratch, I almost always get a different PV and best move with respect to that played in the game. This makes it quite difficult to spot and fix problems, because it's often impossible for me to reproduce the program behavior.
I'm now considering clearing the hash table before searching for a move. I could only play a few games with such a version and results are not clear yet. On one side I really like to get consistent and predictable results, but on the other side it is sometimes painful to see that each position has to be re-explored from scratch.
What do you think? It seems other engines do not suffer from the problem, maybe MTD(f) is more sensitive to this kind of stuff?
Comments and suggestions would be very welcome, but I accept pats on the back too...