The Perils of missing sub-promotion

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

nczempin

Re: The Perils of missing sub-promotion

Post by nczempin »

MartinBryant wrote:Unfortunately these non-underpromoting engines sometimes get away with murder!!!

Tao is a particular culprit and I (and several others) simply won't use it because of it.

Ages ago Colossus (playing black) had the following position against Tao 5.6 using the Fritz GUI.

[D]8/7p/1p4p1/P7/7P/1K6/2pq2k1/8 b - - 0 64

Colossus played c1=N+ which is mate in 3.
Now Tao doesn't bother with underpromotions even if the opponent plays them, just assumes all promotions are to queens, so in reply it calmly played the illegal axb
Now unfortunately the Fritz GUI (presumably because it expects only legal moves from engines) allowed it!!!
It then passed the illegal move to Colossus which had a thrombosis, crashed and lost on time!!!! GRRRRRRRRR!!!!!! :evil:

GUI WRITERS PLEASE NOTE! CHECK MOVES FROM ENGINES FOR LEGALITY!!
rofl :lol:
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: The Perils of missing sub-promotion

Post by hgm »

nczempin wrote:The draw was another three-moves draw in winning position from umax. Not sure if the 3moves is in 4.8, or how many chars it would cost to add it, but I am sure it is costing you quite a few half-points.
Indeed, uMax 4.0 has this nasty habit for King strolls and is blind to rep-draws. From 4.3 on there was (passive) King safety (basically through recognizing game stage by keeping track of total piece material, and freezing the King in the middle game). From 4.5 on they recognize rep-draws.

I really could only do meaningful testing after implementing the rep-draws. Without it, improvements did hardly affect the score, as when uMax threatened to win, the opponent would always trick it into a rep-draw. First I saw no way to implement rep-draw recognition with any decent number of characters, as you have to record the game history for it. Later I got the idea to use the hash table for this, and then it took hardly any caharcters at all.

Btw, how did the Eden 13 vs uMax 4.0 Silver match end? Does uMax 4.0 really do better than 1.6? The main difference is that the latter has a hash table.
nczempin

Re: The Perils of missing sub-promotion

Post by nczempin »

hgm wrote: Btw, how did the Eden 13 vs uMax 4.0 Silver match end? Does uMax 4.0 really do better than 1.6? The main difference is that the latter has a hash table.
The first one went:

Code: Select all

Umax4_0w         40,5/80
=00==101==
0100011===
1=1011=011
111001=101
==00=10111
000001110=
101101100=
010001===0 
The second is still running and currently the score is

Code: Select all

Umax4_0w         4,0/16  
=0000001==
01000=

I think umax is sentient, it plays better when being watched :-)

Let's hope it makes a comeback, in the name of determinism :-); so far, this result would point to Eden-umax4.0 having the highest variance of all my Silver tests.
User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Re: The Perils of missing sub-promotion

Post by pedrox »

MartinBryant wrote:Unfortunately these non-underpromoting engines sometimes get away with murder!!!

Tao is a particular culprit and I (and several others) simply won't use it because of it.

Ages ago Colossus (playing black) had the following position against Tao 5.6 using the Fritz GUI.

[D]8/7p/1p4p1/P7/7P/1K6/2pq2k1/8 b - - 0 64

Colossus played c1=N+ which is mate in 3.
Now Tao doesn't bother with underpromotions even if the opponent plays them, just assumes all promotions are to queens, so in reply it calmly played the illegal axb
Now unfortunately the Fritz GUI (presumably because it expects only legal moves from engines) allowed it!!!
It then passed the illegal move to Colossus which had a thrombosis, crashed and lost on time!!!! GRRRRRRRRR!!!!!! :evil:

GUI WRITERS PLEASE NOTE! CHECK MOVES FROM ENGINES FOR LEGALITY!!
My engine has the protocol winboard, the protocol recommends to you that if you receive an illegal move you send a messaje "illegal move”.

I do not know protocol UCI well but I believe that this protocol leaves much work to the GUI, for example test if the position is valid. UCI can send a mesaje "illegal move"?

Winboard has an option to test the position. In the webc or openwar td use winboard, it is activated?

Pedro
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: The Perils of missing sub-promotion

Post by hgm »

nczempin wrote:The first one went:

Code: Select all

Umax4_0w         40,5/80
=00==101==
0100011===
1=1011=011
111001=101
==00=10111
000001110=
101101100=
010001===0 
Surprising. I would have expected uMax 4.0 to do appreciably better than uMax 1.6, as it has hash tables. But both seem to score about 50% against Eden.

Are there any time forfeits, at the time control you are testing now?
nczempin

Re: The Perils of missing sub-promotion

Post by nczempin »

hgm wrote:
nczempin wrote:The first one went:

Code: Select all

Umax4_0w         40,5/80
=00==101==
0100011===
1=1011=011
111001=101
==00=10111
000001110=
101101100=
010001===0 
Surprising. I would have expected uMax 4.0 to do appreciably better than uMax 1.6, as it has hash tables. But both seem to score about 50% against Eden.

Are there any time forfeits, at the time control you are testing now?
I think hash tables are only noticeable considerably beyond ply 6.

BTW umax has complied to my request, the score is now 31.5/65.

I don't think I've seen any time forfeits; this is the same time control 2/6 that I always use; 4.0 seems to handle it properly.

I'll send you the games.
MartinBryant

Re: The Perils of missing sub-promotion

Post by MartinBryant »

You can use the info string command to send messages but the GUI doesn't try to interpret such things (may just display them), so even if Colossus had tested the moves for legality and complained it wouldn't have helped, the GUI would have just sat there waiting for Colossus to reply to an illegal move.
User avatar
hgm
Posts: 27811
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: The Perils of missing sub-promotion

Post by hgm »

I guess the recommended operation is to send an illegal-move message:

illegal move: { remains in check }

If that doesn't help, you can become more bold, and send a 'result' message, claiming the game:

result 0-1 { forfeit due to illegal move }

(and be sure to make it 1-0 if you are white! :lol: )

If that doesn't silence the GUI, sent him a 100KB string without linefeeds from a 100KB output buffer. That usually does the trick. :wink:
User avatar
xsadar
Posts: 147
Joined: Wed Jun 06, 2007 10:01 am
Location: United States
Full name: Mike Leany

Is it worth it to search them?

Post by xsadar »

I actually had been contemplating the question of whether it's even worth it to search underpromotions in my new engine. I would recognize them and be able to deal with them no matter what I do, but I was thinking of having my engine just ignore them unless and until they're actually played. With the way I'm doing my move generator, it would require a small amount of extra work (and processing time) to get it to search them after non-capture moves instead of before them, but of course just ignoring them saves time in both move generation and the search. So is that small amount of saved time worth not seeing them when underpromotion is the best move?

Any thoughts?
Gerd Isenberg
Posts: 2250
Joined: Wed Mar 08, 2006 8:47 pm
Location: Hattingen, Germany

Re: Is it worth it to search them?

Post by Gerd Isenberg »

xsadar wrote:I actually had been contemplating the question of whether it's even worth it to search underpromotions in my new engine. I would recognize them and be able to deal with them no matter what I do, but I was thinking of having my engine just ignore them unless and until they're actually played. With the way I'm doing my move generator, it would require a small amount of extra work (and processing time) to get it to search them after non-capture moves instead of before them, but of course just ignoring them saves time in both move generation and the search. So is that small amount of saved time worth not seeing them when underpromotion is the best move?

Any thoughts?
Being not aware a promoted knight checks plus eventually forking queen or hanging rook looks dangerous to me. It will happen up and then - most likely not in testgames but important tournaments ;-)

I generate underpromotion conditionally after unmaking the queen promotion without cutoff. If the promoted queen got captured (best reply), I don't generate them at all, because one can at least capture the underpromoted piece as well with same score. Otherwise, I generate knight-promotion and if queen-promotion returns stalemate score, even bishop- and rook-promotions. Seems to cover most issues

[d] 8/4P3/1P2P3/4b3/8/PNk5/P1p2P2/K5B1 w - -

Are there counter examples where the above heuristic fails?