Author: Uri Blass
Date: 02:41:20 12/14/05
Go up one level in this thread
On December 14, 2005 at 03:23:46, Vasik Rajlich wrote: >On December 13, 2005 at 08:47:51, Chrilly Donninger wrote: > >>Just for the curious, below is the code for the Rybka-Mate bug. I have seen >>another bug in the Beta-Code too. There are in every programm hundreds of bugs, >>so it would be more surprising to say: I have seen no other bug. >> >>.text:0040CD07 mov ebp, [esp+868h+var_854] >>.text:0040CD0B cmp ebp, 0FFFF810Ch >>.text:0040CD11 mov dword_667A14, edi >>.text:0040CD17 jnz loc_40CDCA >>.text:0040CD1D mov eax, [esp+868h+arg_C] >>.text:0040CD24 neg al >>.text:0040CD26 pop edi >>.text:0040CD27 pop ebx >>.text:0040CD28 pop esi >>.text:0040CD29 pop ebp >>.text:0040CD2A sbb eax, eax >>.text:0040CD2C and eax, 0FFFF8300h >>.text:0040CD31 add esp, 858h >>.text:0040CD37 retn >> >>In C this reads as: >>if(Bestscore == -32500( // No legal move found >> if(InCheck) { >> return -32000; >> } >> else { // Stalemate >> return 0; >> } >>} >> >>The bug is, that all mates are the same. In fact shorter mates are better for >>the mate-giving side (or worse for the mated side) than longer mates. One has to >>subtract the Plies/Distance from the starting position. >>The bug is in my opinion a consequence of a bad design decision. There are 2 >>different "minus-infinite" values. In BestScore minus infinite is -32500, for >>mate its -32000. If one sets bestscore at the first place to -32000+Ply one gets >>cleaner and more efficient code and avoids the bug. >>I had the same bug in Nimzo 1.0. But I must admit, that Rybka 1.0 is stronger. >> >>Chrilly > >Thanks for the comments. I finally thought about this issue in more detail and >came up with an even better scheme - at least it's better as far as I can see. > >Rather than: > >mate score = BIGINT - plies from root > >it should be > >mate score = BIGINT - 50 move counter value > >This gets around the issue of aging mate-value hash entries and allows you to >put your search return value directly into the hash table. > >An engine might still prefer capturing something to mating, but whoever isn't >resigning under that circumstance deserves all the punishment he gets there :) > >Vas You can also simply have mate score=BIGINT-plies from the beginning of the game. Uri
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.