Thursday, July 12, 2012

My Chess Engine iCE 0.3 is out

Quite some time has passed since I released the last version of my little chess engine project. So I'm happy to announce that finally iCE 0.3 is seeing the light of the day. It's available from my homepage.

In the development of iCE 0.3 a lot of ideas have been tried, most of them failed, some worked. I introduced new functionality and added tons of endgame chess knowledge. My initial tests indicate some ELO gain compared with iCE 0.2. But it is to early to tell how big it is. I'll know when it has played its first official 200 tournament games.

Major changes in iCE 0.3
  • some new evaluation terms (e.g. pawns islands)
  • Understands the draw by fifty move rule and tries to avoid it when leading
  • Improved endgame knowledge. Better understanding of drawn positions especially if one side is ahead in material like king and 2 minors vs king and 1 minor or king and rook vs king and 2 minors.
  • Implements a small internal opening book if no external book is supplied.
  • Support for external opening books in a proprietary format.
  • Changed node counting rule (horizon nodes not counted twice anymore)
  • Algorithm improvements to speed up the code.
  • Draw by Repetition detection bug fix (was not really working)
  • New smarter time management, varies time for move depending on position and search progress. Leaves a safety buffer on the last move before time control to avoid time losses. Engine is now able to play very fast games with less than 100 ms per move without losing on time anymore. 
  • Implements a special move generator for "getting out of check" moves. Got some speedup.
The engine is still only available as 32 bit version, as I don't own a 64 bit system yet. Most of its evaluation weights are not tuned at all, because I don't have the computing resources available to tune them. I used my intuition to pick a hopefully not so bad number. So tuning is definitely on the todo list for version 0.4 but this will required also some significant changes to the engine to make it tunable.