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.