Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Interpreting my analysis of the Fine 70 position.

Author: Stuart Cracraft

Date: 10:30:13 07/15/04

Go up one level in this thread


On July 14, 2004 at 14:01:31, Brian Richardson wrote:

>On July 14, 2004 at 13:24:53, Stuart Cracraft wrote:
>
>>On July 12, 2004 at 18:40:24, Dieter Buerssner wrote:
>>
>>>On July 11, 2004 at 23:15:03, Stuart Cracraft wrote:
>>>
>>>>Regarding 26 ply in Fine 70, my problem is simply that my code with
>>>>my hardware can't get there in a reasonable period of time. 4 1/2
>>>>seconds for 21 ply won't give an answer for 26 ply for quite a long
>>>>time in my case. (22 ply = 55 seconds), 23 = 100 seconds, 24 = 123 seconds,
>>>>25 ply = 297 seconds, 26 ply = 780 seconds. And it sees the two pawns
>>>>there as you predicted. But later at the 30th ply it sees only one
>>>>pawn advantage.
>>>>
>>>>So my code must be non-optimal or the hardware is too slow or a combination.
>>>
>>>I would fear, it is the code. Many engines will solve this in a fraction of a
>>>second on modest hardware. I would suspect a (serious) problem with hashing,
>>>when seeing the times you give. There are so few pieces on the board, and much
>>>is blocked. You must get very many transpositions, and because there are few
>>>moves possible anyway (for a long time - until one pawn queens), typically
>>>engines reach depth 30 or more here extremely fast.
>>>
>>>Regards,
>>>Dieter
>>
>>Hi Dieter,
>>
>>Please see if you see anything obvious with my basic search.
>>Any comment you make is welcome.
>>
>>search(depth,alpha,beta)
>>   if draw-rules-met return draw
>>   if extensions-met depth+=1
>>   if depth <= 0 return quiesce()
>>   try to retrieve hash position of current position
>>     if length retrieved >= depth then
>>       if flag is VALID, return score from hash table for position
>>       if flag is LOWERBOUND, set alpha to MAX(score-from-table,alpha)
>>       if flag is UPPERBOUND, set beta to MIN(score-from-table,beta)
>>       if alpha>=beta return score
>>       set flag meaning hashed
>>     endif
>>    if null-move-ok, do it (not endgame, not incheck, not 2 in a row already)
>>    if hashed flag above is set, add a value to make hashed move be searched 1st
>
>Try searching the hash move _before_ generating the others since
>you may never need to generate them.

Yes -- a fine point. Thanks.

Due to a very peculiar bug (also related to hashing), the hash code is now
in a state of flux prior to being able to implement the above.

>
>>    generate moves
>>    if hashed flag was set add value to make hashed move 1st
>>    make & search 1st move with best = search(depth-1,-beta,-alpha)
>>    unmake
>>    while (best < beta)
>>       if best > alpha
>>          alpha = best
>>          set best move to current move if top of tree
>>           :
>>        endif
>>       if search timed out, return(best)
>>       if end of move list, break from while-loop
>>       make next move
>>       value = -search(depth-1,-alpha-1,-alpha)
>>       if (value > alpha && value < beta)
>>          best = -search(depth-1,-beta,-value)
>>       else if (value > best)
>>          best = value
>>          set best move to current move if top of tree
>>       unmake
>>    end
>>    if no legal moves found
>>      if incheck
>>        best = -MATE+depth
>>      else
>>        best = STALEMATE
>>    endif
>>    flag = VALID
>>    if (best <= alpha) flag = UBOUND
>>    if (best >= beta) flag = LBOUND
>>    if (length <= depth and there is a best move to store)
>>       store(depth, best, flag, move)
>>    endif
>>    return(best)
>>
>>Greetings,
>>
>>Stuart



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.