Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Implementing Planning in an Engine

Author: Tom Likens

Date: 13:03:04 02/04/04

Go up one level in this thread


On February 04, 2004 at 15:42:24, Gerd Isenberg wrote:

>On February 04, 2004 at 14:15:33, Tom Likens wrote:
>
>>
>>Hello Everyone,
>>
>>I'm getting ready to implement some new features in my engine and
>>one of the items on my TODO list is to give the engine some rudimentary
>>planning capablities.  The idea I've been toying with is to use the
>>features of the pawn structure (and the king locations) to guide what
>>the engine should try over the next few moves.  The advantage of using
>>the pawn formation as a trigger or even index into a variety of evaluation
>>functions, (perhaps dynamically selected by a function pointer at runtime)
>>is that the information could be stored in the pawn hash table for
>>easy retrieval.
>>
>>As an example, if the center is blocked and white has a preponderance of
>>force and space on the king side then it may be okay to start a king-
>>side attack using the white king pawns to break open the black king's
>>castled location.  At the very least moves like g4, h4 should be considered.
>>This would be especially true if the black queen was trapped on the
>>queenside and the black's king safety was already weakened.  Other
>>factors would be control of the squares around the enemy king, but the
>>initial trigger would be the features of the pawn structure.
>>
>>Anyway, this is just one example other patterns could be the Stonewall,
>>the pawn chains that arise out of the French Defence, the Caro-Kan etc.
>>or even recognizing when a queenside minority attack made sense.
>>
>>In fact, I've starting using a variation of this idea in the king safety
>>routines.
>>I recently started saving the pawn state of the six squares directly in front
>>of the king (if a pawn is present then bit is set in an 8-bit index).  This
>>value, once calculated, is used as an index into an array of function
>>pointers that point to functions tailored for the specific pawn structure
>>(e.g. if the pawn structure is a fianchetto structure then elements related
>>to the strength or weakness of the fianchetto bishop etc. are checked).
>>So far, the results have been encouraging but it needs a lot of tuning and
>>experimentation.
>>
>>Anyway, I was wondering has anyone else here given any of these
>>ideas a try yet?  And if so, how successful have they been?
>>
>>regards,
>>--tom
>
>It's a "must"! But most is still on my todo list. I have a lot of bitboard
>patterns in mind to determine the "finality" of such pawn structures, static and
>dynamic aspects. Rather than using switch or arrays of function pointers, as i
>actually do too, i think about vectors of weighting factors, indexed by pawn
>structure (on several board areas, center and wings), "gamestate" and "king
>relations"...
>
>Cheers,
>Gerd

Hey Gerd,

Thanks for the response.  One idea that springs to mind (and
probably not the most sophisticated by far) is to use the pawn
pattern in the center as an index into a vector of weightings
related to the relative value of a knight vs.a bishop for any
particular position.  You could even refine the idea so that
in addition to taking into account how clogged the center was
(with pawns) you could also factor in possible knight
outposts, holes etc.

regards,
--tom



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.