Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Positional scores in Eval()

Author: Robert Hyatt

Date: 13:03:42 04/09/01

Go up one level in this thread


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.



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.