Desperado wrote:But before i leave, what happens if you simply disable your trans-code ?
I think you're right. For a start rep should start at 1, not zero... As for i += 2 i/o 4, I'm not sure. 2 is safer anyway. I'm running a test match now. We'll see
sje wrote:An easy test for repetition draw detection:
1) In your chess program, add a routine that will play a game with each move selected at random. This routine also reports back the reason (one of five possible) that the game ended.
2) Call the above routine a million times and summarize the results.
3) If the number of games that ended by repetition is about 2.6% of the total, then the repetition detection code is probably working.
Good test. I tried it and found a bug in my function IsTripleRepetition(), such that only 1.2% of games ended as repetition draws. A simple off-by-one bug. Hypnotised by the word "triple", I was looking for 3 matches of the current position to historical ones, instead of 2.
Before passing round the cigars and celebrating a huge ELO increase from the bug- fix, I remembered that IsTripleRepetition() isn't actually used in the search. A faster function IsRepetition() suffices, and there was no bug in that. IsTripleRepetition() gets called only in console play. Still, it's good to have found and fixed a bug. Thanks.
sje wrote:An easy test for repetition draw detection:
1) In your chess program, add a routine that will play a game with each move selected at random. This routine also reports back the reason (one of five possible) that the game ended.
2) Call the above routine a million times and summarize the results.
3) If the number of games that ended by repetition is about 2.6% of the total, then the repetition detection code is probably working.
Good test. I tried it and found a bug in my function IsTripleRepetition(), such that only 1.2% of games ended as repetition draws. A simple off-by-one bug. Hypnotised by the word "triple", I was looking for 3 matches of the current position to historical ones, instead of 2.
Before passing round the cigars and celebrating a huge ELO increase from the bug- fix, I remembered that IsTripleRepetition() isn't actually used in the search. A faster function IsRepetition() suffices, and there was no bug in that. IsTripleRepetition() gets called only in console play. Still, it's good to have found and fixed a bug. Thanks.
Robert P.
I've tested, and I can assure you that it's time for the cigars
as you exaplain quite rightly, the point is that the function called in the search should not search triple repetition but simply repetition...
Does it have to be a million games to get good results? Could I get away with 100k games?
My engine is so slow it would take me 1.48 million seconds or about 17 days to run, compared to your 204 seconds?? (I'm in c#, and a 1.8Ghz single core, but it really shouldn't be creating that much of a difference)
Does it have to be a million games to get good results? Could I get away with 100k games?
My engine is so slow it would take me 1.48 million seconds or about 17 days to run, compared to your 204 seconds?? (I'm in c#, and a 1.8Ghz single core, but it really shouldn't be creating that much of a difference)
These games are random games and do not use any search. My posted result was from a single thread on a 2.67 GHz Xeon 5150.