Wednesday, June 19, 2013

iCE 1.0 sees the light of the day

It seems the news are spreading already so I don't wait till the weekend and give some details about the new release 1.0 this morning.

The complete evaluation has been rewritten.

The old version used constant weights to evaluate certain features in a position. This helped the compiler to generate efficient code however every change to a weight required a recompliation of the program. For my later tuning efforts this was to inflexible.

Added endgame knowledge.

Knowledge that helps iCE to understand drawn positions in KRKP and KQKP endgames.

Evaluation of passed pawns

The potential of passed pawns is now better evaluated. iCE 0.3 was here to optimistic and often traded its pieces to get a passed pawn that had little chances of promoting. Additionally a recognizer to spot unstoppable passers is now part of the evaluation.

Evaluation Tuning
All earlier prototypes used evaluation weights that were not tuned. If a new term was not able to improve the engine with an untuned weight it was removed again. This was against the principle of only adding features if you can't improve the engine with existing ones anymore. For the tuning itself I implemented my own tuning framework using a genetic algorithm that worked on all weights in parallel. Some tests with positional EPD testsets showed that the positional understanding of iCE was improved by this.

Search Parameter Tuning
The same framework was used to tune the search control parameter. The framework itself was not changed. However as most of the control parameters were set to new values it behaves now completely different.

64 bit Versions
All prototype versions were only available as 32 bit versions. Some code changes were necessary to implement 64 bit versions of basic bit operations. The 64 bit version (/w popcount) runs about 70% faster than the 32 bit version on the same HW.

iCE is still a CLOP free zone (who trusts negatives Hessians) and does not access endgame tablebases in play. However the new endgame knowledge was verified against Gaviota table bases. Tribut and thanks for providing them goes to Miguel Ballicora. Some won endgames take a bit longer especially if the opponent has access to table bases and knows the optimal defense. But the moves played are probably more natural.

Everything related to opening books is unchanged and still works the same with 1.0

Still Missing
As already noticed iCE still uses hashes of fixed size (4 * 2^21 slots for the main hash + some for additional hashes - in total about 200 MB). I will change that in the next version.

In self tests and at short time controls the new version plays significantly stronger than the old one. Its LOS was 100%. And it did not took a lot of games to see that.

So comments, bug reports or suggestions for improvement are highly welcome.