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.