From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Zurichess

an UCI compliant open source chess engine and chess library by Alexandru Moșoi, written in the Go programming language [2] , first released in January 2015. The name Zurichess is in dependence on Züritüütsch, the High Alemannic dialect spoken in the Canton of Zurich, Switzerland [3]. Versions are named after Swiss Cantons in alphabetical order [4].



Zurichess uses bitboards with De Bruijn bitscan for serialization, and fancy magic bitboards to determine sliding piece attacks. The search applies fail soft negamax alpha-beta plus transposition table inside the iterative deepening loop with aspiration windows [5]. Move ordering is improved by the killer heuristic and considers MVV/LVA for captures. Evaluation relies on the simplified evaluation function using a tapered eval interpolating between opening and endgame scores of material and piece-square tables. While the first public release Aargau lacked all kinds of forward pruning, reductions and extensions, subsequent versions, Appenzeller and Basel improved on various search and evaluation topics, now addressing null move pruning and mobility beside a lot of other things and optimizations, not to mention fixing bugs [6]. Bern release in June 2015 is about 130 Elo stronger than Basel [7].


Zurichess Fribourg, released on August 30, 2015, now has passed pawn evaluation, considering connected and isolated pawns. Tuning was done using Texel's tuning method implemented by txt [8] [9]. LMR was added, as well as static exchange evaluation (SEE) to sort captures, to prune bad captures (SEE < 0) in quiescence search and to aggressively reduce bad quiet moves (SEE < 0) at higher depths. Further, staged move generation and pondering were added, and two-fold repetitions at non-root nodes pruned. Zurichess Fribourg is about 200 Elo stronger than Bern [10] .


Zurichess Geneva, released on November 29, 2015, and now aware of the fifty-move draw rule, has added basic futility pruning and relaxed null move conditions allowing double null moves. In eval, tuning switched from txt to TensorFlow [11] - a two layers neural network is used, where the second layer is responsible for a tapered eval to phase endgame and middlegame scores [12]. Rooks were evaluated on open and half-open files, and mobility calculation was improved. Zurichess Geneva is about 100 Elo stronger than Fribourg [13].


Announced and released on April 17, 2016, Zurichess Glarus has improved futility conditions and added history leaf pruning, further improving pawn hash table utilization by caching pawn shelter, king safety by considering number of simultaneous attackers, and time control. Glarus is about 80 Elo stronger than Geneva in self-play [14].


Zurichess Graubuenden was released on August 16, 2016 with various tweaks, search and evaluation improvements such as hashing in quiescence search, and new features like skill levels and multi-PV. Further, a new version of the Go compiler yields in increased search speed. In self-play Graubuenden is about 110 Elo stronger than Glarus [15].


Zurichess Jura appeared on February 18, 2017 with improved selectivity, move ordering and evaluation, introducing razoring, countermove heuristic, king-queen tropism and rook-square tables plus various tweaks and re-tuning. In self play at fast time controls Jura is about 85 Elo stronger than Graubuenden [16].


Zurichess Luzern, released on May 08, 2017, further enhanced its search and evaluation, in particular a 16% faster search and considering defended minors, pawn attacks an potential pawn attacks. In self play Luzern is about 64 Elo stronger than Jura [17].


Zurichess Neuchâtel became a stable release in September 2017 [18] with an expected gain of 50 Elo [19].

See also

Forum Posts



Re: Deep Learning Chess Engine ? by Alexandru Mosoi, CCC, July 21, 2016


2018 ...

Re: Zurichess Nidwalden by Alexandru Mosoi, CCC, October 22, 2018


External Links

Chess Engine















  1. Jürg Fleischer, Stephan Schmid (2006). Illustrations of the IPA: Zurich German. Journal of the International Phonetic Association, Vol. 36, No. 2, page 256; doi:10.1017/S0025100306002441, Wikimedia Commons, Zurich German from Wikipedia
  2. brtzsnr / zurichess — Bitbucket
  3. Re: Mr.Ruxy versus Zurichess by Alexandru Mosoi, CCC, January 17, 2015
  4. zurichess / zurichess / source / CHANGELOG.md — Bitbucket
  5. Re: Aspiration window - effect? Issue with hashtables?! LONG POST by Matthew R. Brades, CCC, December 29, 2012
  6. zurichess basel released by Alexandru Mosoi, CCC, April 27, 2015
  7. zurichess bern released by Alexandru Mosoi, CCC, June 07, 2015
  8. txt: automated chess engine tuning by Alexandru Mosoi, CCC, March 18, 2015
  9. zurichess / txt — Bitbucket
  10. zurichess fribourg released by Alexandru Mosoi, CCC, August 30, 2015
  11. tensorflow by Alexandru Mosoi, CCC, November 10, 2015
  12. Re: Deep Learning Chess Engine ? by Alexandru Mosoi, CCC, July 21, 2016
  13. zurichess geneva released by Alexandru Mosoi, CCC, November 29, 2015
  14. zurichess glarus released by Alexandru Mosoi, CCC, April 17, 2016
  15. zurichess graubuenden released by Alexandru Mosoi, CCC, August 16, 2016
  16. zurichess jura released by Alexandru Mosoi, CCC, February 18, 2017
  17. zurichess - new version release by Alexandru Mosoi, CCC, May 08, 2017
  18. zurichess / zurichess / commit / f5f1b02de174 — Bitbucket
  19. zurichess neuchatel - preview release by Alexandru Mosoi, CCC, August 29, 2017

Up one Level