My chess engine m8 is still in early developpement and I'm trying to improve move ordering to reduce the branching factor. One thing I tried was to implement a new TT replacement strategy. My replacement strategy was depth-prefered. When the TT becomes full deep entries "clog" the tables and the shallow parts of the search can't store entries anymore (that's my theory).
I tried a couple of new strategies :
- Always replace
- Two entries per bucket one depth-prefered, one always replace
- Four entries per bucket always-replaced the shallowest
- A couple of others strategies.
The always replace strategy is the one that performed the best, by a large margin. However I find this result hard to explain. It seems to me that the Hybrid or the always-replace-4-bucket should give a better result, since the "always" too, but choose the entries to replace base on depth instead of juste replacing the single entry.
Someone understand how this is possible? I'm thinking maybe there is a bug in my implementation, but I can't find one (does not mean there is not).
Thanks.