Zurichess

Home * Engines * Zurichess



Zurichess, an UCI compliant open source chess engine and chess library by Alexandru Moșoi, written in the Go programming language, 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. Versions are named after Swiss Cantons in alphabetical order.

=Description=

A-B
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. 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. Bern release in June 2015 is about 130 Elo stronger than Basel.

Fribourg
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. 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.

Geneva
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 - a two layers neural network is used, where the second layer is responsible for a tapered eval to phase endgame and middlegame scores. Rooks were evaluated on open and half-open files, and mobility calculation was improved. Zurichess Geneva is about 100 Elo stronger than Fribourg.

Glarus
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.

Graubuenden
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.

Jura
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.

Luzern
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.

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

=See also=
 * ETH Zurich
 * Winter

=Forum Posts=

2015

 * zurichess - new chess engine by Alexandru Mosoi, CCC, January 16, 2015
 * zurichess appenzeller - new version by Alexandru Mosoi, CCC, February 21, 2015
 * Re: txt: automated chess engine tuning by Alexandru Mosoi, CCC, April 11, 2015 » Automated Tuning
 * zurichess basel released by Alexandru Mosoi, CCC, April 27, 2015
 * zurichess bern released by Alexandru Mosoi, CCC, June 07, 2015
 * zurichess fribourg released by Alexandru Mosoi, CCC, August 30, 2015
 * zurichess geneva released by Alexandru Mosoi, CCC, November 29, 2015

2016

 * hacking on zurichess by Alexandru Mosoi, CCC, January 06, 2016
 * trivia: ELO boost from a better compiler by Alexandru Mosoi, CCC, March 22, 2016 » Go (Programming Language)
 * king safety: hard positions for zurichess by Alexandru Mosoi, CCC, March 27, 2016 » King Safety, Test-Positions
 * zurichess glarus released by Alexandru Mosoi, CCC, April 17, 2016
 * Re: Deep Learning Chess Engine ? by Alexandru Mosoi, CCC, July 21, 2016
 * Re: Deep Learning Chess Engine ? by Alexandru Mosoi, CCC, July 21, 2016


 * zurichess graubuenden released by Alexandru Mosoi, CCC, August 16, 2016

2017

 * zurichess jura - preview release by Alexandru Mosoi, CCC, January 19, 2017
 * zurichess jura released by Alexandru Mosoi, CCC, February 18, 2017
 * improved evaluation function by Alexandru Mosoi, CCC, March 11, 2017 » Texel's Tuning Method
 * speed up or avoiding move sorting by Alexandru Mosoi, CCC, March 19, 2017 » Move Ordering
 * zurichess - new version release by Alexandru Mosoi, CCC, May 08, 2017
 * zurichess neuchatel - preview release by Alexandru Mosoi, CCC, August 29, 2017
 * need some help assessing the evaluation by Alexandru Mosoi, CCC, December 02, 2017

2018 ...

 * Zurichess Nidwalden by Norbert Raimund Leisner, CCC, October 03, 2018
 * Re: Zurichess Nidwalden by Alexandru Mosoi, CCC, October 22, 2018

=External Links=

Chess Engine

 * brtzsnr / zurichess — Bitbucket
 * zurichess / zurichess — Bitbucket
 * Zurichess in CCRL 40/40

Aargau

 * Aargau from Wikipedia

Appenzell

 * Appenzell (disambiguation) from Wikipedia
 * Appenzell (town) from Wikipedia
 * Appenzeller cheese from Wikipedia

Basel

 * Basel (disambiguation) from Wikipedia
 * Basel from Wikipedia
 * Canton of Basel from Wikipedia

Bern

 * Bern (disambiguation) from Wikipedia
 * Bern from Wikipedia
 * Canton of Bern from Wikipedia

Fribourg

 * Fribourg (disambiguation) from Wikipedia
 * Fribourg from Wikipedia
 * Canton of Fribourg from Wikipedia

Geneva

 * Geneva (disambiguation) from Wikipedia
 * Geneva from Wikipedia
 * Canton of Geneva from Wikipedia
 * Geneva Conventions from Wikipedia
 * Geneva Protocol from Wikipedia

Glarus

 * Glarus from Wikipedia
 * Canton of Glarus from Wikipedia
 * Glarus Alps from Wikipedia
 * Glarus thrust from Wikipedia

Graubünden

 * Graubünden (Grisons) from Wikipedia
 * Three Leagues from Wikipedia

Jura

 * Canton of Jura from Wikipedia
 * Jura Mountains from Wikipedia

Luzern

 * Lucerne from Wikipedia
 * Canton of Lucerne from Wikipedia

Neuchâtel

 * Neuchâtel (disambiguation) from Wikipedia
 * Neuchâtel from Wikipedia
 * Canton of Neuchâtel from Wikipedia

Zurich

 * Zurich (disambiguation) from Wikipedia
 * Zürich from Wikipedia
 * Canton of Zürich from Wikipedia

=References= Up one Level