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.