statistics, testing and frustration

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

sandermvdb
Posts: 160
Joined: Sat Jan 28, 2017 1:29 pm
Location: The Netherlands

Re: statistics, testing and frustration

Post by sandermvdb »

xr_a_y wrote: Wed Sep 12, 2018 10:35 pm Really appreciate you take time to check weini game. May I ask what analysis tool you are using on the pgn?
I use Arena to open the pgn and looked for the game where Weini lost the quickest :P That game was imported in lichess which easily spotted the blunder.
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: statistics, testing and frustration

Post by xr_a_y »

Edsel Apostol wrote: Wed Sep 12, 2018 9:12 pm I think most strong engines doesn't check for && score < beta anymore.
Usually you don't store a bestmove in the TT if score is equal or below alpha.
I think Xiphos and Vajolet is doing both.Didn't check others.
And when I remove that, Weini is losing elo (and does not solve fine70 anymore, I mean fast enough ...).
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: statistics, testing and frustration

Post by xr_a_y »

Testing some advices given in this threat this week, I finally found something that wins some elo.

In Weini, I used to use the TT move only if

Code: Select all

!fromPV || ttt.t_type == Transposition::tt_exact
I now switch as (almost) Xiphos to (both in search and qsearch)

Code: Select all

!fromPV ||
                (ttt.t_type == Transposition::tt_exact
                   && ttt.score > alpha
                   && ttt.score < beta) ||
                (ttt.t_type == Transposition::tt_alpha
                   && ttt.score <= alpha) ||
                (ttt.t_type == Transposition::tt_beta
                   && ttt.score >= beta) ) )
Moreover, I used to not use the TT move directly (i.e. return a score immediatly) if it leads to a draw (I was afraid of false draw score due to 3 reps but now I use only 1 rep so probably no need to worry anymore). I now use the TT move (under the previous conditions) also if it leads to a draw.
asanjuan
Posts: 214
Joined: Thu Sep 01, 2011 5:38 pm
Location: Seville, Spain

Re: statistics, testing and frustration

Post by asanjuan »

xr_a_y wrote: Fri Sep 14, 2018 7:56 pm

Code: Select all

!fromPV ||
                (ttt.t_type == Transposition::tt_exact
                   && ttt.score > alpha
                   && ttt.score < beta) ||
                (ttt.t_type == Transposition::tt_alpha
                   && ttt.score <= alpha) ||
                (ttt.t_type == Transposition::tt_beta
                   && ttt.score >= beta) ) )
Moreover, I used to not use the TT move directly (i.e. return a score immediatly) if it leads to a draw (I was afraid of false draw score due to 3 reps but now I use only 1 rep so probably no need to worry anymore). I now use the TT move (under the previous conditions) also if it leads to a draw.
I think you are messing around a bit with TT.
This is what I do, I think that is what everyone is using, and it is pretty simple:

Code: Select all

	THashEntry entry;
	if (Hash.hash_get(Current->key, &entry)){
		
		if (TO_MOVE(entry.move) != NULL_MOVE && is_pseudolegal(TO_MOVE(entry.move))){			
			trans_move = TO_MOVE(entry.move);
			pv_copy( trans_move );			
		}
		
		entry.eval = hash_value_get(entry.eval, root_distance() );
		if (entry.ok_to_prune(depth, alpha, beta)){
			return entry.eval;
		}
		
	}
the ok_to_prune function looks like this:

Code: Select all

	
	bool THashEntry::ok_to_prune(int depth, int alpha, int beta){
	return (
		(isMate(this->eval) && this->type == typeExact) 		
		|| (
			(this->depth >= depth) && 
				(
				(this->type == typeExact) ||
				(this->type == typeAlpha && this->eval <= alpha) ||
				(this->type == typeBeta  && this->eval >= beta)
				)
			)
		);
	}
the isMate condition is not a real improvement, but shows shorter mates.
regards.
Still learning how to play chess...
knigths move in "L" shape ¿right?
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: statistics, testing and frustration

Post by Guenther »

sandermvdb wrote: Wed Sep 12, 2018 10:15 pm I just downloaded the games Weini 0.0.20 played in the CCRL 40/4. This is the game it has lost in the least number of moves:
https://lichess.org/aoEmr338

It looks like a 3-fold repetition bug where it just throws away its queen and therefore loses the match.
Sander is quite right. You have at least a serious repetition bug!
I downloaded the commented CCRL 40/40 for Weini 0.023 and cleaned it with a script,
thus Toms GameAnalyser can read it (filtered out won games before with Scid because
we are not interested in those)

Fiddled a bit with some settings in TGA and found at least 3 games already in a few minutes,
which have the same symptom.
When a rep is on the horizon even when eval is worse it suddenly starts to blunder a piece
or worsens its position instead of trying to force a repetition and take the draw. (or even 50 moves draw)

Here are two examples from the first sample (Weini White).

Example1:
Asymptotes eval also is wrong for a long while and Weini showing around -0.84 has a comfortable
positionally draw and could have just sat with its K around the Black passer on e3 awaiting a 3 time rep
or a 50 moves draw as Black can do nothing.
Instead it suddenly created a decisive weakness with 119.g6??
I could understand it if would show a positive score and attempts to win.

[pgn] [Event "CCRL 40/40"] [Site "CCRL"] [Date "2018.08.23"] [Round "626.2.687"] [White "Weini 0.0.23 64-bit"] [Black "Asymptote 0.1.8 64-bit"] [Result "0-1"] [WhiteElo "2241"] [BlackElo "2177"] [ECO "D30"] [Opening "QGD"] [PlyCount "255"] 1.d4 {book} 1...d5 {book} 2.c4 {book} 2...e6 {book} 3.Nf3 {book} 3...Nf6 { book} 4.Bg5 {book} 4...h6 {book} 5.Bxf6 {book} 5...Qxf6 {book} 6.Nbd2 { book} 6...Be7 {book} 7.e3 {+0.07/16 40} 7...a5 {-0.24/12 30} 8.Bd3 { +0.62/14 49} 8...Nc6 {-0.17/11 32} 9.O-O {+0.59/16 49} 9...g5 {-0.19/12 35 } 10.Qe2 {+0.63/13 33} 10...Bd7 {-0.01/12 38} 11.cxd5 {+0.72/13 49} 11... exd5 {-0.03/13 58} 12.Bb5 {+0.49/15 49} 12...O-O {-0.03/12 31} 13.Bxc6 { +0.63/14 49} 13...Qxc6 {-0.01/13 39} 14.Ne5 {+0.53/16 48} 14...Qd6 { -0.04/12 54} 15.Rfc1 {+0.54/13 31} 15...Bf5 {+0.06/12 91} 16.Qf3 {+0.47/14 48} 16...Bh7 {+0.05/12 50} 17.Nb3 {+0.52/14 27} 17...f6 {+0.29/12 31} 18. Ng4 {+0.16/18 49} 18...a4 {+0.34/13 42} 19.Nc5 {+0.94/16 35} 19...b6 { +2.27/13 28} 20.Nxh6+ {-1.01/19 346} 20...Kg7 {+2.22/14 24} 21.Nf5+ { -0.87/17 24} 21...Bxf5 {+2.27/15 24} 22.Qxf5 {-0.91/18 32} 22...bxc5 { +2.27/15 77} 23.Rxc5 {-1.03/18 32} 23...Rfd8 {+2.20/14 80} 24.Qc2 { -1.00/16 31} 24...Ra7 {+2.29/13 29} 25.Rc1 {-0.98/16 31} 25...Rb8 { +2.31/13 69} 26.Rc6 {-0.88/12 31} 26...Qd8 {+2.33/13 25} 27.Rc3 {-1.26/13 31} 27...Bd6 {+2.40/12 47} 28.Qe2 {-1.26/13 31} 28...Rab7 {+2.58/11 23} 29.R3c2 {-1.25/14 21} 29...Qd7 {+2.55/10 46} 30.h3 {-1.27/13 31} 30...Rb4 {+2.70/12 43} 31.Rb1 {-1.33/14 31} 31...a3 {+2.69/12 44} 32.b3 {-1.16/13 31} 32...Qe6 {+2.66/11 44} 33.Rd1 {-1.23/11 30} 33...Re8 {+2.70/12 44} 34. Re1 {-1.33/13 30} 34...Qe4 {+2.76/12 44} 35.Kf1 {-1.31/13 17} 35...f5 { +2.72/12 44} 36.Qh5 {-1.37/15 32} 36...Qxc2 {+2.79/12 22} 37.Qxe8 { -1.03/15 30} 37...Qd3+ {+2.35/12 49} 38.Re2 {-1.01/15 29} 38...Qb1+ { +2.31/14 49} 39.Re1 {-1.01/14 29} 39...Qe4 {+2.20/14 46} 40.Qd7+ {-0.95/15 24} 40...Kf6 {+1.38/14 52} 41.Qd8+ {-0.52/15 32} 41...Qe7 {+1.31/13 19} 42.Qh8+ {-0.53/16 38} 42...Qg7 {+1.38/13 23} 43.Qa8 {-0.50/16 38} 43...Rb5 {+1.25/13 49} 44.Qd8+ {-0.10/17 35} 44...Qe7 {+1.05/14 39} 45.Qh8+ { -0.39/18 38} 45...Ke6 {+1.09/15 54} 46.Qc8+ {-0.33/18 38} 46...Qd7 { +1.09/14 20} 47.Qg8+ {-0.35/18 38} 47...Qf7 {+1.14/14 27} 48.Qxg5 { -0.36/18 38} 48...Rb8 {+1.16/13 72} 49.Qh4 {-0.36/16 38} 49...Rg8 { +1.17/12 35} 50.Re2 {-0.45/16 38} 50...Qg6 {+1.30/13 37} 51.f4 {-0.59/20 38} 51...Be7 {+1.25/12 83} 52.Qf2 {-0.59/18 38} 52...Qg3 {+1.31/15 50} 53. Qxg3 {-0.63/17 38} 53...Rxg3 {+1.37/18 26} 54.Ke1 {-0.63/21 30} 54...c6 { +1.37/17 20} 55.Kd2 {-0.88/18 30} 55...Bb4+ {+2.18/14 37} 56.Kd3 {-1.03/19 31} 56...Bd6 {+2.43/17 27} 57.Kc2 {-1.12/18 31} 57...c5 {+2.59/17 19} 58. dxc5 {-1.03/18 19} 58...Bxc5 {+2.66/17 37} 59.Kd2 {-1.03/20 32} 59...Kf7 { +2.66/17 18} 60.Kd3 {-1.19/19 32} 60...d4 {+2.63/17 79} 61.Kc4 {-1.19/18 32} 61...Rxe3 {+2.64/16 21} 62.Rxe3 {-1.22/16 33} 62...dxe3 {+2.66/23 26} 63.Kd3 {-1.30/17 25} 63...Kg6 {+2.68/23 66} 64.Ke2 {-1.30/18 26} 64...Kh5 {+2.68/19 60} 65.g3 {-1.30/18 26} 65...Kg6 {+2.69/21 54} 66.Kf3 {-1.30/18 27} 66...Kf7 {+2.70/21 17} 67.Ke2 {-1.31/17 28} 67...Bd4 {+2.71/22 17} 68. g4 {-1.31/18 29} 68...Ke6 {+2.70/16 33} 69.Kd3 {-1.46/16 29} 69...Bc5 { +2.71/21 39} 70.b4 {-1.43/15 17} 70...Bb6 {+2.71/20 37} 71.g5 {-1.43/17 32 } 71...Kf7 {+2.73/22 34} 72.b5 {-1.43/18 34} 72...Kg7 {+2.71/20 19} 73.Ke2 {-1.43/20 36} 73...Kg6 {+2.73/19 18} 74.Kf3 {-1.43/19 37} 74...Kh5 { +2.73/24 31} 75.Ke2 {-1.43/21 40} 75...Ba7 {+2.72/23 25} 76.Kd3 {-1.42/20 41} 76...Kg6 {+2.73/21 42} 77.Ke2 {-1.42/18 47} 77...Bd4 {+2.70/24 21} 78. Kd3 {-1.42/19 53} 78...Kh5 {+2.70/21 38} 79.Ke2 {-1.42/19 64} 79...Bb6 { +2.71/23 55} 80.Kd3 {-1.40/20 69} 80...Bc5 {+2.69/23 55} 81.Ke2 {-1.40/17 23} 81...Kg6 {+2.71/22 149} 82.Kd3 {-1.33/18 14} 82...Bb6 {+2.72/23 62} 83.Ke2 {-1.33/19 25} 83...Kg7 {+2.70/22 128} 84.Kf3 {-1.33/19 25} 84...Bc5 {+2.70/25 19} 85.Ke2 {-1.33/18 25} 85...Bd4 {+2.70/23 16} 86.Kf3 {-1.33/20 25} 86...Ba7 {+2.69/22 43} 87.Ke2 {-1.33/19 26} 87...Kg6 {+2.66/23 17} 88. Kd3 {-1.33/19 26} 88...Bc5 {+2.67/18 21} 89.Ke2 {-1.33/19 26} 89...Kg7 { +2.64/22 50} 90.Kf3 {-1.33/19 27} 90...Bd4 {+2.65/22 93} 91.Ke2 {-1.33/19 27} 91...Kh7 {+2.57/20 89} 92.Kf3 {-1.43/19 27} 92...Ba7 {+2.17/25 19} 93. Ke2 {-1.43/19 28} 93...Kg7 {+2.57/24 22} 94.Kf3 {-1.43/20 28} 94...Kf7 { +1.75/24 35} 95.Ke2 {-1.43/17 29} 95...Bc5 {+1.71/21 73} 96.Kd3 {-1.43/17 29} 96...Bb6 {+1.72/22 32} 97.Ke2 {-1.43/19 29} 97...Ke8 {+1.72/22 62} 98. h4 {-0.76/18 27} 98...Kf8 {+1.68/24 14} 99.h5 {-0.81/17 31} 99...Kg7 { +1.71/23 54} 100.Kf3 {-0.71/16 31} 100...Bd4 {+1.69/23 13} 101.Ke2 { -0.80/16 32} 101...Bc5 {+1.68/23 18} 102.Kf3 {-0.80/16 32} 102...Bb6 { +1.10/23 14} 103.Ke2 {-0.80/16 33} 103...Ba7 {+1.67/21 12} 104.Kf3 { -0.80/16 34} 104...Kg8 {+1.68/22 20} 105.Ke2 {-0.80/16 35} 105...Kf7 { +1.71/16 24} 106.Kd3 {-0.80/16 35} 106...Kg7 {+1.72/22 17} 107.Ke2 { -0.80/16 36} 107...Bd4 {+1.69/22 37} 108.Kd3 {-0.80/17 37} 108...Bc5 { +1.67/19 33} 109.Ke2 {-0.79/16 39} 109...Kf7 {+1.72/22 14} 110.Kf3 { -0.80/16 40} 110...Bb6 {+1.72/21 28} 111.Ke2 {-0.80/16 42} 111...Kg8 { +1.72/17 25} 112.Kf3 {-0.80/17 43} 112...Bd4 {+1.71/22 25} 113.Ke2 { -0.80/16 45} 113...Kh7 {+1.71/16 25} 114.Kf3 {-0.89/17 48} 114...Ba7 { +1.73/20 21} 115.Ke2 {-0.88/17 49} 115...Bb6 {+1.72/20 26} 116.Kf3 { -0.84/18 51} 116...Kg8 {+1.72/23 17} 117.Ke2 {-0.84/18 61} 117...Kh8 { +1.72/23 28} 118.Kd3 {-0.84/18 69} 118...Bc5 {+1.73/22 15} 119.g6 { -0.72/17 66} 119...Kg7 {+2.17/23 34} 120.Ke2 {+0.00/19 87} 120...Kh6 { +3.68/22 34} 121.Kd3 {-2.99/18 162} 121...Bd4 {+4.14/21 150} 122.Ke2 { -3.07/14 23} 122...Kxh5 {+4.67/22 57} 123.g7 {-3.22/16 23} 123...Bxg7 { +5.14/18 26} 124.Kxe3 {-4.01/17 23} 124...Kg4 {+5.65/19 77} 125.Kd3 { -5.82/18 166} 125...Bh6 {+5.49/15 40} 126.Kc4 {-12.39/18 150} 126...Bxf4 { +7.97/18 23} 127.Kd5 {-9.38/16 19} 127...Be3 {+9.08/20 25} 128.b6 { -9.88/15 19} 0-1[/pgn]

Example 2:
In this game it is even more visible. There was already a two time repetition after 57...Qf5, but suddenly
it played Nxb4?? with a slightly positive score though for only one ply (before always slightly negative).

[pgn][Event "CCRL 40/40"] [Site "CCRL"] [Date "2018.08.21"] [Round "627.3.151"] [White "Weini 0.0.23 64-bit"] [Black "Zevra 1.8.5 r664 64-bit"] [Result "0-1"] [WhiteElo "2241"] [BlackElo "2240"] [ECO "B40"] [Opening "Sicilian defence"] [PlyCount "163"] 1.e4 {book} 1...c5 {book} 2.Nf3 {book} 2...e6 {book} 3.b3 {book} 3...d6 { book} 4.Bb2 {book} 4...Nf6 {book} 5.Bb5+ {+0.08/16 38} 5...Bd7 {-0.02/20 21} 6.Nc3 {+0.11/17 38} 6...Bxb5 {+0.83/19 22} 7.Nxb5 {-0.16/17 37} 7... Nxe4 {+0.93/19 25} 8.O-O {-0.26/17 37} 8...Nc6 {+0.87/19 25} 9.c4 { -0.27/14 37} 9...a6 {+0.74/18 24} 10.Nc3 {-0.72/16 37} 10...Nxc3 {+1.44/19 22} 11.Bxc3 {-0.33/15 21} 11...e5 {+1.36/19 28} 12.Re1 {-0.90/16 36} 12... Be7 {+1.47/16 18} 13.d3 {-0.88/15 36} 13...O-O {+1.57/15 35} 14.Qe2 { -0.93/14 36} 14...f5 {+1.86/15 21} 15.a3 {-0.85/12 29} 15...g5 {+1.88/17 27} 16.Nd2 {-0.64/17 29} 16...g4 {+1.82/16 19} 17.Nf1 {-0.62/16 27} 17... Nd4 {+1.94/17 23} 18.Qd1 {-0.60/14 33} 18...Bg5 {+1.96/17 35} 19.Ne3 { -0.63/14 37} 19...Qd7 {+1.98/16 35} 20.Nd5 {-0.55/15 30} 20...Rae8 { +2.08/17 20} 21.Rb1 {-0.55/13 37} 21...b5 {+1.98/14 32} 22.a4 {-0.52/15 33 } 22...b4 {+2.24/19 30} 23.Bxd4 {-0.49/15 26} 23...exd4 {+2.25/21 34} 24. Rf1 {-0.46/15 36} 24...f4 {+2.67/18 21} 25.f3 {-0.35/16 35} 25...h5 { +2.54/18 35} 26.Rb2 {-0.34/16 31} 26...Rf7 {+2.62/17 40} 27.Re2 {-0.34/15 36} 27...Re5 {+2.52/18 25} 28.Rb2 {-0.41/15 36} 28...Qe6 {+2.86/15 42} 29. Rc2 {-0.47/15 36} 29...Bh4 {+2.91/18 23} 30.a5 {-0.41/16 35} 30...Rf8 { +2.81/16 32} 31.Nc7 {-0.40/16 20} 31...Qd7 {+2.81/18 25} 32.Nd5 {-0.40/17 37} 32...g3 {+2.72/17 46} 33.h3 {-0.37/16 25} 33...Qe8 {+2.70/19 24} 34. Qd2 {-0.40/15 37} 34...Bd8 {+2.85/18 38} 35.Ra2 {-0.42/16 37} 35...Bg5 { +2.68/18 38} 36.Qd1 {-0.44/16 36} 36...Rf7 {+2.84/20 27} 37.Qd2 {-0.41/15 22} 37...Qe6 {+2.80/18 31} 38.Rb1 {-0.40/17 22} 38...Bh6 {+2.67/18 59} 39. Kf1 {-0.38/18 28} 39...Qf5 {+2.67/19 66} 40.Raa1 {-0.30/18 33} 40...h4 { +2.67/20 60} 41.Re1 {-0.31/18 33} 41...Qc8 {+2.67/19 25} 42.Re2 {-0.26/17 18} 42...Bg7 {+2.66/18 21} 43.Rae1 {-0.15/18 27} 43...Qf8 {+2.66/18 18} 44.Rxe5 {-0.10/21 28} 44...Bxe5 {+2.54/20 21} 45.Qa2 {-0.10/26 32} 45... Qc8 {+2.56/18 31} 46.Qa4 {-0.10/25 32} 46...Kf8 {+2.56/21 25} 47.Re4 { -0.10/25 32} 47...Qe8 {+2.56/19 17} 48.Qa2 {-0.10/26 32} 48...Qd8 { +2.56/20 19} 49.Nb6 {-0.10/24 32} 49...Qe8 {+2.56/22 22} 50.Nd5 {+0.10/30 18} 50...Qd8 {+2.56/21 21} 51.Nb6 {-0.10/27 32} 51...Qe7 {+2.56/19 23} 52. Nd5 {-0.10/25 34} 52...Qe6 {+2.56/20 20} 53.Kg1 {-0.10/27 32} 53...Qd7 { +2.56/20 22} 54.Kf1 {-0.10/26 32} 54...Kg8 {+2.56/20 18} 55.Qd2 {-0.10/25 32} 55...Qf5 {+2.56/20 22} 56.Qa2 {-0.10/26 37} 56...Qd7 {+2.56/20 20} 57. Qd2 {-0.10/27 32} 57...Qf5 {+2.56/20 24} 58.Nxb4 {+0.10/30 24} 58...cxb4 { +3.65/18 31} 59.Qxb4 {-1.99/21 221} 59...Qc8 {+3.81/18 22} 60.Qa3 { -1.99/20 22} 60...Rb7 {+4.07/19 28} 61.Re1 {-2.05/19 22} 61...Qb8 { +4.09/20 24} 62.Rb1 {-2.05/19 22} 62...Rb4 {+4.26/20 39} 63.Kg1 {-2.51/20 22} 63...d5 {+4.74/20 40} 64.cxd5 {-2.88/18 22} 64...Kf7 {+5.30/20 36} 65. Qb2 {-2.65/18 22} 65...Qb5 {+5.42/20 25} 66.Qc2 {-2.97/18 22} 66...Qxd5 { +5.43/20 32} 67.Re1 {-3.09/18 22} 67...Qe6 {+5.71/18 42} 68.Kf1 {-3.34/20 22} 68...Rb5 {+5.96/19 29} 69.Qa2 {-3.50/20 22} 69...Qd5 {+5.97/19 28} 70. Qc2 {-3.53/19 22} 70...Rc5 {+5.96/20 38} 71.Qb2 {-3.62/18 22} 71...Rxa5 { +6.15/19 34} 72.b4 {-3.67/18 22} 72...Rb5 {+6.15/19 24} 73.Ra1 {-3.64/17 22} 73...Bd6 {+6.83/18 33} 74.Rxa6 {-4.09/16 22} 74...Rxb4 {+7.54/20 32} 75.Qc2 {-4.77/19 22} 75...Qb5 {+7.65/20 52} 76.Ra1 {-4.92/18 22} 76...Rb2 {+9.74/20 51} 77.Qc4+ {-5.22/21 22} 77...Qxc4 {+25.93/22 26} 78.dxc4 { -5.22/20 20} 78...d3 {#39/21 44} 79.Ra7+ {-10.99/17 18} 79...Kf6 {#19/23 41} 80.Ra1 {-15.05/16 22} 80...Bc5 {#15/22 53} 81.Ke1 {-78.12/18 26} 81... Ke7 {#13/20 28} 82.Kd1 {Black wins by adjudication} 0-1[/pgn]
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: statistics, testing and frustration

Post by xr_a_y »

Thanks a lot for this analysis. I guess 0.0.24 (not released yet) doesn't show the same issue but i'll check that twice. There are indeed strange things going on with draw even in the dev version...
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: statistics, testing and frustration

Post by xr_a_y »

asanjuan wrote: Fri Sep 28, 2018 9:36 am

Code: Select all

	
				(this->type == typeExact) ||
				(this->type == typeAlpha && this->eval <= alpha) ||
				(this->type == typeBeta  && this->eval >= beta)

Thanks for your inputs. So you suggest to use the TT move and return a score with it as soon as it is an exact score, even at a PV node ?
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: statistics, testing and frustration

Post by Sven »

Guenther wrote: Fri Sep 28, 2018 12:12 pm Example1:
Asymptotes eval also is wrong for a long while and Weini showing around -0.84 has a comfortable
positionally draw and could have just sat with its K around the Black passer on e3 awaiting a 3 time rep
or a 50 moves draw as Black can do nothing.
Instead it suddenly created a decisive weakness with 119.g6??
I could understand it if would show a positive score and attempts to win.
119.g6?! is not optimal but still a draw. The decisive error is 120.Ke2? where the only move that holds the draw is 120.Kc3! Therefore another possible explanation of the symptom would be that the search depth was not sufficient to see that Kc3 draws but Ke2 loses. The score 0.00 calculated for 120.Ke2, compared to -2.99 after the next move, makes this quite likely for me. I do not see a clear connection to the repetition topic in this case.
Sven Schüle (engine author: Jumbo, KnockOut, Surprise)
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: statistics, testing and frustration

Post by Guenther »

Sven wrote: Sat Sep 29, 2018 5:39 pm
Guenther wrote: Fri Sep 28, 2018 12:12 pm Example1:
Asymptotes eval also is wrong for a long while and Weini showing around -0.84 has a comfortable
positionally draw and could have just sat with its K around the Black passer on e3 awaiting a 3 time rep
or a 50 moves draw as Black can do nothing.
Instead it suddenly created a decisive weakness with 119.g6??
I could understand it if would show a positive score and attempts to win.
119.g6?! is not optimal but still a draw. The decisive error is 120.Ke2? where the only move that holds the draw is 120.Kc3! Therefore another possible explanation of the symptom would be that the search depth was not sufficient to see that Kc3 draws but Ke2 loses. The score 0.00 calculated for 120.Ke2, compared to -2.99 after the next move, makes this quite likely for me. I do not see a clear connection to the repetition topic in this case.
Hi Sven, I wrote this because 119.g6 was played with negative score (-0.72), why should one move a pawn, when the the 50 moves counter
already is at 20 and there was already a 2 time rep before I think? I don't think this requires a kind of fortress detection?
I don't know though what other programs do when eval is negative and there is a chance to accumulate the counter?
OTH there might be a problem with 50 moves draws too, may be I check more games later.
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
asanjuan
Posts: 214
Joined: Thu Sep 01, 2011 5:38 pm
Location: Seville, Spain

Re: statistics, testing and frustration

Post by asanjuan »

xr_a_y wrote: Fri Sep 28, 2018 5:07 pm
asanjuan wrote: Fri Sep 28, 2018 9:36 am

Code: Select all

	
				(this->type == typeExact) ||
				(this->type == typeAlpha && this->eval <= alpha) ||
				(this->type == typeBeta  && this->eval >= beta)

Thanks for your inputs. So you suggest to use the TT move and return a score with it as soon as it is an exact score, even at a PV node ?
Don't forget the depth condition in order to return a TT cutoff.
if entry->depth >= depth AND (the above conditions) then CUTOFF. returning alpha, beta or tt-value is irrelevant in a PVS search since the upper level of the search will discard the move or research it with more depth.

The only reason to not to prune and return in a PV node is because you want to print the whole pv in a re-search. But this is something cosmetic.

Just in case you couldn't prune the tree with a TT cutoff, if there is a move in your TT, then use it first in your move loop, even before you start to generate moves.

And yes, at PV nodes is the same.
Still learning how to play chess...
knigths move in "L" shape ¿right?