fractal null move

Discussion of chess software programming and technical issues.

Moderators: hgm, Harvey Williamson, bob

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
Post Reply
PK
Posts: 820
Joined: Mon Jan 15, 2007 10:23 am
Location: Warsza
Contact:

fractal null move

Post by PK » Wed Nov 28, 2007 12:36 pm

a day after publishing new hopeless/clericus I stumbled upon a couple of possible improvements.

after a couple of beers I tried to create new parameters for a late move reduction, to do some statistics and so on... it appears that LMR works best directly after a null move, where it is least likely to spoil something. the gain in node count was about 15%.

the explanation is simple - when a null move fails, the second player usually uses some sort of axe (capture, check, killer move) than subtle positional carving. so it's perfectly safe to reduce non-checking moves placed, say, in the bottom half of the move list. this way one effectively gets R = 2,5 (hence the name)

now I use a very crude approximation (an example doesn't contain information about the rest of extensions / reductionc )

MakeMove( Current );

if ( lastMoveWasNull )
and ( not inCheck )
and ( Current.ListLocation > 16 )
then NewDepth := NewDepth - PLY
else NewDepth := OldDepth;

Temp := Search( -Beta, -Alfa, NewDepth );

UnmakeMove( Current );

and that's all - no researching, no sophisticated conditions that may be needed elsewhere. what do You think about it?

pawel koziol
www.koziol.home.pl/clericus

Karlo Bala
Posts: 301
Joined: Wed Mar 22, 2006 9:17 am
Location: Novi Sad, Serbia

Re: fractal null move

Post by Karlo Bala » Wed Nov 28, 2007 1:41 pm

Hi :)
I'm not expert for LMR like Tord, but I'll try to say something.
I think that you push to many lines past horizon. LMR idea is not to reduce moves that are easily refuted by NULL move, but moves that are not dangerous and are not refuted by NULL move.
Best Regards,
Karlo Balla Jr.

brianr
Posts: 356
Joined: Thu Mar 09, 2006 2:01 pm

Re: fractal null move

Post by brianr » Wed Nov 28, 2007 6:18 pm

Perhaps you meant "factional" null move, which has been around for years.

Fractals are something else entirely

http://en.wikipedia.org/wiki/Fractals


PS In the list of constraints, it looks like there must be more than 16 moves. This is often not the case. Instead, I would suggest testing the "other way": looking for potential moves to reduce after the first N moves have been tried.

PK
Posts: 820
Joined: Mon Jan 15, 2007 10:23 am
Location: Warsza
Contact:

Re: fractal null move

Post by PK » Wed Nov 28, 2007 6:19 pm

well, I think that given the specific properties of a position after the opponent has made a null move (you played something supposed to be normal and he yells out: your position sucks so much that I don't need to do anything) LMR is safer than anywhere else. that's the whole point of my post.

Karlo Bala
Posts: 301
Joined: Wed Mar 22, 2006 9:17 am
Location: Novi Sad, Serbia

Re: fractal null move

Post by Karlo Bala » Wed Nov 28, 2007 8:28 pm

Yes, I know what you trying to say, but....
You don't know if NULL move is going to fail or not. In other words, you search some moves by doing NULL move with depth - 1 - R, and other moves with DEPTH - 1 - R - 1. Reducing so much in search depth could push lot of tactics past horizon. You can always prune more by increasing R in NULL move, but real problem is to find proper way to reduce moves that can't be pruned by NULL move.
Best Regards,
Karlo Balla Jr.

Tony

Re: fractal null move

Post by Tony » Thu Nov 29, 2007 7:32 am

Karlo Bala wrote:Yes, I know what you trying to say, but....
You don't know if NULL move is going to fail or not. In other words, you search some moves by doing NULL move with depth - 1 - R, and other moves with DEPTH - 1 - R - 1. Reducing so much in search depth could push lot of tactics past horizon. You can always prune more by increasing R in NULL move, but real problem is to find proper way to reduce moves that can't be pruned by NULL move.
Probably Pawel uses the Fruit method, only nullmoving when eval>beta. If so, chances that a non-capture,non-check (lmr candidates) can refute the nullmove are pretty low.

Tony

Karlo Bala
Posts: 301
Joined: Wed Mar 22, 2006 9:17 am
Location: Novi Sad, Serbia

Re: fractal null move

Post by Karlo Bala » Thu Nov 29, 2007 9:34 am

If eval is much higher than beta (2-3 pawn, piece or more) then it is safe to look only tactical moves after NULL move, because quiet moves is not going to refute NULL move. If eval is close to beta (+/- pawn/4), then I think it is not safe to reduce to much positional moves after NULL move, because there is lot of chance that some of them will change eval of whole line.
Best Regards,
Karlo Balla Jr.

diep
Posts: 1780
Joined: Thu Mar 09, 2006 10:54 pm
Location: The Netherlands
Contact:

Re: fractal null move

Post by diep » Mon Dec 03, 2007 12:38 am

hi, Had seen you post this first in Polish mailing list,
seems trying to translate that posting was not really needed.

Whatever you say, i see it as that you are doing R=3 in many cases,
not R=2.5

So why not directly throw away LMR and use R=3 everywhere?

Vincent
PK wrote:a day after publishing new hopeless/clericus I stumbled upon a couple of possible improvements.

after a couple of beers I tried to create new parameters for a late move reduction, to do some statistics and so on... it appears that LMR works best directly after a null move, where it is least likely to spoil something. the gain in node count was about 15%.

the explanation is simple - when a null move fails, the second player usually uses some sort of axe (capture, check, killer move) than subtle positional carving. so it's perfectly safe to reduce non-checking moves placed, say, in the bottom half of the move list. this way one effectively gets R = 2,5 (hence the name)

now I use a very crude approximation (an example doesn't contain information about the rest of extensions / reductionc )

MakeMove( Current );

if ( lastMoveWasNull )
and ( not inCheck )
and ( Current.ListLocation > 16 )
then NewDepth := NewDepth - PLY
else NewDepth := OldDepth;

Temp := Search( -Beta, -Alfa, NewDepth );

UnmakeMove( Current );

and that's all - no researching, no sophisticated conditions that may be needed elsewhere. what do You think about it?

pawel koziol
www.koziol.home.pl/clericus

PK
Posts: 820
Joined: Mon Jan 15, 2007 10:23 am
Location: Warsza
Contact:

Re: fractal null move

Post by PK » Wed Dec 05, 2007 11:08 am

good to hear that Polish mailing list is vieved by You!

actually I'm doing adaptative null move as well, so my "fractal dimension" is 2.5 or 3.5. Additional LMR is done only once on the path.

This may sound very speculative, but I am yet to find a position where program plays a different move because of that. null move search changes don't seem too critical.

If I find a position where it's not the case, I'll modify this technique or scrap it entirely.

Mangar

Re: fractal null move

Post by Mangar » Wed Dec 05, 2007 12:39 pm

Hi Pawel,

I wonder why you gain that much nodes simply by reducing the moves searched after move 16 by depth = 1. It seems unlogic as those nodes shouldn´t need much nodes to search. Their depth allready have been reduced by 2 or 3 (nullmove), they are not in pv or any other cases where no nullmoves are done, they should be easily to refute ...


If you gain a measurable amount of nodes by reducing them I thing you have a bug or you tests are bad. Remember that by testing only a small amount of positions there is allways a huge random effect by search instabilities or ordering effects.

My advice: do not ask for opigions but make a valid statistic. Count the amount of false reductions at any node but nodes after nullmove and count then after a nullmove. Then calulate and compare the error rate.

I don´t think that it will be different than any position having the same poperties (that you test before making a nullmove).

Greeings Volker

Post Reply