For those that like to toy with Ethereal...

Discussion of chess software programming and technical issues.

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
AndrewGrant
Posts: 494
Joined: Tue Apr 19, 2016 4:08 am
Location: U.S.A
Full name: Andrew Grant
Contact:

Re: For those that like to toy with Ethereal...

Post by AndrewGrant » Thu Oct 31, 2019 9:46 pm

Dann Corbit wrote:
Thu Oct 31, 2019 6:55 pm
No difference in my test, but I discovered that Arena was logging like mad (I had a 550 MB arena.debug file) so I think the result cannot be trusted.

Code: Select all

   Program                          Elo    +   -   Games   Score   Av.Op.  Draws
 1 Ethereal-stopr                 : 3333   11  11  1475    50.1 %   3333   58.6 %
 2 Ethereal-ethpr                 : 3333   11  11  1475    49.9 %   3333   58.6 %
 

Code: Select all

NMPFormula vs master DIFF

ELO   | 0.62 +- 1.98 (95%)
SPRT  | 10.0+0.1s Threads=1 Hash=8MB
LLR   | -2.96 (-2.94, 2.94) [0.00, 5.00]
Games | N: 46370 W: 9180 L: 9097 D: 28093
Not bad, but Ill stick with current master.

Michael Sherwin
Posts: 3046
Joined: Fri May 26, 2006 1:00 am
Location: WY, USA
Full name: Michael Sherwin

Re: For those that like to toy with Ethereal...

Post by Michael Sherwin » Sat Nov 23, 2019 6:03 pm

Dann Corbit wrote:
Wed Oct 30, 2019 9:22 pm
You can get a very close approximation to the Stockfish null move pruning with this formula:

Code: Select all

        R = ( ( 13 + depth ) >> 2 ) + MIN(3, (eval - beta) / 185);
I was still using the old log formula in RomiChess. This one works better. RomiChessX 55.5/100 against last released RomiChess. Did another 100 game test with same result. Formulas like these are going to constantly be a moving target as algorithms and hardware get faster. The question about null move that needs answered is the max useful depth. Let's assume some exaggerated numbers. If the search depth remaining is 20 or 30 or 40 does null move need to be searched any more than say 12 ply or maybe only 10 ply is needed. If the side that is given two moves in a row cannot pull a rabbit out of its hat in 12 ply it seems unlikely that 20 ply will make a difference. Especially when it is not really that sides move anyway.

I'm experimenting with NMR instead of NMP. That let's the engine just call Qsearch and if there is no immediate capture threat the engine does not prune. It only reduces depth by one or two ply and keeps searching. It seems no worse. However, the formula above essentially does only a Qsearch anyway for depths up to 8 or 9 and prunes on just a Qsearch. So, maybe below a certain depth pruning may be best and just reducing the search above that depth. It is like having a verification search for the deeper depths.
I hate if statements. Pawns demand if statements. Therefore I hate pawns.

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

Re: For those that like to toy with Ethereal...

Post by PK » Mon Nov 25, 2019 6:19 am

Recently I noticed that (eval - beta) part of such formulas - I used 3 + depth / 4 += std::min(3, (eval - beta) / 200) - increases time to solution in certain tactial positions, where you need to sacrifice a piece and play a couple of quiet moves material down.

Post Reply