Computer Chess Club Archives




Subject: Re: not using nullmove?

Author: Tord Romstad

Date: 06:46:24 02/16/04

Go up one level in this thread

On February 16, 2004 at 07:09:29, martin fierz wrote:

>On February 16, 2004 at 05:57:50, Tord Romstad wrote:
>>On February 15, 2004 at 17:08:43, martin fierz wrote:
>>>of course, you have a long-developed engine with a balanced evaluation function.
>>>mine is 7.5 months old, and therefore is still pretty bad ;-)
>>I had no idea it was so young.  Considering the young age of your engine,
>>I think Muse is extremely impressive.
>well, i have been programming checkers for 7 years now, so i have some
>experience in writing game-playing programs - that of course got me started with
>my chess engine very quickly. many things like negamax, hashing, move ordering +
>it's importance and so on are very easy+clear to me.

Most of this should apply to me as well right now, when I have started
working on hexagonal chess.  The difference between normal and hexagonal
chess from a programming point of view should be comparable (probably
smaller) to the difference between checkers and chess, and I should be
able to profit from my experience with computer chess.  Still, I find
the new game tremendously difficult, and I'm afraid I will have to work
for years before the new engine is as strong as my chess program.

>muse now does most of the
>standard stuff, so it's not too surprising that it's playing sort of sensibly -
>however, it does lots of stuff in a bad way. for example, i know my evaluation
>still needs a lot of tuning. my SEE and qsearch-good-check-detection don't
>detect x-ray attacks. my whole program is slow because of some serious
>inefficiencies. i wouldn't mind being a factor 2 or so slower than crafty - but
>a factor 5-6 seems excessive...

Well, it depends on how complicated your evaluation function is, of course.
I would guess that strong chess players tend to write evaluation functions
which are much more sophisticated (and hence slower) than Crafty's.  The
very low N/s count of the two most well-known chess programs written by
strong players (Chess System Tal and Diep) seem to support this theory.

>apart from that, i am also a rather strong chess player (cough), for a chess
>programmer at least - which makes it easier for me to find holes in my eval than
>for others IMO.

Probably.  I am sure Muse will eventually become extremely strong.

>i think the worst thing i've seen in gothmog is your scoring of connected
>passers. hint: even if you have connected passers on d6+c7 as white, they are
>not worth all that much if black has a bishop on the c8-h3 diagonal, or has a
>king in front of those pawns. i have seen gothmog lose more than once against
>muse because it seems to think that these two passers were worth a piece or more
>- which they are clearly not. of course i can't be 100% sure that your connected
>passer eval is bad in this respect, but i am rather sure it is - you should
>check it!

Thanks.  I am painfully aware of this one, and I have seen lots of lost
games because of this hole.  My latest development version is slightly
improved in this respect, but there is still a long way to go.

Other major weaknesses are that lots of important endgame knowledge
is completely missing, that the space eval is too big and too primitive,
and that Gothmog is too happy to push pawns in front of its own king in
positions with opposite side castling.

>>This, too, very much resembles what I do.  The evaluation function doesn't
>>just return a single value, it computes separate values for king safety,
>>pawn structure, passed pawns, mobility, and so on.  It also locates pinned
>>and hanging pieces, and detects some simple mate threats.  All of this
>>information is used in the search.  Whenever a move is made, the position
>>is evaluated and I compare the results at the present node with the results
>>at the previous node.  If a move does not increase any of the evaluation
>>components, and it does not attack a piece, threaten mate or anything
>>similar, I prune the move or reduce the search depth.  If a move threatens
>>mate or dramatically increases the king safety or passed pawn eval, I
>>make an extension.
>in fact, i'm not doing this - yet. it's on my todo list of course, but as i
>wrote i first would like to make my engine "decent" with the standard
>techniques. once i'm satisfied with it, i'll start fiddling with this kind of

That's probably what I should have done, too.  But my biggest weakness as
a chess programmer is my lack of patience.  I can't wait until I have the
basics perfected before I start adding more advanced stuff.


This page took 0.03 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.