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
fractal null move
Moderators: hgm, Rebel, chrisw
-
- Posts: 373
- Joined: Wed Mar 22, 2006 10:17 am
- Location: Novi Sad, Serbia
- Full name: Karlo Balla
Re: fractal null move
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.
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.
Karlo Balla Jr.
-
- Posts: 536
- Joined: Thu Mar 09, 2006 3:01 pm
Re: fractal null move
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.
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.
-
- Posts: 893
- Joined: Mon Jan 15, 2007 11:23 am
- Location: Warsza
Re: fractal null move
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.
-
- Posts: 373
- Joined: Wed Mar 22, 2006 10:17 am
- Location: Novi Sad, Serbia
- Full name: Karlo Balla
Re: fractal null move
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.
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.
Karlo Balla Jr.
Re: fractal 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.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.
Tony
-
- Posts: 373
- Joined: Wed Mar 22, 2006 10:17 am
- Location: Novi Sad, Serbia
- Full name: Karlo Balla
Re: fractal null move
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.
Karlo Balla Jr.
-
- Posts: 1822
- Joined: Thu Mar 09, 2006 11:54 pm
- Location: The Netherlands
Re: fractal null move
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
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
-
- Posts: 893
- Joined: Mon Jan 15, 2007 11:23 am
- Location: Warsza
Re: fractal null move
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.
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.
Re: fractal null move
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
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