MikeGL wrote:[D]8/k2b4/p1b1b3/p2b1b2/2b1b3/8/8/K7 w - - 0 1
What's strange with this type of positions is that other
engines keeps on searching, while Rybka 4 is
just giving 0.00 from depth 1 without doing any searches.
Seems like a hardwired knowledge or pattern inside Rybka eval.
All other engines are giving a huge plus score for black.
Rybka can, I think, code this a little easier because it already separates the white squared and the black squared bishop as two different piecetypes everywhere, at least if that is still the same as in the time Larry was doing the evaluation tuning (Rybka 3). With Rainbow Serpent I don't think I can handle that many bishops as in your position but after a lot of added code, the same colored bishops positions are not a complete unknown phenomenon anymore. Probably I'm not being very efficient in coding it but all that new stuff with templates is just too complicated for a C amateur. If Marco types something like
Code: Select all
/// Endgames class stores in two std::map the pointers to endgame evaluation
/// and scaling base objects. Then we use polymorphism to invoke the actual
/// endgame function calling its apply() method that is virtual.
I'm completely lost there
It must be C+++ or something? But anyway
this Rainbow Serpent can do now:
[D]8/k7/4b3/3b4/8/8/8/K7 w - -
Engine: Stockfish Kingdefender (Rainbow Serpent, Build 107, Athlon 2009 MHz, 48 MB, using "critical node" singular extensions combined with suppression of LMR in the child ALL node) by Tord Romstad, Marco Costalba and Joona Kiiski
1/01 0:00 0.00 1.Kb1 (11) 0
2/02 0:00 0.00 1.Kb1 Bh3 (43) 0
3/03 0:00 0.00 1.Kb1 Bh3 2.Kb2 (176) 2
4/04 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 (856) 13
5/05 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 (2.735) 44
6/06 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 (4.108) 52
7/07 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 (7.090) 90
8/08 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 (13.619) 174
9/09 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 (22.211) 284
10/10 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 (35.834) 381
11/11 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (52.774) 561
12/12 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (80.464) 738
13/13 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (106.986) 855
14/14 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (144.124) 1029
15/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (191.077) 1110
16/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (248.170) 1327
17/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (316.193) 1443
18/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (399.979) 1599
19/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (502.423) 1691
20/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (625.665) 1742
21/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (766.263) 1815
22/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (928.040) 1856
23/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (1.106.378) 1914
24/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (1.306.306) 1943
25/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (1.540.872) 1972
26/15 0:00 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (1.802.157) 2022
27/15 0:01 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (2.064.969) 2002
28/15 0:01 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (2.379.137) 2004
29/15 0:01 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (2.738.258) 2037
30/15 0:01 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (3.181.788) 2036
31/15 0:01 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (3.670.630) 2042
32/18 0:02 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (4.160.850) 2048
33/18 0:02 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (4.756.610) 2043
34/18 0:02 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (5.402.637) 2045
35/18 0:03 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (6.160.802) 2042
36/18 0:03 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (7.007.915) 2038
37/18 0:03 0.00 1.Kb1 Bh3 2.Kb2 Bf1 3.Ka1 Be2 4.Kb2 Bh1
5.Ka1 Bf1 6.Kb2 Bh3 7.Ka1 Bf1 (7.979.527) 2034
best move: Ka1-b1 time: 0:04.188 min n/s: 2.034.555 nodes: 7.979.527
And this is also a bit more like Rybka Cluster would output it I hope, the difference being that Rainbow Serpent runs on just one processor:
[D]8/k7/p3b3/p2b4/8/8/8/K7 w - -
Engine: Stockfish Kingdefender (Rainbow Serpent, Build 107, Athlon 2009 MHz, 48 MB, using "critical node" singular extensions combined with suppression of LMR in the child ALL node) by Tord Romstad, Marco Costalba and Joona Kiiski
1/01 0:00 0.00 1.Kb1 (12) 0
2/02 0:00 0.00 1.Kb1 a4 (44) 1
3/03 0:00 0.00 1.Kb1 a4 2.Kb2 (179) 5
4/05 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 (873) 28
5/06 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 (2.800) 59
6/07 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 (3.793) 80
7/08 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1 (9.264) 197
8/09 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 (22.468) 478
9/11 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 (40.764) 647
10/12 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 (76.219) 977
11/13 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 (132.696) 1217
12/14 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 (223.349) 1431
13/15 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 (358.434) 1636
14/16 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (548.586) 1752
15/17 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (816.732) 1802
16/18 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (1.199.085) 1870
17/19 0:00 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (1.687.333) 1893
18/20 0:01 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (2.381.179) 1929
19/21 0:01 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (3.226.862) 1929
20/21 0:02 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (4.285.904) 1918
21/21 0:02 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (5.576.761) 1919
22/22 0:03 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (6.863.556) 1893
23/23 0:04 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (8.329.345) 1883
24/23 0:05 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (10.165.806) 1858
25/24 0:06 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (12.608.349) 1842
26/26 0:08 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (15.812.000) 1826
27/27 0:11 0.00 1.Kb1 a4 2.Kb2 a3+ 3.Kxa3 a5 4.Kb2 Bh1
5.Ka1 a4 6.Kb2 a3+ 7.Kxa3 Bg2 8.Kb2 Bh1
9.Ka3 (19.890.482) 1805
best move: Ka1-b1 time: 0:12.969 min n/s: 1.805.599 nodes: 19.890.482
I think it is nice that same colored bishops seem to get a bit more correctly evaluated now (these are just some first tests I made, there could well be hidden bugs in all the added lines even if most of it is re-used KBPsK endgame code, from the case with just one bishop of the wrong color). Also it will not add any elo and the added code is hard to avoid, even if it would be coded more efficiently by not re-using <KBPsK> code but calling it as a function. If I missed an easy way to do that it is because those C++ classes are too complex for me..
Eelco