I'm new to this group so please be easy on me
I'm hoping someone can suggest a good approach to the following problem:
Background:
My program uses iterative deepening and a transposition table (TT). I do not clear out the TT after each search, I reuse the results from past searches.
Also, when the best score returned from an iteration of a search is a Win/Loss/Draw, that search immediately terminates. This allows me to:
1) Avoid searching deeper when the outcome is known thus allowing the program to "not look stupid" and make an immediate move.
2) Allows me to set the time control to "infinite" and have the search terminate when it has performed an exhaustive search.
It's my understanding that the "all paths lead to W/L/D" case is typically handled this way.
Problem:
The above combination can result in a search which returns incorrect win/loss scores. For example, let's say that search N finds a win in 10. Search N+1 may now find a deeper transposition of the win in 10 in the TT at say depth = 2 when the iteration of the search is at depth 2. Since the ply is at 2 when we pull the win in 10 out of the TT, this will look like a win in 12. This can look like the best move, because all other competing nodes are not in the TT and thus their scores are eval'd and so look bad in comparision to the win score (even though we know that deeper searches will indicate otherwise). Since the search returns a win score, we stop iterating to be "smart". But we have returned a bad score which overestimates the number of moves to win.
I'm curious if anyone else has had to deal with this problem. If so, how did you deal with it?. One way is to clear out all W/L/D scores in the TT after each search, but that seems a bit severe to me. On the other hand, I don't currently have any better ideas.
I hope my description is clear. Thanks.
-- Greg