Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Positional scores in Eval()

Author: Andrei Fortuna

Date: 13:21:56 04/09/01

Go up one level in this thread


On April 09, 2001 at 16:03:42, Robert Hyatt wrote:

>On April 09, 2001 at 16:01:18, Andrei Fortuna wrote:
>
>>So far I've been rewarding some positional terms like passed pawns, connected
>>passed pawns and so forth, also I'm penalizing king unsafety - with pretty much
>>big scores, so to some positions the positional score gets outside an interval
>>[-X * PAWN_VALUE .. +X * PAWN_VALUE] where X is about 2 in my case. This hurts
>>in two areas : futility pruning and when I try to bail out of qsearch based on
>>material score + swap value + some constant value.
>>
>>What I want is to be keep the positional score inside that interval, that's easy
>>if I reduce the positional scores and drop those big bonuses/penalties but I'm
>>sure there are positions where the new small scores will make my program lose
>>(for example by not sacrificing a bishop to make way for a passed pawn). Most
>>occur in endgame (where futility is turned off) but there are quite a few
>>middlegame cases (especially the BAD_TRADE penalty for trading N+K for R+P will
>>add +/- 1 PAWN_VALUE to the material score)
>>
>>What is the most common approach used for this problem ? Just ignore the big
>>bonuses and perhaps add some extensions in the idea that if the search doesn't
>>see it improving the score in the next plies it might be a false bonus to start
>>with ? I'm not very fond of this method. Keep the big bonuses and use futility
>>anyway, even knowing that in some cases it might be bad ? I definetely don't
>>like this approach, that's why I don't do futility right now. Any other
>>ideas/tips ?
>>
>>P.S. : Is there a test suite that contains >= 90% positional tests ? I.e. not
>>(quick) material gains, but moves that will improve the position for the current
>>player (like making an isolated pawn for the adversary, weakening opponent's
>>king safety, that kind of stuff) ?
>>
>>P.P.S. : Sorry for my rusty language, I've been out of chess programming for a
>>number of months and now I find a little bit difficult to express my ideas.
>
>
>One answer is to try an exponential function...  IE where small changes
>move the score quite a ways, but larger changes slow the rate of increase
>down.  If you indirect through an array, you can set the array to control the
>min and max scores for those "big" terms to keep them under control.

I am doing that of course, but still I'll get let's say 5% of positions where my
positional score > 2 PAWN_VALUE. And that will hurt my quiescence and my
futility pruning if I assume that 2*PAWN_VALUE is max positional score. It all
boils down to the magnitude of the positional scores versus pawn value, I think
I have to choose either to keep big bonuses and turn futility off (or set a
bigger margin for futility but in that case it would make futility more
inefficient) or keep small bonuses and enjoy the reductions I get from futility
and quiescence.




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.