Author: Robert Hyatt
Date: 19:48:14 12/03/02
Go up one level in this thread
On December 03, 2002 at 18:08:43, Frank Phillips wrote:
>On December 03, 2002 at 17:45:11, Robert Hyatt wrote:
>
>>On December 03, 2002 at 15:40:09, Frank Phillips wrote:
>>
>>>I have failed miserably to implement ETC.
>>>
>>>My broad understanding is that you try for a transposition table cutoff for each
>>>move (successor position) at a node before recursing the search from that node.
>>>In my implementation the search tree is reduced, but Searcher plays noticeably
>>>weaker in real games, despite its performance on test suites not deteriorating -
>>>in fact improving slightly. Below is my pseudo code. Any help appreciated.
>>>
>>>Frank
>>>
>>>for (each move)
>>>{
>>> // MakeMove
>>> // Check for Draws.
>>> // Extensions for this move.
>>> tdepth=depth-1+extension;
>>> hit=HashRetrieve(pboard,tdepth-1,&tscore,&flag);
>>
>>I am not sure I understand the above. tdepth has already been decremented by 1.
>>You are doing it a second time. That would seem to incorrectly order the tree,
>>and assume a hit because the depth is one ply less than it really should be...
>>
>>Unless you have your search written in a way different than most, where the
>>normal hash probe is done right at the top for most of us...
>>
>>
>>
>>
>
>Then maybe this is the bit I am not understanding. Ignoring extensions for the
>current node, I do
>
>ABsearch(depth.....)
>{
>
>(normal) hash lookup
>score = -ABsearch(depth-1........)
>
>}
>
>I had in mind that the ETC extra hash lookup was a surrogate for the value
>returned from the recursive call score = -ABsearch(depth-1)
>and therefore that the ETC hash probe should be depth-1 ie
>
>
Try this. Rather than quitting _right now_ when you find an ETC cutoff,
just search that move _first_. IE stuff it into the "hash move to try first"
place and search normally. If the node counts agree exactly, then you are
doing it right. But I'll bet they won't, because it looks to me like you
are reducing depth _twice_. Remember, you are at ply=x, looking for a move
that will cause a sure cutoff at ply=x+1. So it would seem to me that using
depth-1 is ok, but I thought you had a depth-1 right before your call to
hash probe with _another_ depth-1 in it, which is depth-2 and that has to be
wrong...
>ABsearch(depth.....)
>{
>
>(normal) hash lookup
>
>for (each move)
> ETC has lookup at depth-1
>
>score = -ABsearch(depth-1........)
>
>}
>
>
>Cutting off at a shallower depth than the search would certainly explain things
>though.....
>
>
>Frank
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.