Author: Antonio Dieguez
Date: 15:47:22 08/30/01
Go up one level in this thread
On August 30, 2001 at 10:30:53, Koundinya Veluri wrote:
>This code comes before any moves have been searched at the last ply, but after
>the null move is done.
>
>IF depth == 1 && not extended for check && not extended for mate threat && not a
>forced position (according to hash table) && not following pv THEN
> window = ???;
> qscore = Quiesce(alpha - window, beta + window);
> if(qscore <= alpha - window)
> return alpha;
> if(qscore >= beta + window)
> return beta;
>END IF
Hi.
What I see here: Searching captures twice and even searching them with a bigger
window...
I know what you are doing but I recommend you write that this way:
(when depth =1 and blablabla...)
int ev=evaluate(...);
if (ev>=beta+window)
{ return beta; }
later then use futility prunning the usual way with a evaluation, using the ev,
for example:
for captures:
...
if (ev+expectedMaterialGain+window2<=current_alpha)
{ skip that capture }
...
for other moves:
...
if (ev+MaximumExpectedPositionalGainWithThisMove<=current_alpha)
{ skip this move. }
...
it is practically the same without any extra work!
The maximumexpectedblablabla I have it around 0.72, but I will try soon with
eval deltas depending of the move, fun work.
bye bye.
>
>Seems to be safe and improves speed on tactics a lot, when the correct window is
>chosen. Although it may look like a waste doing qsearch for every position at
>depth == 1, this does a lot more pruning than it does add to the tree. I tried
>the other futility pruning mentioned in the original post, but it didn't work as
>well for me.
>
>Koundinya
This page took 0.01 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.