Cheng
Cheng,
an UCI compliant open source chess engine by Martin Sedlak, written in C++ as exercise in generic programming, first released as Cheng3 in April 2011.
Cheng is able to play Chess960, target platforms are Windows, Linux, Mac OS and Android systems [1]. Cheng4 0.38, released in January 2015, is available at GitHub under the permissive zlib license [2].
Contents
Description
Cheng [3] is a bitboard engine using fancy magic bitboards to determine sliding piece attacks. It applies staged move generation.
Search
The parallel multi-threaded search performs PVS alpha-beta with a shared transposition table inside a fractional ply iterative deepening framework with aspiration windows, featuring Lazy SMP [4]. Search routines are instantiated at compile time from a generic routine with three boolean template parameters, PV-node, in check, and null move pruning on-off, similar quiescence search has four instances for on-off combinations of PV-node and check. Further selectivity is applied by mate distance pruning, razoring, IID, futility pruning, check extensions and late move reductions. Move ordering is improved by the killer- and history heuristic.
Evaluation
Evaluation employs three further hash tables - evaluation hash table, material hash table and pawn hash table. The evaluation function determines hardware population count support at compile time, passed as template parameter to internal eval functions, finally adding a tempo bonus. Pawn and piece specific evaluators are further implemented with a color template, considering pawn structure, mobility, king safety and various piece pattern. Most of the gain in Cheng4 0.38, released in January 2015, is due to eval tuning using the Texel's Tuning Method by Peter Österlund [5].
Forum Posts
2010 ...
- cheng3 uci v1.0 by Martin Sedlak, CCC, April 19, 2011
- cheng3 1.03 released by Martin Sedlak, CCC, May 27, 2011
- cheng3 1.05 released by Martin Sedlak, CCC, September 26, 2011
- cheng3 1.06 released by Martin Sedlak, CCC, November 23, 2011
- cheng3 1.07 released by Martin Sedlak, CCC, January 21, 2012
- cheng4 0.35 by Martin Sedlak, CCC, September 24, 2013
- cheng4 0.36 by Martin Sedlak, CCC, November 10, 2013
- cheng4 0.36a (FRC bugfix) by Martin Sedlak, CCC, November 15, 2013
- cheng4 0.36c - last version by Martin Sedlak, CCC, January 30, 2014
- Tragic that Martin Sedlak has discontinued Cheng by User923005, OpenChess Forum, January 31, 2014
2015 ...
- Cheng: A great lost to the community by Frank Quisinsky, CCC, January 15, 2015
- cheng4 0.38 release by Martin Sedlak, CCC, January 18, 2015
- Lazy SMP in Cheng by Martin Sedlak, CCC, February 02, 2015 » Lazy SMP
- Lazy SMP scaling Cheng0.38 by Bertil, FishCooking, February 24, 2015
- Empirical results with Lazy SMP, YBWC, DTS by Kai Laskos, CCC, April 16, 2015 » Lazy SMP, YBWC, DTS
- Cheng 4.39 release by Martin Sedlak, CCC, July 20, 2015
- Cheng 4.39 Android version bugfix by Martin Sedlak, CCC, November 13, 2015
- Cheng 4.39 Re-release for the Mac by MikeB, CCC, January 09, 2016
2020 ...
- Cheng 4.40 by Martin Sedlak, CCC, January 02, 2021
- Cheng 4.41 by Martin Sedlak, CCC, April 27, 2021
External Links
Chess Engine
- GitHub - kmar/cheng4: cheng4 chess engine
- Cheng chess engine hosted by Emil Vlasák
- Index of /chess/engines/Jim Ablett/CHENG compiled by Jim Ablett hosted by Kirill Kryukov
- Cheng in CCRL 40/40
Misc
References
- ↑ UCI and XBoard Engines for Android by Aart Bik
- ↑ GitHub - kmar/cheng4: cheng4 chess engine
- ↑ Description based on Cheng4 036c
- ↑ Lazy SMP in Cheng by Martin Sedlak, CCC, February 02, 2015
- ↑ cheng4 0.38 release by Martin Sedlak, CCC, January 18, 2015