I've come back to working on my engine after a little break and believe I have completed working out the kinks in my hash table. During testing with other engines, I have noticed at some points in the game, at deeper depths in a search, the node count / Branching Factor (BF) increases dramatically.
I use a basic form of BF calculation: node-count-this-iteration / node-count-last-iteration. The engine has a BF around 2 to 7 on average.
What I see in a few searches is a BF of 100+, even 200+. Sometimes the very next ply of that search is back to a normal BF, sometimes not.
I have two possible conclusions:
First, when this troubled search is compared to the previous search, the depth reached in that previous search is not to the depth of the current search where the BF increase happens. So, there are no hash entries which should lead to an increase in searched nodes.
Second, it may be possible that at the particular point in the game, the move ordering was not optimal for that position. One of the stats I track is the percentage of best moves (exact) found that are sorted first in the move buffer versus best moves found near the end of the move buffer. Normally, the engine hits about 88% success yet in these searches, 75% is the average percentage, a fair decrease in first move success.
My questions are:
In regards to the hash table conclusion, does this sound feasible? Has anyone else experienced this? Do you think I am chasing another hash bug?
In regards to the move ordering, I'm not so sure it is an issue which can be resolved. Sometimes a move that is not in the hash, is not a killer, has little history, and sorts to the rear can become the best move at that ply. Is this feasible too or is there something I might be missing to deal with this?
Thank you
