Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: To Dr. Hyatt (bug in Crafty?)

Author: Robert Hyatt

Date: 16:14:12 10/17/02

Go up one level in this thread


On October 17, 2002 at 15:12:06, Sergei S. Markoff wrote:

>Hello Robert!
>
>================
>>[block 1]
>1.1 >wfile > bfile+1 if it is btm
>1.2 >wfile+1 > bfile+1 if it is wtm
>>>    if (wfile+wtm > bfile+1) {
>>>      if (wfile < FirstOne8Bit(tree->pawn_score.allb))
>>>        pscore+=WON_KP_ENDING;
>>>    }
>[skip]
>>[block 3]
>3.1 >bfile > wfile+1 if it is btm
>3.2 >bfile > wfile if it is wtm
>>Note that the test above is the same as the test in block 1 above.
>
>>>    if (bfile > wfile+1-wtm) { // must be "(bfile > wfile+1-!wtm)" ??
>>>      if (bfile < FirstOne8Bit(tree->pawn_score.allw))
>>>        pscore+=-WON_KP_ENDING;
>>>    }
>[skip]
>=======================
>
>> Note that the two inequalities:
>
>OK, Robert, mathematically that's all right, no questions.
>But I see another problem: what this blocks means logically?
>Logically your code means that 1.1 and 3.1 works both when btm.
>But I think that in first case (1.1) it must be when btm, and in the
>second case (3.1) it must be when _wtm_. It's because of wtm means
>that white has one ply in reserve and btm means that black has
>one ply in reserve. "Block1" goal is finding the won ending for the
>white, "block2" goal is finding the won ending for the black. The first
>condition is "(_this_ side king file must be > _other_ side
>king file if _this_ side to move) or (_this_ side king file must be >
>_other_ side king file +1 if _other_ side to move). But in your
>code "this" side in both blocks 1 and 2 is _black_. Why?
>
>In SmarThink I have a simple debug mechanism: function MirrorPosition().
>When debugging I switch off all asymmetrical factors and try to evaluate
>both current position (when searching) and mirrored position (the example of
>mirroring: source pos - white: a2,Ka1; black: Nh8,Kh7; wtm; dest pos -
>white: Nh1,Kh2; black: a7,Ka8; btm;). The evaluations must be
>exactly equal. If no - I have the symmetry error. The part of Crafty code
>that is showed before seems to be asymmetrical...
>
>Or I'm wrong? Sorry for wasting your time and my bad english...
>
>>>P.S. Why Crafty is still not using (ext-d) futility pruning / razoring?
>
>>I didn't like them the last time I tried them.  I am trying to find time to
>>evaluate code that was recently sent to me, but time is not easy
>>to come by right now.
>
>Aha...
>The fact that fp/razoring is generally bad in several endgames when
>positional score can be large (for example: pawn endings). In SmarThink
>I have dynamical fp/razoring bounds which depends of material on board.
>I'm also using additional pruning techniques. But the large problem
>for the pruning is trajectory-cutting effect. It's also can be caused
>by the null-move pruning. If the piece must do a long way to the goal,
>this way can be "cutted" by pruning. There are several positions not
>only in endgames in which this effect does his evil job.
>And the last sentence about pruning. I saw that Ruffian plays very
>well in endgames. I think that probably one reason of that is the
>successful solution of "trajectory-cutting" problem.
>
>>>P.P.S. I'm not supports your optimism about new extension limitation scheme, my
>>>test shows that old scheme is better... But I may be wrong.
>
>>It isn't clear to me yet, but I like the more consistent time between each
>>successive iteration, all else being equal. I'm trying to slow down
>>the extensions, not kick them into high gear, for real games rather than
>>test p[ositions...
>
>Aha. You're right. Using most of tactical testsets for determining
>the real strenght of engine is a bad idea. For example, sorry for offtopic,
>I found that singular extensions in SmarThink isn't important in testsets.
>But version with this extensions is more successful against other engines
>in sparring. Why? I think that it's because of singular extensions is a
>good compensation for not using ONEREP_EXTENSION and SmarThink non-usual
>pruning methods...
>
>Sincerelly yours,
>Sergei
>
>P.S. Oh, I'm forget. About ChangeSide. It is interesting. I will test
>it on several compilers.


The point (I hope) in that code is that btm == 1 - wtm

So anywhere you want btm, you replace it by 1-wtm and it should work...

I'm giving a test so I can't pay very careful attention to it right now but when
I get home
tonight I'll look at it again...



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.