Author: Tony Werten
Date: 09:31:04 01/12/02
Go up one level in this thread
On January 11, 2002 at 18:57:39, David Rasmussen wrote:
>On January 11, 2002 at 18:06:24, Matthias Gemuh wrote:
>
>>On January 11, 2002 at 17:52:50, Uri Blass wrote:
>>
>>>On January 11, 2002 at 17:40:09, Matthias Gemuh wrote:
>>>
>>>>
>>>>[D] 3r3k/3r1P1p/pp1Nn3/2pp4/7Q/6R1/Pq4PP/5RK1 w - - 0 1
>>>>
>>>>Even when I limit extensions to 2 !!! (instead of 1),
>>>>no explosion occurs.
>>>>Positive side effect is I see this mate then at ply 3 (instead of 5).
>>>>My extensions are then
>>>>
>>>> nLocalExt = 0; MultiVariant->nExt[nPly] = 0;
>>>> if (ChsStrct->extCheck[nPly]) { nCounters.nExtCheck++; nLocalExt += 400; }
>>>> if ((nPly >= 2)&&(ChsStrct->extCheck[nPly-2])&&(ChsStrct->extCheck[nPly]))
>>>> { nCounters.nDoubleCheck++; nLocalExt += 200; }
>>>> if ((nPly)&&(ChsStrct->extCapture[nPly-1])) {
>>>> if (ChsStrct->extCapture[nPly] == 2) { nCounters.nExtRecap++; nLocalExt
>>>>+= 260; }
>>>> }
>>>> if (mate_threat) nLocalExt += 400;
>>>> if (ChsStrct->extOneMove[nPly]) nLocalExt += 400;
>>>> if (ChsStrct->extPromo[nPly]) { nCounters.nExtPromo++; nLocalExt += 400; }
>>>> if (ChsStrct->goodMoves[nPly] == 1) nLocalExt += 120;
>>>> else if (ChsStrct->goodMoves[nPly] == 2) nLocalExt += 80;
>>>> else if (ChsStrct->goodMoves[nPly] == 3) nLocalExt += 40;
>>>> nLocalExt += 5*ChsStrct->extPawnPush[nPly];
>>>> if ((nPly)&&(ChsStrct->extCapture[nPly-1])) {
>>>> if (ChsStrct->extCapture[nPly] == 1) { nCounters.nExtRecap++; nLocalExt
>>>>+= 160; }
>>>> }
>>>> if ((nPly >= 2) &&
>>>>((MultiVariant->megaMove[nPly-1]-MultiVariant->megaMove[nPly-2]) > PAWNVALUE) &&
>>>> ((MultiVariant->megaMove[nPly-1]-MultiVariant->megaMove[nPly-2]) < >>2*PAWNVALUE))
>>>> { nCounters.nExtMegaMove3++; nLocalExt += 60; }
>>>> if (nPly >= 2) {
>>>> if ((MultiVariant->megaMove[nPly-1]-MultiVariant->megaMove[nPly-2]) >
>>>>3*PAWNVALUE)
>>>> { nCounters.nExtMegaMove1++; nLocalExt += 180; }
>>>> else if ((MultiVariant->megaMove[nPly-1]-MultiVariant->megaMove[nPly-2])
>>>>> 2*PAWNVALUE)
>>>> { nCounters.nExtMegaMove2++; nLocalExt += 120; }
>>>> }
>>>> nLocalExt /= 400; if (nLocalExt < 0) nLocalExt = 0;
>>>> nLocalExt = min(2, nLocalExt); MultiVariant->nExt[nPly] = nLocalExt;
>>>>
>>>>
>>>>400 pts = 1 ply
>>>>I have just increased 1 reply from 300 to 400, still no explosion.
>>>>Store your extensions locally at the nodes!! That is the key.
>>>
>>>I do not understand this code because I do not know
>>>the meaning of the variables
>>>
>>>I am not going to look at it for many hours in order to try to guess the meaning
>>>of the variables.
>>>
>>>Guessing the meaning of part of them correctly is not enough.
>>>Can other programmers understand the meaning of this code?
>>>
>>>Uri
>>
>>
>>
>>The code was not meant for you.
>>If David Rasmussen does not understand any part of it,
>>he will ask me and I will clearify him. Don't think I have
>>lots of time to explain things unnecessarily.
>>Stick to your tscp clone.
>>
>>Matthias.
>
>I don't know if I understand it, I am not going to try. I assume you are just
>doing standard stuff here. My own code is way simpler (at least to me), and I
>think everyone can understand it:
>
> /*
> * Extend the search depth if an
> * interesting move was made at
> * the previous ply.
> */
>
> int extension = 0;
>
> // Check Extension
> if (inCheck)
> {
> extension += CHECK_EXTENSION;
> }
>
> // Pawn Push Extension
> if (MyPiece(currentMove[ply - 1]) == PAWN)
> {
> if (pos.turn == WHITE)
> {
> if (Rank(To(currentMove[ply - 1])) >= RANK7)
> extension += PAWN_EXTENSION;
> }
> else
> {
> if (Rank(To(currentMove[ply - 1])) <= RANK2)
> extension += PAWN_EXTENSION;
> }
> }
>
> // Recapture Extension
> if (ply > 1 &&
> To(currentMove[ply - 1]) == To(currentMove[ply - 2]) &&
> pieceValue[Capture(currentMove[ply - 2])] ==
> pieceValue[Capture(currentMove[ply - 1])]
> )
> {
> if (!(AttacksTo(pos,To(currentMove[ply - 1])) &
> pos.occupied[Opposite(pos.turn)]))
> {
> // There was only one recapture
> extension += RECAPTURE_EXTENSION;
> }
> }
>
> // Limiting Extensions
> if (extension > ONE_PLY)
> extension = ONE_PLY;
>
> // One Reply Extension
> if (inCheck)
> {
> if (numberOfMoves == 1)
> extension += ONE_REPLY_EXTENSION;
> }
>
> depth += extension;
You do realise that your total extensions can be close to 2 ? (Depending on the
value of ONE_REPLY_EXTENSION.)
Tony
>
>Anyway, it's not important. What's important is that I have some sort of
>extension "bug", or at least I don't understand what's going on. Sure, there
>could be some line where the king is being chased around the board with a lot of
>check and one reply extensions. Who knows. I will check it later.
>
>/David
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.