Joost Buijs wrote:bob wrote:Joost Buijs wrote:jdart wrote:A q-search entry in the hash table cannot generally be used to cause a cutoff in the non-qsearch part of the tree, because it has searched only a restricted subset of moves and so the score there is not valid in a part of the search that is not so restricted. Normally this is handled by giving q-search nodes negative depth and then the usual depth test prevents cutoff (that is what I did)
In my "sophisticated" implementation q-search moves are not selected as a pv move in the non-qsearch part of the tree either, for similar reasons.
--Jon
In my implementation I always store q-search entries with a draft of 0.
A entry or move stored by the normal search will never be overwritten by one from the q-search because the normal entry has a greater draft.
I don't see any problem in using a move from the q-search in normal search if it just a choice between no move at all or the move from q-search as can happen in my implementation.
If that is true, you might want to test further. I am a firm believer, after years of testing this over and over, that when you complete a ply, you MUST store that result in the hash table. Why would you refuse to overwrite an entry that has the same signature, but which did not terminate the search? It is obviously useless, and the current search is an actual result you would like to avoid repeating if possible.
There is a great possibility that the scheme I use it not the best, and that there is room for improvement. But I am a firm believer that an entry that has been calculated to a greater depth has a value that is more accurate.
Anyway it is all about results, and my program plays not bad at all.
I believe it is better to spend my time in improving the evaluation function because that is where to expect the biggest gain.
Last time i saw your program play, it played the same moves like latest rybka incarnation - so i totally do not believe you if you post: "improving the evaluation function".
We had a protest years ago when Fruit played well, it played like Fruit, this protest came from FAbien Letouzey. You failed to take the offer of Richard Pijl to get to your place and check out your source code.
Some years later now it plays exactly like Rybka 3 from evaluation viewpoint seen.
"Once a thief always a thief", is a Dutch saying.
And you write about improving evaluation, whereas what Bob writes is logical, it makes sense and it's the only truth in this case.
If you can AVOID researching the same part of the tree, that's a HUGE win, provided you have the system time to do so.
And if you really would've added lots of patterns to your evaluation function, instead of just cut'n paste the evaluation function of latest Rybka, your evaluation would slow down and therefore storing qsearch would make more sense.