Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: What is the principle continuation of Rxb2?

Author: Dieter Buerssner

Date: 07:11:56 08/31/00

Go up one level in this thread


On August 30, 2000 at 12:47:18, Larry Griffiths wrote:

>On August 30, 2000 at 09:51:25, Dieter Buerssner wrote:
>
>>On August 30, 2000 at 09:32:28, Larry Griffiths wrote:
>>
>>>On August 30, 2000 at 08:59:51, Michel Langeveld wrote:
>>>
>>>>On August 30, 2000 at 08:35:26, Larry Griffiths wrote:
>>>>
>>>>>I am testing the following WAC position...
>>>>>
>>>>>[D]8/7p/5k2/5p2/p1p2P2/Pr1pPK2/1P1R3P/8 b - - bm Rxb2; id "WAC002";
>>>>>What is the principle contiunation after Rxb2.  I figure that it promotes a pawn
>>>>>somehow.
>>>>8/7p/5k2/5p2/p1p2P2/Pr1pPK2/1P1R3P/8 b - - acd 14; acn 114206936; ce 322; pv Rxb
>>>>2 Rxb2 c3 Rb6+ Ke7 Rb7+ Kd6 Rb6+ Kc5 Rb7 c2 Rxh7 d2 Rc7+ Kd6 Rxc2 d1=Q+ Re2 Qf1+
>>>> Rf2 Qd3 h4 Qxa3; pm Rxb2; bm Rxb2; id "WAC.002";
>>>
>>>It looks like I must run this to 17 or 18 plys deep then.  I thought the
>>>promotion might occur before 17 or 18 plys.
>>
>>If you have search extensions, you may need quite a few plies less. Before the
>>promotion, there are 3 checks, 1 recapture and one pawn push to the 7th row.
>>This may save 5 plies. Also, if you promote in qsearch, this can save another
>>ply. I.e. Yace finds this allways at depth 10, and depending on settings, can
>>find it also at depth 9.

>Bummer, no qsearch or extensions in my program yet.

Perhaps, you should consider implementing qsearch. I think, this should make the
search much more stable. A first try might be very
fast to implement. Just substitute all calls to eval with calls to qsearch.

An easy qsearch (without any "tricks" and without updating of the PV and
other structures needed) might look like

int qsearch(int side, int alpha, int beta, int ply)
{
  int best, score;
  best = eval(side);
  if (best > alpha)
  {
    alpha = best;
    if (best >= beta)
      return best; /* No need to search any further */
  }
  GenerateAllCaptureAndPromotionMoves(ply); /* May want to not generate
                                            underpromotions in qsearch */
  /* Perhaps sort the moves */
  for (all capture/promotion moves)
  {
    makemove();
    /* If you generate pseudo legal moves, you will need to check, if
       the move is legal here */
    score = -qsearch(side^1, -beta, -alpha, ply+1);
    unmakemove();
    if (score > best)
    {
      best = score;
      if (best > alpha)
      {
        alpha = best;
        if (best >= beta)
          return best;
      }
    }
  }
  return best;
}


>It chooses Rxb2 at 15 plys, but chooses C3 again at 16 plys.  I have not seen if
>it locks in to Rxb2 at higher plys as my last run wanted to spend eternity at
>ply 16...

If you are curious, just do Rxb2 Rxb2 (the forced reply) on the board, and
search from this position. If you don't have any extensions, this will
need exactly two plies less. You then can compare the score, with the score
after the initial position.

Regards,
Dieter



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.