Author: Stuart Cracraft
Date: 10:15:06 10/23/04
Go up one level in this thread
On October 23, 2004 at 12:56:22, William Bryant wrote:
>I am reviewing old data from my first chess program as I rewrite it for the
>second program.
>
>I am wondering what value (relative to a pawn value) people use for thier
>quiescence 'delta' value to prune capures when generating captures for the
>quiescence search.
>
>Previously I tried both 4/5 of a pawn (80) and 1 1/2 of a pawn (150) and found
>80 a better value.
>
>I will obvoiusly test this when ready with various values, but I am curious what
>others are doing.
>
>William
>
>BTW.
>The new program is: IAGA Chess Engine (I.C.E.)
Don't use a fixed number. Very it based on the maximum
positional value seen during the search for that side.
It is somewhat redundant as anything < 0 is cutoff by see but the delta
is in there as well. I could get by with just one.
baseval is the evaluation of the position using material/positional only.
quiesce()
:
:
gencap(bd,qml,stm);
mvi = 0;
while (qml[mvi].from != -1) {
capture=0;
if (qml[mvi].cap != 0 || qml[mvi].flg == ENPASSANT) capture=1;
if (capture) {
delta = MAX(alpha-maxposnscore[stm]-baseval,0);
seeval=qml[mvi].see;
if (seeval < delta) { qfutilityext++; mvi++; continue; }
if (seeval < 0) { qfutilityext++; mvi++; continue; }
}
makemv(bd,qml[mvi]);
if (!incheckopp(bd))
value = -quiesce(bd,ply+1,-beta,-alpha,2,qdepth+1,side^1);
unmakemv(bd);
if (value >= beta)
return(value);
if (value > alpha) {
bestmvi = mvi;
alpha = value;
savemove(&npv[ply][ply],qml[mvi]);
for (j=ply+1;j<npvl[ply+1];++j) savemove(&npv[ply][j],npv[ply+1][j]);
npvl[ply]=npvl[ply+1];
}
mvi++;
}
return(alpha);
}
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.