Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: See'ing makes my program blind ?

Author: Richard Pijl

Date: 04:20:43 10/18/04

Go up one level in this thread


On October 18, 2004 at 07:01:50, GeoffW wrote:

>Hi
>
>I have been experimenting with the SEE code in my program. I had not had great
>results with it previously so thought I should revisit it. I was fairly sure
>that it was bug free as it seemed to noticeably reduce my node count but the
>extra time it took to calculate seemed to about break even.
>
>Anyway looking at it again, I am using it now in 3 ways, I thought what I am
>currently doing is fairly standard practice ?

Depends on the type of quiescense search you have: Lean and mean (like Crafty),
or more extensive (like many others). The more precise the score returned from
your quiescense search, the more errors in it will be bothering you (as you will
not have the additional plies of regular search).

>
>1)
>I am using SEE to order the capture moves in my Q search.
>Move ordering in the normal search is still MVVLVA as my SEE is quite slow
>
>2)
>I am using the SEE score for a capture to prune moves at generation time
>Bit of pseudoCode
>
>addMoveToMoveList()
>{
>#ifdef USE_SEE
>	if (scoreBasedOnSee(sideToMove,from,to) < 0)
>		return;
>#endif
>etc..........
>
>
>3) In my quiesce() routine I have
>
>
>/* material balance is always positive for side to move if that side is up in
>material */
>	materialBalance = evalMaterialOnly();
>
>	for (i = firstMove[ply]; i < firstMove[ply + 1]; ++i)
>	{
>
>/* if we are down on material then we can prune off these quiescent moves fairly
>safely as the SEE score plus material is still worse than a previous move
>denoted by alpha */
>
>		if ((S32)gen_dat[i].seeScore + materialBalance  < alpha )
>			continue;
>		}
>
>etc...... makemove()  then quiesce() recurse again


This looks wrong to me, even with a small qsearch. I assume you have the eval
score anyway, so better to me looks something like
evalscore+seescore+margin<alpha
Margin is needed to compensate for the changes of the evaluation by performing
the move.
I'm not doing this in the Baron though.
Richard.

>
>
>The results I have got so far with these 3 sections of code seemed promising as
>I was managing to search deeper, but my results in games appears to be
>noticeably worse. I suspect the 3rd code snippet is what is making my program
>worse although I am not really sure.
>
>Is that < alpha pruning just plain wrong or maybe just too severe, should I have
>a constant additional safety margin added on top ?
>
>Any thoughts appreciated, thanks
>
>       Regards Geoff



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.