Computer Chess Club Archives




Subject: 28 seconds....

Author: h.g.muller

Date: 06:51:01 03/07/06

Go up one level in this thread

Interesting. This again shows that there is something fundamentally wrong with
the way computers treat end games.

I fed this position to micro-Max, which you can safely say is the engine that
has the least chess knowledge of all engines. It gets to 40 ply in 3 seconds,
(1.9M nodes searched), and then comes to a grinding halt. Even after 13 min it
only gets to 45 ply, without foreseeing a promotion yet.

Then I do an interesting experiment: I change the engine to treat any move with
a Queen as a King capture: 'infinite' score without further search irrespective
of the requested depth. It then finds this infinite score on ply 45, after 4.6
sec. By that time it apparently has proved that black cannot prevent queening
with any defense. Since in this experiment it can not search beyond queening in
any branch, it of course does not find the checkmate.

Intuitively you would guess that, once promotion is secured, the checkmate with
a Queen ahead should be easily proved. Unfortunately, what seems to happen is
that in the branches with stupid play for black you get the Queen much too
early. In a constant-depth search it then starts to use that Queen, leading to a
plethora of new positions overwriting the hash table, (the Queen can access many
more squares than the Pawns could), so that the search to enforce promotion in
the branches with intelligent defense is strongly hindered.

So I try something even more interesting: If I am in a node where I have a
Queen, and the current evaluation (including the material value represented by
that Queen) is way above beta (say 500 centipawns or more), I am apparantly in a
branch with a premature promotion, while other branches still are busy proving
that they can enforce this promotion. Once they have proven this, the window
will jump to around the promotion score, and my Queen would again have to work
to match that, but as long as long as the simple fact of having the Queen brings
me above beta, there seems little reason to do anything. So I return the current
eval without further search (not even a null-move search!).
So the only code line I add is:

if(piece==QUEEN && beta < cur_eval + ROOK_VALUE)
{depth = requested_depth; best_score = cur_eval; goto beta_cutoff;}

(In the short-hand style in which micro-Max is written this looks like
if(p==7&&e+500>l){m=e;d=n;goto C;})

The effect is that micro-Max again reaches a depth of 44 ply in 4.5 sec, (upto
there nothing did really change compared to the previous experiment), then falls
into deep thought, and after 28 sec completes the 45-ply search with the message
that it can force a mate in 35. (It stops deepening when it finds a forced mate,
even if this is not necessarily the fastest one, so that's it, then.) Apparently
disabling moves of premature Queens causes a huge increase in search and
hash-table efficiency!

This was done on a 1.3 GHz Celeron M with 192 MB hash.

This page took 0.04 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.