Stockfish

Stockfish，是一個自由及開放源碼軟件，可用於各種桌面和移動平台。可通過在國際象棋軟件中使用。

Stockfish持续在大多数国际象棋引擎排名中排在首位或接近首位。截至2022年10月，Stockfish是世界上最强大的CPU象棋引擎。它共计赢得了13次以及Chess.com计算机象棋锦标赛19次。

Stockfish由Marco Costalba、Joona Kiiski、Gary Linscott、Tord Romstad、Stéphane Nicolet、Stefan Geschwentner和Joost VandeVondele开发，此外开源社区开发者也作出了许多贡献。它从2004年发布的Tord Romstad开发的开源象棋引擎Glaurung派生而来。

特性 

在多处理器系统中，Stockfish可以使用至多1024个线程。它的的大小可达32TB。Stockfish通过实现了高级的Alpha-beta剪枝。部分上由于进行了更激进的剪枝以及，与其它象棋引擎相比，Stockfish可以进行更深的搜索。，Stockfish 15 (4线程)在CCRL 40/15评测中达到了3540的等级分。

由于其从Glaurung派生而来，Stockfish支持Chess960。曾在罗纳德·德曼维护的分叉中实现的Syzygy于2014年被并入Stockfish中。在7个棋子的Syzygy残局数据库发布之后不久，Stockfish于2018年增加了对其的支持。

Stockfish在很多平台上受欢迎。在桌面端，它是界面程序BlitzIn和Dasher默认的象棋引擎。在移动端，它是Stockfish、SmallFish和DroidFish等APP内置的象棋引擎。其它兼容Stockfish的图形用户界面包括、Arena、Stockfish for Mac以及PyChess。Stockfish可以被编译为WebAssembly或JavaScript，从而在浏览器中运行。在服务器端程序以外，Chess.com和都以这种形式支持Stockfish。Stockfish的正式版本和开发版本均以在Windows、macOS、Linux32位/64位和Android上的编译版本和C++源代码的形式发布。

历史 

Stockfish起源于Romstad编写并于2004年首次发布的开源国际象棋引擎Glaurung。四年之后，Costalba受这一强大的开源引擎启发，决定分叉此项目。他将其命名为Stockfish的原因是它“于挪威生产而于意大利被烹饪”（Romstad是挪威人，而Costalba是意大利人）。首个版本Stockfish 1.0于2008年11月发布。有一阵子，新想法与代码变更在两个程序之间双向流动，直到Romstad考虑到Stockfish在当时更加先进而决定不再开发Glaurung。Glaurung的最终版本（2.2）于2008年12月发布。

约于2011年，Romstad决定不再参与Stockfish的开发以专注于开发他的新的iOS国际象棋应用。2014年6月18日，Marco Costalba宣布他已经“决定不再维护Stockfish”并让开源社区建立其当前版本的分叉并继续开发它。不久之后，一个由Stockfish的核心开发者组成的志愿者团队建立了一个官方代码库并管理此项目至今。

Fishtest 

自2013年以来，Stockfish的开发运用了名为“Fishtest”的分布式测试框架，志愿者可以捐赠CPU时间以测试对程序的改进。

对博弈算法的修改会应用分析在Fishtest框架上与该程序的“对照”版本对弈数万局的结果而被接受或拒绝。在框架上的测试会以卡方检验验证，仅当结果在统计意义上显著时才会被认为是可靠的并用于修改软件代码。

Fishtest出现后，Stockfish的等级分在仅仅12个月内增加了120，使其在所有主流象棋引擎排名中上升到顶部。在Stockfish 7中，作为对Fishtest的作者Gary Linscott对Stockfish的棋力的贡献的承认，他的名字被加入到正式的作者名单中。

，Fishtest框架总共用9850多年的CPU时间下了57亿多局象棋。

可高效更新神经网络 

2020年6月，Stockfish的开发者讨论了一个由程序员编写的名为Stockfish NNUE的可高效更新神经网络分叉。2020年7月，国际象棋新闻报导说“Stockfish NNUE通过将神经网络加入本就十分强大的Stockfish象棋引擎里，在计算机象棋中开辟了新天地”。之后，开发者宣布将会把NNUE合并入Stockfish中并发布了开发版。

2020年9月2日，实现了前述神经网络的Stockfish第12版发布。根据发行公告，这一新版本“棋力明显比它之前的任何一个版本更强”，与第11版对弈时平均每赢10个回合才会输掉1个回合。

比赛结果

最强象棋引擎锦标赛 
主条目：

Stockfish曾多次获得最强象棋引擎锦标赛（TCEC）冠军，目前是获得冠军次数最多的。自TCEC于2013年重启以来，Stockfish仅在一个赛季中未能取得前两名。在TCEC第4和第5赛季，Stockfish均获得第二名，其在总决赛中均以23–25的成绩先后负于和。值得注意的是，在第5赛季中，Komodo的原作者在赛事的最后阶段因病去世，因此获胜的Komodo开发团队是在他死后代他领奖的。为了纪念他，在赛季结束后不久发布的Stockfish版本以“Stockfish DD”命名。

2014年5月30日，Stockfish 170514（一个支持残局数据库的Stockfish 5开发版）在总决赛中以35.5–28.5的比分击败了Komodo 7x，从而决定性地赢得了TCEC第6季。Stockfish 5的正式版于次日发布。在TCEC第7季中，Stockfish又一次晋级总决赛，但以30.5–33.5的比分输给了Komodo。在TCEC第8季中，尽管代码缺陷使其损失了比赛时间，Stockfish也再一次晋级总决赛，但在100个回合的总决赛中以46.5–53.5的比分输给了Komodo。在第9季中，Stockfish以54.5–45.5的比分击败了Houdini 5。

在TCEC第10季中，Stockfish获得第三名，是2013年以来其未能晋级总决赛的唯一赛季。Stockfish没有输掉任何比赛，但仍然因为未能击败评级更低的引擎足够多次而被淘汰。Stockfish在这一程序性淘汰后的很长一段时间不断获胜，其赢得了第11季（以59–41比分击败Houdini 6.03）、第12季（以60–40的比分击败Komodo 12.1.1）和第13季（以55–45的比分击败Komodo 2155.00）。在TCEC第14季中，Stockfish面对新的竞争对手，以相差一局的比分（50.5–49.5）险胜。它的连续获胜终于在TCEC第15季中结束，因为Leela再次晋级总决赛并以53.5–46.5的比分击败了Stockfish，但不久之后，Leela在TCEC第16季中未能晋级总决赛，而Stockfish以54.5–45.5的比分击败了AllieStein。在TCEC第17季中，Stockfish再次于总决赛对战Leela，以47.5–52.5的比分落败。然而，在接下来的四次总决赛中，Stockfish均决定性地击败了Leela，比分分别为53.5–46.5（第18季）、54.5–45.5（第19季）、53–47（第20季）和56–44（第21季）。

Stockfish也参加了TCEC杯的比赛。它赢得了第一次杯赛，但在第二次杯赛的半决赛出人意料地被Houdini击败。在三四名决赛中，Stockfish棋力有所恢复，击败了Komodo。在第三次杯赛中，Stockfish晋级了决赛，但在7枚棋子的和局中失误后被击败。在第四次杯赛中，Stockfish逆转了这一结局，在决赛中以4.5–3.5的比分击败了Leela。

Chess.com计算机国际象棋锦标赛 
自从Chess.com于2018年首次举办（CCC）以来，Stockfish是该比赛中最成功的引擎。它在早期比赛中占有优势，在前六次锦标赛中均取得胜利，而在第七次锦标赛中获得第二名。自此以来，它的支配地位受到了基于神经网络的象棋引擎Leelenstein和的挑战，但它仍然表现良好，在CCC11之前的每次比赛都能晋级总决赛。CCC12改用了淘汰赛制，抽签时Stockfish和Leela被分到了半决赛的同一组。Leela在半决赛中将Stockfish淘汰。然而，在赛后相同形式的比赛中，Stockfish战胜了决赛的输家Leelenstein。

Stockfish 5 versus Nakamura 
Stockfish's strength relative to the best human chess players was most apparent in a handicap match with grandmaster Hikaru Nakamura (2798-rated) in August 2014. In the first two games of the match, Nakamura had the assistance of an older version of Rybka, and in the next two games, he received White with pawn odds but no assistance. Nakamura was the world's fifth-best human chess player at the time of the match, while Stockfish 5 was denied use of its opening book and endgame tablebase. Stockfish won each half of the match 1.5–0.5. Both of Stockfish's wins arose from positions in which Nakamura, as is typical for his playing style, pressed for a win instead of acquiescing to a draw.

Stockfish 8 versus AlphaZero 

In December 2017, Stockfish 8 was used as a benchmark to test Google division DeepMind's AlphaZero, with each engine supported by different hardware. AlphaZero was trained through self-play for a total of nine hours, and reached Stockfish's level after just four. In 100 games from the normal starting position, AlphaZero won 25 games as White, won 3 as Black, and drew the remaining 72, with 0 losses. AlphaZero also played twelve 100-game matches against Stockfish starting from twelve popular openings for a final score of 290 wins, 886 draws and 24 losses, for a point score of 733:467.

AlphaZero's victory over Stockfish sparked a flurry of activity in the computer chess community, leading to a new open-source engine aimed at replicating AlphaZero, known as Leela Chess Zero. By January 2019, Leela was able to defeat the version of Stockfish that played AlphaZero (Stockfish 8) in a 100-game match. An updated version of Stockfish narrowly defeated Leela Chess Zero in the superfinal of the 14th TCEC season, 50.5–49.5 (+10 =81 −9), but lost the superfinal of the next season to Leela 53.5–46.5 (+14 =79 -7). The two engines remain very close in strength to each other even as they continue to improve: Leela defeated Stockfish in the superfinal of TCEC Season 17, but Stockfish won TCEC Season 18, TCEC Season 19, TCEC Season 20, and TCEC Season 21, each time defeating Leela in the superfinal.

Derivatives 

 YaneuraOu, a strong shogi engine and the origin of NNUE. Speaks USI, a variant of UCI for shogi.
 Fairy Stockfish, a version modified to play fairy chess. Runs with regional variants (chess, shogi, makruk, etc.) as well as other variants like antichess.
 Lichess Stockfish, a version for playing variants without fairy pieces.
 Crystal, which seeks to address common issues with chess engines such as positional or tactical blindness due to over reductions or over pruning, draw blindness due to the move horizon and displayed principal variation reliability.
 Brainfish, which contains a reduced version of Cerebellum, a chess opening library.
 BrainLearn, a derivative of Brainfish but with a persisted learning algorithm.
 ShashChess, a derivative with the goal to apply Alexander Shashin theory from the book Best Play: a New Method for Discovering the Strongest Move.
 Fat Titz, a fork of CFish which name is a pun of Fat Fritz 2 with a HalfKAv2-2048x2-64-64-1 evaluation network, which contains 4 times the knowledge of Stockfish 14. It was trained partially on Lc0 data, which gives a unique positional style, while still preserving the tactical sharpness of Stockfish.
 Houdini 6, an alleged Stockfish 8 derivative without providing the sources on request, violating the GPL license.
 Fat Fritz 2, an alleged Stockfish 12 derivative without providing the sources on request, violating the GPL license.

参见 
 自由及开放源代码软件列表

注释

參考

延伸閱讀 
 Interview with Tord Romstad (Norway), Joona Kiiski (Finland) and Marco Costalba (Italy) , programmers of Stockfish

外部鏈接 
 
 
 WebAssembly port of Stockfish 
 Development versions built for Linux and Windows 
 Developers forum 
 Stockfish Testing Framework 

電腦西洋棋
2008年软件
用C++編程的自由軟體
分散式計算計劃
使用GPL许可证的软件
应用机器学习