Five years ago early iCE started in the lowest divison 7 of this touranment. Now it is finally entering the top league. It was a long journey.
Monday, January 18, 2016
Thursday, January 7, 2016
|iCE ELO gain (absolute values relate to the private ELO list of Lars Hallerström)|
The first testing results are now available. I rely envy those guys for their hardware. Looks like iCE 3 gained something in the area of about 140 ELO. This number matches the early results from the CEGT tests so is pretty reliable, at least for TC of up to 5 minutes per game.
Below is the attached cross table. Thank you, Lars, for running the test!
|1||Ice 3.0 (64)||2980||607.5|
+451 =313 -236
|2||Rybka 4.1 SSE42 (64-4cores)||3169||30.0|
+24 =12 -4
|3||Critter 1.6a (64-4cores)||3199||29.0|
+20 =18 -2
|4||Hannibal 1.5 (64-4cores)||3086||24.5|
+15 =19 -6
|5||Texel 1.05 (64-4cores)||3066||24.0|
+17 =14 -9
|6||Chiron 2 (64-4cores)||3109||23.0|
+18 =10 -12
|7||Spike 1.4 (4cores)||21.5|
+12 =19 -9
|8||Senpai 1.0 sse42 (64-4cores)||3052||20.5|
+13 =15 -12
|9||Gaviota 1.0 (64-4cores)||2951||19.5|
+9 =21 -10
|10||Ex 7.88b (64-4cores)||2866||18.5|
+9 =19 -12
|11||Arasan 18.1 (64-4cores)||2914||17.5|
+8 =19 -13
|12||SmarThink 1.80 (64)||2988||17.0|
+10 =14 -16
|13||BobCat 7.1 (64-4cores)||2800||16.5|
+9 =15 -16
|Spark 1.0 (64-4cores)||2981||16.5|
+10 =13 -17
|14||Cheng 4.37 rc0 (64-4cores)||2887||15.0|
+10 =10 -20
|Crafty 25.0 JA (64-4cores)||2892||15.0|
+8 =14 -18
|15||Scorpio 2.7.6 JA (64-4cores)||2887||14.0|
+8 =12 -20
|16||Sjeng WC2008 (64-4cores)||2912||13.5|
+8 =11 -21
|17||Tornado 7 (64-4cores)||2944||10.5|
+6 =9 -25
|18||Deuterium 14.01 (64)||2946||8.0|
+5 =6 -29
|19||Pedone 1.3 (64-4cores)||2699||7.5|
+5 =5 -30
|20||Rodent 1.7 (64)||2883||7.0|
+3 =8 -29
|21||Octo 5190 (64-4cores)||2865||6.5|
+3 =7 -30
+2 =9 -29
+2 =8 -30
|23||Bug2 1.9 (64-4cores)||2829||5.0|
+2 =6 -32
|Tournament start||05 Jan 2016 00:00|
|Latest update||10 Jan 2016 17:45|
Sunday, January 3, 2016
I'm finally ready to release version 3 of my little chess engine project. It is still only single core as I haven't found the motivation to implement SMP. I'm still on the way to make the engine smarter not faster. So SMP is maybe something for the next release then.
What did change in v3
UCI Options Cleanup The UCI options of iCE are restructured and renamed. Details can be found here: iCE 3 UCI Options
Multi PV support iCE is now supporting Multi PV mode.
Bugfix The ponder protocol implementation is fixed. In Shredder GUI it did not work.
Evaluation: A bit of weight tuning was perfromed. However most changes failed or had only minor impact.
Search Changes: iCE 2 added History Heuristics, Late Move Pruning, Razoring and Counter Move Heuristics. For iCE 3 I optimized the conditions a bit further to make smarter pruning decisions.
Books: I finally touched my book code again. It was necessary as the books contained some errors coming from changes to the internal move format. I also improved the book building framework to use perfromance data of iCE in certain lines.
Time Management: I changed the algorithm for time allocation to not use all available time on the last move before TC.
What do you get
I make 3 versions of iCE available
- ice3-x64-modern - This is the release you probably want to use. It makes use of some HW instructions found on recent CPU.
- ice3-x64 - This is the fall back release if your HW doesn't support the instructions used in the modern compile
- ice3-x32 - As the name suggests, if you still on a 32 bit platform like Windows XP use this one
How to use
iCE is only a chess engine so it integrates into a graphical interface and communicates with it via a protocol. All interfaces that support the UCI (Universal Chess Interface) are usable. Among the available interfaces are
|iCE 3 playing in the Shredder GUI|
Saturday, January 2, 2016
For me as a programmer the existence of SAN is also really annoying. LAN (long algebraic notation) would make life much easier. The problem with SAN is the handling of move ambiguity. As usually the source square of a move is not given it must be calculated using the current layout of the board (which piece of the given type can travel to the target square).
So in order to translate SAN into a binary move object with (source and target square) a corresponding board class is needed which implements operations like get me all squares a bishop can travel to from source sq x. What makes it even more difficult is the rules for handling cases when more than one piece can travel to a certain square. Then file or rank of the source square are given, sometimes even both.
But not enough. If two pieces can reach the target square from a source square then the source file or rank indicator rule is not applied if one of the pieces is pinned and cannot move.
A lot of code is needed to handle all the special SAN cases and I estimate that a a fair number of club level written score sheets are not correct either.
So why am I complaining. My just published new books contain some errors as I was not handling the "two pieces can reach the target square but one of them is pinned to the king" case correctly. I fixed my book code and I'm in the process of rebuilding the books now.
So an update is coming soon.