Time-Odds tournament

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Uri Blass
Posts: 11048
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Time-Odds tournament

Post by Uri Blass »

Tony Thomas wrote:
Ovyron wrote:
smrf wrote:But if you are convinced of existing 10x8 engines being weak, it would be a better argument to enter the 10x8 scene by placing another engine written by yourself. It would be really interesting!
How hard is it to convert a 8x8 engine to play 10x8?
It cant be any harder than implementing MP support...
I think it is dependent on the engine and it clearly can be harder.
It is dependent on the design decisions.

I am not going to convert the move generator of movei to move generator of 10*8 engine and if I decide to write 10*8 engine then I will have to write new code.

Uri
Uri Blass
Posts: 11048
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Time-Odds tournament

Post by Uri Blass »

smrf wrote:Dear Uri, 10x8 chess could not be compared that easy to traditional chess. 10x8 engines e.g. have to handle a 25% higher branching factor.

But if you are convinced of existing 10x8 engines being weak, it would be a better argument to enter the 10x8 scene by placing another engine written by yourself. It would be really interesting!
I can only say that I see weaknesses of Joker in normal chess that are relevant also for 10*8

Here is an example

[d]r1b2r1k/4Npbp/p1p2np1/1pp1n3/4P3/4BP2/PP1RN1PP/1K3B1R w - - 0 16

Joker blundred and lost material by Bxc5 when Nxc8 is an obvious move

After Bxc5 Bb7 the knight has no good square to go and is trapped

Other programs even without special knowledge about trapped pieces know to avoid Nxc8
Rybka at 2 option mode can easily see
that Nxc8 is better than Bxc5 and same for other engines that I tried.

Only Joker has no idea about the position based on the game.
I cannot believe that this weakness is irrelevant in 10*8 chess and it seems to me tactical weakness.

Joker 1.1.14 - Brutus 5.1, 6th CCRL Amateur D6 2008
r1b2r1k/4Npbp/p1p2np1/1pp1n3/4P3/4BP2/PP1RN1PP/1K3B1R w - - 0 1

Analysis by Rybka 2.3.2a 32-bit :

1. = (0.15): 16.Ne7xc8 Ra8xc8 17.Be3xc5 Ne5-c4 18.Rd2-d3 Nc4xb2 19.Rd3-b3 Nb2-c4 20.Bc5xf8 Bg7xf8 21.Rb3-d3 Kh8-g7 22.Ne2-d4 c6-c5
2. ³ (-0.49): 16.Be3xc5 Bc8-b7 17.Ne2-d4 Rf8-e8 18.Bc5-d6 c6-c5 19.Nd4-b3 Bb7xe4+ 20.Kb1-a1 c5-c4 21.Nb3-c5 Ra8-d8 22.f3xe4

(, 23.02.2008)
User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Re: Time-Odds tournament

Post by pedrox »

Uri Blass wrote:
Tony Thomas wrote:
Ovyron wrote:
smrf wrote:But if you are convinced of existing 10x8 engines being weak, it would be a better argument to enter the 10x8 scene by placing another engine written by yourself. It would be really interesting!
How hard is it to convert a 8x8 engine to play 10x8?
It cant be any harder than implementing MP support...
I think it is dependent on the engine and it clearly can be harder.
It is dependent on the design decisions.

I am not going to convert the move generator of movei to move generator of 10*8 engine and if I decide to write 10*8 engine then I will have to write new code.

Uri
When you are able to build an engine that plays 8x8, I think it's easier than you can make an engine that play 10x8, in my case even easier because I simply used an array of 64 elements without mailbox, 0x88 or bitboard. What is perhaps more complicated is values for pieces squares for the Archbishop and Chancellor, for the values of the pieces maybe there is a reference by people like HG, Reinhard or the inventor of Gotichess.

To place an engine smp, you have to study in advance how to do, I do not know a place where describe the different techniques in a detailed way, in the wikichess the description is brief. Another possibility is to study the code for other programs like Crafty, Glaurung, etc..

So for me it is technically harder to make the engine smp, although I do not dispute the time spent, perhaps the time spent may be similar.

Pedro
Uri Blass
Posts: 11048
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Time-Odds tournament

Post by Uri Blass »

pedrox wrote:
Uri Blass wrote:
Tony Thomas wrote:
Ovyron wrote:
smrf wrote:But if you are convinced of existing 10x8 engines being weak, it would be a better argument to enter the 10x8 scene by placing another engine written by yourself. It would be really interesting!
How hard is it to convert a 8x8 engine to play 10x8?
It cant be any harder than implementing MP support...
I think it is dependent on the engine and it clearly can be harder.
It is dependent on the design decisions.

I am not going to convert the move generator of movei to move generator of 10*8 engine and if I decide to write 10*8 engine then I will have to write new code.

Uri
When you are able to build an engine that plays 8x8, I think it's easier than you can make an engine that play 10x8, in my case even easier because I simply used an array of 64 elements without mailbox, 0x88 or bitboard. What is perhaps more complicated is values for pieces squares for the Archbishop and Chancellor, for the values of the pieces maybe there is a reference by people like HG, Reinhard or the inventor of Gotichess.

To place an engine smp, you have to study in advance how to do, I do not know a place where describe the different techniques in a detailed way, in the wikichess the description is brief. Another possibility is to study the code for other programs like Crafty, Glaurung, etc..

So for me it is technically harder to make the engine smp, although I do not dispute the time spent, perhaps the time spent may be similar.

Pedro
Movei is also based on an array of 64 squares without mailbox but the move generator is very complicated and there are special attack tables
so I probably do not plan to extend it to 10*8

Uri
User avatar
hgm
Posts: 28418
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Time-Odds tournament

Post by hgm »

Uri Blass wrote:I can only say that I see weaknesses of Joker in normal chess that are relevant also for 10*8
Thanks for the position. Yes, Joker has no evaluation to speak of, yet. I think the fundamental solution to this kind of problem is to have evaluation terms based on safe mobility per piece. But I guess most of the engines you refer to simply avoid the error by having a piece-square table for Knights that does not consider Knights on 7th rank very good. At some point I patched some ad hoc code in Joker to award Knights that can no longer be attacked by enemy pawns, and that code might backfire here.

But there are differences between 10x8 and normal Chess: due to the presence of 3 superpieces, 10x8 Chess is a much more tactical game. That makes these kind of trapping problems are less important. A knight is worth less in 10x8 than in normal Chess anyway. Joker can be characterized by above-average tactical ability, and below average evaluation (compared to other engines of the similar rating). That combination would make it better-suited for 10x8 Chess than for normal Chess.
User avatar
smrf
Posts: 484
Joined: Mon Mar 13, 2006 11:08 am
Location: Klein-Gerau, Germany

Re: Time-Odds tournament

Post by smrf »

hgm wrote:... A knight is worth less in 10x8 than in normal Chess anyway. ...
Of course, Harm, there are different opinions on that. ;-)
TonyJH
Posts: 183
Joined: Tue Jun 20, 2006 4:41 am
Location: USA

Re: Time-Odds tournament

Post by TonyJH »

I agree, the effort would be dependent on the engine.
For my engine (which is not strong) it happened to be easy, so it only took a couple of days.

For the board size change itself, I only had to change one line of code: to change a #define'd constant (BWIDTH) from 8 to 10.
Then I had to add support for the two new pieces (which took the most time), and update the castling code to support Capablanca chess castling.
Uri Blass
Posts: 11048
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Time-Odds tournament

Post by Uri Blass »

hgm wrote:
Uri Blass wrote:I can only say that I see weaknesses of Joker in normal chess that are relevant also for 10*8
Thanks for the position. Yes, Joker has no evaluation to speak of, yet. I think the fundamental solution to this kind of problem is to have evaluation terms based on safe mobility per piece. But I guess most of the engines you refer to simply avoid the error by having a piece-square table for Knights that does not consider Knights on 7th rank very good. At some point I patched some ad hoc code in Joker to award Knights that can no longer be attacked by enemy pawns, and that code might backfire here.

But there are differences between 10x8 and normal Chess: due to the presence of 3 superpieces, 10x8 Chess is a much more tactical game. That makes these kind of trapping problems are less important. A knight is worth less in 10x8 than in normal Chess anyway. Joker can be characterized by above-average tactical ability, and below average evaluation (compared to other engines of the similar rating). That combination would make it better-suited for 10x8 Chess than for normal Chess.
Based on looking at another Joker's game from CCRL I believe that Joker is clearly weaker also in tactics relative to the strong programs and you cannot blame only the evaluation.

Here is an example

35.Nd3 is losing material so it can be considered as a blunder even if it is not a bad move.
36.Nxe5 is a clear blunder and the best for Joker was probably 36.gxf3
I can understand that engines may avoid 36.gxf3 because of the passed pawns of black but a stronger engine can at least find some better move than 36.Nxe5 like 36.Qc2(avoiding 36.Nxe5 may not be easy even for better engines than Joker but avoiding 35.Nd3 is easy even for tactical engines that consider only material.

Joker even could not see the problem when it played 36.Nxe5 and showed evaluation of 0.00


[Event "6th CCRL Amateur D6"]
[Site "Bucklands Beach"]
[Date "2008.01.12"]
[Round "1.4"]
[White "Joker 1.1.14"]
[Black "Feuerstein 0.4.5.2"]
[Result "0-1"]
[ECO "C45"]
[Annotator "-0.18;-0.32"]
[PlyCount "94"]
[EventDate "2008.01.08"]
[EventType "tourn"]
[TimeControl "40/3240:40/3240:40/3240"]

{AMD Athlon(tm) MP 2133 MHz W=14.7 ply; 501kN/s; Balanced-12.ctg B=12.4 ply;
75kN/s; Balanced-12.ctg} 1. e4 {-300.02/0 0} e5 {-300.02/0 0} 2. Nf3 {
-300.02/0 0} Nc6 {-300.02/0 0} 3. d4 {-300.02/0 0} exd4 {-300.02/0 0} 4. Nxd4 {
-300.02/0 0} Bc5 {-300.02/0 0} 5. Be3 {-300.02/0 0} Qf6 {-300.02/0 0} 6. c3 {
-300.02/0 0} Nge7 {-300.02/0 0} 7. Bc4 {-300.02/0 0} Ne5 {-300.02/0 0} 8. Be2 {
-300.02/0 0} Qg6 {-300.02/0 0} 9. O-O {-300.02/0 0} d6 {-300.02/0 0} 10. f3 {
-300.02/0 0} O-O {-300.02/0 0} 11. Kh1 {-300.02/0 0} Bb6 {-300.02/0 0} 12. c4 {
-0.18/13 165} f5 {-0.32/12 267} 13. Nc3 {-0.13/13 85} f4 {(fxe4) -0.20/12 143}
14. Bf2 {0.04/13 82} c6 {(Be6) -0.17/12 265} 15. Qb3 {(Na4) 0.07/13 76} Bc5 {
(Qf7) -0.28/12 180} 16. Na4 {(Rad1) 0.41/14 92} b6 {-0.28/12 192} 17. Nxc5 {
(Qc3) 0.48/15 121} dxc5 {(bxc5) -0.30/13 109} 18. Nc2 {1.08/14 93} Be6 {
-0.33/12 86} 19. Kg1 {(Qc3) 1.04/14 198} Bh3 {(Qf6) -0.44/11 104} 20. Ne1 {
0.96/15 173} Qg5 {-0.40/12 86} 21. Rd1 {(Kh1) 1.02/14 141} Rf6 {-0.44/12 126}
22. Kh1 {(Rd2) 0.96/14 137} Be6 {-0.46/12 85} 23. Qc2 {(Kg1) 0.96/13 68} Rh6 {
(Rg6) -0.60/12 99} 24. Rd2 {(Qc3) 0.68/13 144} Qh5 {-1.05/11 106} 25. Bg1 {
0.79/14 139} Rf8 {(N7g6) -0.75/13 323} 26. Qa4 {(Qc3) 0.88/13 61} a5 {
(Qg5) -0.75/11 67} 27. Nc2 {0.89/14 144} Qh4 {(Qg5) -0.63/11 66} 28. Rfd1 {
0.89/13 112} Nc8 {-0.57/12 91} 29. Rc1 {(Qb3) 0.94/13 72} Rf7 {
(Bd7) -0.74/11 81} 30. Re1 {(Rcd1) 0.94/13 63} Bd7 {(Rd7) -0.76/12 122} 31.
Red1 {(Bf1) 1.14/14 110} Qg3 {(Be6) -0.75/11 56} 32. Bf1 {1.12/14 141} Re7 {
-0.71/10 56} 33. a3 {(Qa3) 0.00/14 124} g5 {(Ree6) -0.54/10 121} 34. Ne1 {
1.23/13 114} g4 {-0.46/11 56} 35. Nd3 {1.25/13 57} gxf3 {(Nxf3) -1.22/11 89}
36. Nxe5 {0.00/13 40} (36. gxf3 Nxd3 37. Rg2 Nxb2 38. Rxg3+ fxg3 39. Qc2 Nxd1
40. Qxd1 Rg7 41. Be3 Rxh2+ 42. Kg1 h5 43. Bf4 h4 44. Be5) 36... Rxe5 {
-1.82/10 38} 37. gxf3 {(h3) -0.68/15 102} Rg5 {-1.71/11 26} 38. Bg2 {
(Rg2) -1.98/15 69} Rgh5 {-3.61/12 48} 39. Bh3 {(Bf1) -2.71/14 33} Qxh3 {
-4.47/12 60} 40. Qb3 {(Rf2) -2.84/14 64} Rg5 {(Rg6) -4.50/12 42} 41. Qd3 {
-2.98/15 152} Rd6 {(Rg7) -4.39/11 165} 42. Qe2 {-4.13/17 158} Rxd2 {
(Qh6) -4.55/13 167} 43. Rxd2 {-4.76/16 54} Ne7 {-4.56/12 126} 44. b4 {
-5.33/16 132} axb4 {(Ng6) -4.78/14 116} 45. axb4 {-4.44/15 60} Ng6 {
(cxb4) -5.04/14 99} 46. bxc5 {-5.66/15 103} bxc5 {-5.23/13 73} 47. e5 {
(Qd1) -6.42/15 60} Nh4 {(Nxe5) -8.53/15 95} 0-1
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Time-Odds tournament

Post by bob »

hgm wrote:I am currently trying out Uri's idea of including handicapped versions of strong engines in a tournament, in order to get a more reliable determanation of the rating of the weak engines. In stead of using limited depth (as Uri suggested) I am using time odds to reduce the engine strength. I consider the problems introduced by limiting depth, namely nearly instantaneous but completely idiotic play in the end-game, too big a disadvantage of fixed-depth testing. It would have been better to use fixed number of nodes, but most WB engines don't support that. So using time odds seems the best option, especially since I am playing all games on the same hardware, so that nodes and time are strictly proportional anyway (for a given engine).

So what I finally do is play a tournament at a nominal time control of 36 min (sudden death). Some participants are handicapped by a factor 3, 9, 24 or 54, so they will get only 12:00, 4:00, 1:30 or 0:40 when they play. (And their opponent gets whatever his handicap prescribes.) The strongest two engines thus play in 5 versions, the normal one plus 4 handicapped copies. The slightly weaker engines only play with 4 or 3 incarnations (leaving out the largest handicaps), while the weak ones only participate with the version that plays the nominal time.

For more details, see http://home.hccnet.nl/h.g.muller/battlehome.html
My only comment is that to do this, you must play ponder=off. Otherwise the better program will predict many moves right, and use all the opponent's think time to correctly ponder, eliminating most of the time handicap advantage...
Uri Blass
Posts: 11048
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Time-Odds tournament

Post by Uri Blass »

Another example for tactical mistake of Joker

32...Qc7

Even after 32...Qc7 joker is slower relative to RattateChess Bologna in finding 33.Nd5

[d]1rb1r1k1/2q2ppp/3b4/1pp1p1PQ/n3P3/3PN3/B1PB1PP1/RR4K1 w - - 0 33 bm Nd5


[Event "6th CCRL Amateur D6"]
[Site "Bucklands Beach"]
[Date "2008.02.01"]
[Round "2.12"]
[White "RattateChess Bologna 2007"]
[Black "Joker 1.1.14"]
[Result "1-0"]
[ECO "C88"]
[Annotator "-0.07;-0.13"]
[PlyCount "71"]
[EventDate "2008.01.08"]
[EventType "tourn"]
[TimeControl "40/3240:40/3240:40/3240"]

{AMD Athlon(tm) MP 2133 MHz W=13.6 ply; 156kN/s; Balanced-12.ctg B=14.4 ply;
518kN/s; Balanced-12.ctg} 1. e4 {-300.02/0 0} e5 {-300.02/0 0} 2. Nf3 {
-300.02/0 0} Nc6 {-300.02/0 0} 3. Bb5 {-300.02/0 0} a6 {-300.02/0 0} 4. Ba4 {
-300.02/0 0} Nf6 {-300.02/0 0} 5. O-O {-300.02/0 0} Be7 {-300.02/0 0} 6. Re1 {
-300.02/0 0} b5 {-300.02/0 0} 7. Bb3 {-300.02/0 0} O-O {-300.02/0 0} 8. h3 {
-300.02/0 0} Bb7 {-300.02/0 0} 9. d3 {-300.02/0 0} d6 {-300.02/0 0} 10. a3 {
-300.02/0 0} Na5 {-300.02/0 0} 11. Ba2 {-300.02/0 0} c5 {-300.02/0 0} 12. Nbd2
{-300.02/0 0} Bc8 {-300.02/0 0} 13. b4 {-0.07/15 102} Nb7 {-0.13/14 85} 14. Nb3
{(c3) -0.13/14 105} Qc7 {(Nd7) -0.18/13 70} 15. bxc5 {(c3) -0.03/14 94} dxc5 {
(Nxc5) -0.26/14 102} 16. Bb2 {(Nbd2) -0.06/14 68} Bd6 {-0.20/14 117} 17. Nbd2 {
0.00/14 81} Re8 {(Na5) -0.12/13 126} 18. Bd5 {(c3) 0.09/13 80} Rb8 {
(Bd7) -0.25/13 110} 19. a4 {(Rb1) 0.22/13 81} Nd8 {-0.14/13 88} 20. axb5 {
0.21/12 62} axb5 {-0.13/14 144} 21. Nf1 {0.14/12 73} Nd7 {(Ne6) -0.07/14 241}
22. Ne3 {0.65/12 56} Nb6 {(h5) -0.04/14 125} 23. h4 {(Bc3) 0.80/12 54} Na4 {
0.00/13 118} 24. Bc1 {0.79/13 79} Ne6 {0.00/13 73} 25. Ng5 {(h5) 0.90/13 64}
Nxg5 {-0.04/14 132} 26. hxg5 {0.79/14 66} Qd7 {(Nc3) -0.02/13 76} 27. Qh5 {
(Qf3) 0.92/12 44} Nb6 {(Bb7) 0.14/13 90} 28. Ba2 {(Bb3) 1.05/12 48} Qa7 {
(Qb7) 0.23/13 94} 29. Bd2 {(Nd5) 1.16/12 58} Qc7 {(Na4) 0.29/13 70} 30. Ba5 {
(Reb1) 1.17/12 68} Qa7 {0.54/14 62} 31. Reb1 {(Nf5) 1.14/13 65} Na4 {
0.28/14 127} 32. Bd2 {1.11/13 63} Qc7 {(Be6) 0.47/14 168} 33. Nd5 {
(Bd5) 4.74/13 47} Qb7 {4.18/14 53} 34. Rxb5 {5.92/13 45} Bg4 {5.26/15 58} 35.
Nf6+ {7.97/14 58} gxf6 {6.40/17 117} 36. Qxg4 {8.58/14 48} 1-0