Computer Chess Club Archives


Search

Terms

Messages

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

Author: Stuart Cracraft

Date: 10:24:53 07/14/04

Go up one level in this thread


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
    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.