Computer Chess Club Archives


Search

Terms

Messages

Subject: Classification of central pawn structures

Author: Tord Romstad

Date: 02:47:56 02/10/06

Go up one level in this thread


On February 10, 2006 at 01:01:28, Ryan B. wrote:

>I am surprised that there are so many more binary files being downloaded than
>source.

I was surprised for the opposite reason, in fact.  I thought the source code
would only be interesting for programmers, and considering that there are only
about 300 publicly available chess programs, it is remarkable that the source
code has been downloaded more than 400 times.

>I download the source from every engine I can no matter how strong it
>plays.  I consider Glaurung a strong engine based on what I have seen.

Compared to other open source engines, it isn't too bad.  When running
on a single CPU, it's probably one of the strongest open source engines
not derived from Fruit.

>I like your center pawn structure code.  I think it can be refined some and
>also use for other things in your eval.

An evaluation discussion?  Cool, we don't have enough of these.  Thanks for
bringing up the topic.  :-)

For those not familiar with Glaurung's source code:  I classify the central
pawn structure for each position evaluated, and store it in the pawn hash
table.  The following comment from pstruct.c explains the different types
of pawn centres I have defined so far:

  /* Analyse the central pawn structure.  The following types of central
   * structures are defined:
   *
   *     OPEN:         At most one pawn on the e and d files.
   *     HALF-OPEN:    Two or three pawns on the e and d files, and no pawn
   *                   is blocked.
   *     HALF-CLOSED:  Two, three or four pawns on the e and d files, and
   *                   there is a pawn ram.
   *     TENSION:      A central pawn capture is possible.
   *     UNRESLOVED:   Four central pawns, still not in direct contact.
   *     CLOSED:       Four central pawns, none of which can move.
   */

I agree that this could be refined further, and that I could make more use
of it than I currently do.  At the moment, I only use it for my bishop
pair bonus.  Instead of having a constant bishop pair bonus, I use an array
indexed by the pawn centre type (if the numbers look big, it is because I
use pawn=256 rather than the more common pawn=100):

int BishopPairBonus[7] = {
  60,  /* UNKNOWN */
  100, /* OPEN */
  80,  /* HALF_OPEN */
  0,   /* CLOSED */
  30,  /* HALF_CLOSED */
  70,  /* TENSION */
  60   /* UNRESOLVED */
};

I have made some experiments with using the pawn centre type in other parts
of my eval, but without much success.  I have tried to use it to scale my
pawn shelter evaluation (a good pawn shelter should be more important in
open positions), and for my side to move bonus (having the side to move
is also more important in open positions).  In principle I think both of
these look like good ideas, but making them work requires careful tuning.

If anyone has thoughts about this, I would love to hear about them.

Tord




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.