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以及PyChessUsing the Stockfish Engine , Stockfish Support.ChessEngines , PyChess Github.。Stockfish可以被编译为WebAssembly或JavaScript，从而在浏览器中运行。在服务器端程序以外，Chess.com和Lichess都以这种形式支持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。

+锦标赛赛季年份时间限制排名参考12010100+10第3名22011150+30第5名42013150+60第2名52013120+30第2名62014120+30第1名72014120+30第2名82015180+30第2名92016180+15第1名10201790+10第2名112018120+15第1名122018120+15第1名132018120+15第1名142018120+15第1名152019120+10第2名162019120+10第1名17202090+5第2名18202090+10第1名192020120+10第1名202020120+10第1名212021120+10第1名222022120+12第1名232022120+12第1名
+杯赛场次年份时间限制排名参考1201830+10第1名2201930+5第2名3201930+5第2名4201930+5第1名5202030+5第1名6202030+5第3名7202030+5第1名8202130+5第1名9202130+5第1名10202230+3第1名
+菲舍尔任意制象棋（FRC）场次年份时间限制排名参考1201930+5第1名2202030+5第1名3202130+5第2名4202230+5第1名5202230+3第1名
+瑞士制场次年份时间限制排名参考1202145+7第2名2202145+7第2名3202245+4.5第1名

+双重菲舍尔任意制象棋（DFRC）场次年份时间限制排名参考1202230+3第1名

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

+主赛事场次年份时间限制排名参考CCC 1：快速打群架201815+5第1名CCC 2：闪电战20185+2第1名CCC 3：快速重现201930+5第1名CCC 4：子弹喧闹20191+2第1名CCC 5：升级201910+5第1名CCC 6：冬季经典201910+10第1名CCC 7：快速发达20195+2第2名CCC 8：深潜201915+5第1名CCC 9：严酷考验20195+2, 10+5第1名CCC 10：两位数201910+3第2名CCC 11201930+5第2名CCC 12：子弹疯狂！20201+1第3名CCC 13：七边形20205+5第2名CCC 14202015+5, 5+2, 1+1第4名CCC闪电战202020205+5第1名CCC速战2021202115+3第1名CCC闪电战202120215+5第1名CCC Chess960闪电战20215+5第1名CCC 16：速战202115+3第1名CCC 16：子弹20212+1第1名CCC 16：闪电战20225+5第1名CCC 17：速战202215+3第1名CCC 17：子弹20222+1第1名CCC 17：闪电战20225+5第1名CCC 18：速战202215+3第1名CCC 19：闪电战20225+5第1名CCC 19：速战202215+3第1名

+BonusEventYearTime ControlsResultRefCPU Blitz Madness20203+21stTrillion-Node Throwdown III2020150+51stNo-Castle II20205+21stBullet Chess is Fun20202+11stCheckmate in 420203+21stOdds Ladder20203+21stMerry Queen Sac20202+11stBudapest Bullet20202+12ndKing Gambit Madness20215+51stDrawkiller Update Party20212+11stTo Castle Or Not To Castle II20213+21stEco Mega-Match 2 (part 1)20211+11stEco Mega-Match 2 (part 2)20211+11stCaro-Kann Special20215+21stKing's Indian Defense Special202110+22ndDutch Defense Special202110+21stEvans Gambit Madness202110+22ndSicilian Najdorf Special202110+21stBelgian Stew20212+11stSaragossa20212+12ndDouble Bongcloud, Rapid202110+22ndThe Hillbilly Attack202110+23rdRomantic Openings: Danish Gambit Accepted20213+21stRomantic Openings: Evans Gambit Accepted20213+21stRomantic Openings: Urusov Gambit Accepted20215+21stRomantic Openings: Blackmar-Diemer Gambit20215+21stRomantic Openings: Stafford Gambit20211+22ndRomantic Openings: Calabrese Countergambit20215+21stRomantic Openings: Traxler Counterattack20215+22ndNo Black Castling20225+51stDraw Killer Bonus202215+51stRomantic Openings: Wing Gambit20225+21stChess 324 Bonus20225+21st

 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.

 衍生引擎 

 YaneuraOu，一个强大的将棋引擎，也是NNUE的起源。支持USI，USI是将棋的UCI协议变体。
 Fairy Stockfish，一个Stockfish修改后的版本，可以运行象棋变体（国际象棋、将棋、antichess等）。
 Lichess Stockfish，一个用于玩无变体棋子的变体的版本。
 Crystal，试图解决国际象棋引擎的常见问题，例如由于过度简化或过度剪枝造成的定位或战术盲区。
 Brainfish，包含Cerebellum（一个国际象棋开局库）的精简版本。
 BrainLearn，Brainfish的衍生版本，但具有持久学习算法。
 ShashChess，一个衍生版本，目标是应用Alexander Shashin在《最佳玩法：发现最佳着法的新方法》一书中的理论。
 Fat Titz，CFish的一个分支，其名称是Fat Fritz 2的双关语，带有HalfKAv2-2048x2-64-64-1评估网络，包含Stockfish 14四倍的知识。它部分使用Lc0数据进行训练，这赋予了它独特的布局风格，同时保留了Stockfish战术犀利的特点。
 Houdini 6，据称是Stockfish 8的衍生版本，但在被要求提供源代码时未提供，违反了GPL许可证。
 Fat Fritz 2，据称是Stockfish 12的衍生版本，但在被要求提供源代码时未提供，违反了GPL许可证。
 皮卡鱼（Pikafish），一个修改自Stockfish的中国象棋引擎。

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

 注释 

 參考 

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

 外部鏈接 


 Stockfish的WebAssembly版本 
 开发版本 
 开发者论坛 
 Fishtest 

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