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和Lichess都以这种形式支持Stockfish。有一阵子,新想法与代码变更在两个程序之间双向流动,直到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中并发布了开发版。
{{blockquote|quote=“由@nodchip维护的可高效更新神经网络分支展现了很好的效果并有极大的潜力,我们接下来会合并……这一合并会将机器学习引入到引擎中,从而扩大开发者的范围并吸引更多有能力的人。我们渴望所有人——包括所有的开发者和各种硬件的用户——的支持并旨在成为一个包容的社群……所需的具体措施在未来会逐渐明朗,我期待与社群合作以实现这一目标!”|author=Joost VandeVondele|source=2020年7月25日。
比赛结果
最强象棋引擎锦标赛
主条目:
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第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。在三四名决赛中,Stockfish棋力有所恢复,击败了Komodo
|-
|2
|2011
|150+30
|第5名
|
|-
|4
|2013
|150+60
| style="background:#DFDFDF;" |第2名
|
|-
|5
|2013
|120+30
| style="background:#DFDFDF;" |第2名
|
|-
|6
|2014
|120+30
| style="background:#FFFFBF;" |第1名
|
|-
|7
|2014
|120+30
| style="background:#DFDFDF;" |第2名
|
|-
|8
|2015
|180+30
| style="background:#DFDFDF;" |第2名
|
|-
|9
|2016
|180+15
| style="background:#FFFFBF;" |第1名
|
|-
|10
|2017
|90+10
| style="background:#DFDFDF;" |第2名
|
|-
|11
|2018
|120+15
| style="background:#FFFFBF;" |第1名
|
|-
|12
|2018
|120+15
| style="background:#FFFFBF;" |第1名
|
|-
|13
|2018
|120+15
| style="background:#FFFFBF;" |第1名
|
|-
|14
|2018
|120+15
| style="background:#FFFFBF;" |第1名
|
|-
|15
|2019
|120+10
| style="background:#DFDFDF;" |第2名
|
|-
|16
|2019
|120+10
| style="background:#FFFFBF;" |第1名
|
|-
|17
|2020
|90+5
| style="background:#DFDFDF;" |第2名
|
|-
|18
|2020
|90+10
| style="background:#FFFFBF;" |第1名
|
|-
|19
|2020
|120+10
| style="background:#FFFFBF;" |第1名
|
|-
|20
|2020
|120+10
| style="background:#FFFFBF;" |第1名
|
|-
|21
|2021
|120+10
| style="background:#FFFFBF;" |第1名
|
|-
|22
|2022
|120+12
| style="background:#FFFFBF;" |第1名
|
|-
|23
|2022
|120+12
| style="background:#FFFFBF;" |第1名
|
|}
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), 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的中国象棋引擎。
参见
- 自由及开放源代码软件列表
注释
參考
延伸閱讀
- [http://www.schach-welt.de/schach/computerschach/interviews/romstad-kiiski-costalba-eng Interview with Tord Romstad (Norway), Joona Kiiski (Finland) and Marco Costalba (Italy)] , programmers of Stockfish
外部鏈接
*
*
- [https://github.com/niklasf/stockfish.wasm Stockfish的WebAssembly版本]
- [http://abrok.eu/stockfish/ 开发版本]
- [https://groups.google.com/forum/?fromgroups=#!forum/fishcooking 开发者论坛]
- [http://tests.stockfishchess.org/tests Fishtest]
评论 (0)