Loading AI tools
国际象棋引擎 来自维基百科,自由的百科全书
Stockfish,是一個自由及開放源碼國際象棋引擎軟件,可用於各種桌面和移動平台。可通過通用國際象棋接口在國際象棋軟件中使用。
開發者 | Marco Costalba Joona Kiiski Gary Linscott Tord Romstad Stéphane Nicolet Stefan Geschwentner Joost VandeVondele |
---|---|
首次發布 | 2008年11月2日 |
當前版本 | 17(2024年9月6日 | )
源代碼庫 | |
編程語言 | C++ |
操作系統 | Microsoft Windows macOS Linux iOS Android |
類型 | 象棋引擎 |
許可協議 | GPL-3.0-or-later[1] |
網站 | stockfishchess |
Stockfish持續在大多數國際象棋引擎排名中排在首位或接近首位。截至2022年10月,Stockfish是世界上最強大的CPU象棋引擎[2]。它共計贏得了最強象棋引擎錦標賽13次以及Chess.com計算機象棋錦標賽19次。
Stockfish由Marco Costalba、Joona Kiiski、Gary Linscott、Tord Romstad、Stéphane Nicolet、Stefan Geschwentner和Joost VandeVondele開發,此外開源社區開發者也作出了許多貢獻[3]。它從2004年發布的Tord Romstad開發的開源象棋引擎Glaurung派生而來。
在多處理器系統中,Stockfish可以使用至多1024個線程。它的已訪問位置表的大小可達32TB。Stockfish通過位棋盤實現了高級的Alpha-beta剪枝。部分上由於進行了更激進的剪枝以及後期移動縮減,與其它象棋引擎相比,Stockfish可以進行更深的搜索[4]。截至2022年7月[update],Stockfish 15 (4線程)在CCRL 40/15評測中達到了3540+16
−16的等級分[5]。
由於其從Glaurung派生而來,Stockfish支持Chess960[6]。曾在羅納德·德曼維護的分叉中實現的Syzygy殘局數據庫於2014年被併入Stockfish中[7]。在7個棋子的Syzygy殘局數據庫發布之後不久,Stockfish於2018年增加了對其的支持[8]。
Stockfish在很多平台上受歡迎。在桌面端,它是互聯網國際象棋俱樂部界面程序BlitzIn和Dasher默認的象棋引擎。在移動端,它是Stockfish、SmallFish和DroidFish等APP內置的象棋引擎。其它兼容Stockfish的圖形用戶界面包括Fritz、Arena、Stockfish for Mac以及PyChess[9][10]。Stockfish可以被編譯為WebAssembly或JavaScript,從而在瀏覽器中運行。在服務器端程序以外,Chess.com和Lichess都以這種形式支持Stockfish[11]。Stockfish的正式版本和開發版本均以在Windows、macOS、Linux32位/64位和Android上的編譯版本和C++源代碼的形式發布。
Stockfish起源於Romstad編寫並於2004年首次發布的開源國際象棋引擎Glaurung。四年之後,Costalba受這一強大的開源引擎啟發,決定分叉此項目。他將其命名為Stockfish的原因是它「於挪威生產而於意大利被烹飪」(Romstad是挪威人,而Costalba是意大利人)。首個版本Stockfish 1.0於2008年11月發布[12][13]。有一陣子,新想法與代碼變更在兩個程序之間雙向流動,直到Romstad考慮到Stockfish在當時更加先進而決定不再開發Glaurung[14]。Glaurung的最終版本(2.2)於2008年12月發布。
約於2011年,Romstad決定不再參與Stockfish的開發以專注於開發他的新的iOS國際象棋應用[15]。2014年6月18日,Marco Costalba宣布他已經「決定不再維護Stockfish」並讓開源社區建立其當前版本的分叉並繼續開發它[16]。不久之後,一個由Stockfish的核心開發者組成的志願者團隊建立了一個官方代碼庫並管理此項目至今[17]。
自2013年以來,Stockfish的開發運用了名為「Fishtest」的分布式測試框架,志願者可以捐贈CPU時間以測試對程序的改進[18][19][20]。
對博弈算法的修改會應用序列概率比例測試分析在Fishtest框架上與該程序的「對照」版本對弈數萬局的結果而被接受或拒絕。在框架上的測試會以卡方檢驗驗證,僅當結果在統計意義上顯著時才會被認為是可靠的並用於修改軟件代碼。
Fishtest出現後,Stockfish的等級分在僅僅12個月內增加了120,使其在所有主流象棋引擎排名中上升到頂部[21]。在Stockfish 7中,作為對Fishtest的作者Gary Linscott對Stockfish的棋力的貢獻的承認,他的名字被加入到正式的作者名單中。
2020年6月,Stockfish的開發者討論了一個由計算機日本將棋程序員編寫的名為Stockfish NNUE的可高效更新神經網絡分叉[23][24]。2020年7月,國際象棋新聞報導說「Stockfish NNUE通過將神經網絡加入本就十分強大的Stockfish象棋引擎里,在計算機象棋中開闢了新天地」[25]。之後,開發者宣布將會把NNUE合併入Stockfish中並發布了開發版[26][27]。
「由@nodchip維護的可高效更新神經網絡分支展現了很好的效果並有極大的潛力,我們接下來會合併……這一合併會將機器學習引入到引擎中,從而擴大開發者的範圍並吸引更多有能力的人。我們渴望所有人——包括所有的開發者和各種硬件的用戶——的支持並旨在成為一個包容的社群……所需的具體措施在未來會逐漸明朗,我期待與社群合作以實現這一目標!」
——Joost VandeVondele,2020年7月25日[26]
2020年9月2日,實現了前述神經網絡的Stockfish第12版發布。根據發行公告,這一新版本「棋力明顯比它之前的任何一個版本更強」,與第11版對弈時平均每贏10個回合才會輸掉1個回合[28][29]。
主條目:最強象棋引擎錦標賽
Stockfish曾多次獲得最強象棋引擎錦標賽(TCEC)冠軍,目前是獲得冠軍次數最多的。自TCEC於2013年重啟以來,Stockfish僅在一個賽季中未能取得前兩名。在TCEC第4和第5賽季,Stockfish均獲得第二名,其在總決賽中均以23–25的成績先後負於Houdini和Komodo。值得注意的是,在第5賽季中,Komodo的原作者唐·戴利在賽事的最後階段因病去世,因此獲勝的Komodo開發團隊是在他死後代他領獎的。為了紀念他,在賽季結束後不久發布的Stockfish版本以「Stockfish DD」命名[30]。
2014年5月30日,Stockfish 170514(一個支持殘局數據庫的Stockfish 5開發版)在總決賽中以35.5–28.5的比分擊敗了Komodo 7x,從而決定性地贏得了TCEC第6季[31]。Stockfish 5的正式版於次日發布[32]。在TCEC第7季中,Stockfish又一次晉級總決賽,但以30.5–33.5的比分輸給了Komodo[31]。在TCEC第8季中,儘管代碼缺陷使其損失了比賽時間,Stockfish也再一次晉級總決賽,但在100個回合的總決賽中以46.5–53.5的比分輸給了Komodo[31]。在第9季中,Stockfish以54.5–45.5的比分擊敗了Houdini 5[31][33]。
在TCEC第10季中,Stockfish獲得第三名,是2013年以來其未能晉級總決賽的唯一賽季。Stockfish沒有輸掉任何比賽,但仍然因為未能擊敗評級更低的引擎足夠多次而被淘汰。Stockfish在這一程序性淘汰後的很長一段時間不斷獲勝,其贏得了第11季(以59–41比分擊敗Houdini 6.03)[31][34]、第12季(以60–40的比分擊敗Komodo 12.1.1)[31][35]和第13季(以55–45的比分擊敗Komodo 2155.00)[31][36][37]。在TCEC第14季中,Stockfish面對新的競爭對手Leela Chess Zero,以相差一局的比分(50.5–49.5)險勝[31][38]。它的連續獲勝終於在TCEC第15季中結束,因為Leela再次晉級總決賽並以53.5–46.5的比分擊敗了Stockfish[31],但不久之後,Leela在TCEC第16季中未能晉級總決賽,而Stockfish以54.5–45.5的比分擊敗了AllieStein[31]。在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季)[31]。
Stockfish也參加了TCEC杯的比賽。它贏得了第一次杯賽,但在第二次杯賽的半決賽出人意料地被Houdini擊敗[31][39]。在三四名決賽中,Stockfish棋力有所恢復,擊敗了Komodo[31]。在第三次杯賽中,Stockfish晉級了決賽,但在7枚棋子的殘局數據庫和局中失誤後被Leela Chess Zero擊敗。在第四次杯賽中,Stockfish逆轉了這一結局,在決賽中以4.5–3.5的比分擊敗了Leela[31]。
賽季 | 年份 | 時間限制 | 排名 | 參考 |
---|---|---|---|---|
1 | 2010 | 100+10 | 第3名 | [40] |
2 | 2011 | 150+30 | 第5名 | [41] |
4 | 2013 | 150+60 | 第2名 | [42] |
5 | 2013 | 120+30 | 第2名 | [43] |
6 | 2014 | 120+30 | 第1名 | [44] |
7 | 2014 | 120+30 | 第2名 | [45] |
8 | 2015 | 180+30 | 第2名 | [46] |
9 | 2016 | 180+15 | 第1名 | [47] |
10 | 2017 | 90+10 | 第2名[note 1] | [48] |
11 | 2018 | 120+15 | 第1名 | [49] |
12 | 2018 | 120+15 | 第1名 | [50] |
13 | 2018 | 120+15 | 第1名 | [51] |
14 | 2018 | 120+15 | 第1名 | [52] |
15 | 2019 | 120+10 | 第2名 | [53] |
16 | 2019 | 120+10 | 第1名 | [54] |
17 | 2020 | 90+5 | 第2名 | [55] |
18 | 2020 | 90+10 | 第1名 | [56] |
19 | 2020 | 120+10 | 第1名 | [57] |
20 | 2020 | 120+10 | 第1名 | [58] |
21 | 2021 | 120+10 | 第1名 | [59] |
22 | 2022 | 120+12 | 第1名 | [60] |
23 | 2022 | 120+12 | 第1名 | [61] |
自從Chess.com於2018年首次舉辦Chess.com計算機國際象棋錦標賽(CCC)以來,Stockfish是該比賽中最成功的引擎。它在早期比賽中占有優勢,在前六次錦標賽中均取得勝利,而在第七次錦標賽中獲得第二名。自此以來,它的支配地位受到了基於神經網絡的象棋引擎Leelenstein和Leela Chess Zero的挑戰,但它仍然表現良好,在CCC11之前的每次比賽都能晉級總決賽。CCC12改用了淘汰賽制,抽籤時Stockfish和Leela被分到了半決賽的同一組。Leela在半決賽中將Stockfish淘汰。然而,在賽後相同形式的比賽中,Stockfish戰勝了決賽的輸家Leelenstein。
場次 | 年份 | 時間限制 | 排名 | 參考 |
---|---|---|---|---|
CCC 1:快速打群架 | 2018 | 15+5 | 第1名 | [81] |
CCC 2:閃電戰 | 2018 | 5+2 | 第1名 | [82] |
CCC 3:快速重現 | 2019 | 30+5 | 第1名 | [83] |
CCC 4:子彈喧鬧 | 2019 | 1+2 | 第1名 | [84] |
CCC 5:升級 | 2019 | 10+5 | 第1名 | [85] |
CCC 6:冬季經典 | 2019 | 10+10 | 第1名 | [86] |
CCC 7:快速發達 | 2019 | 5+2 | 第2名 | [87] |
CCC 8:深潛 | 2019 | 15+5 | 第1名 | [88] |
CCC 9:嚴酷考驗 | 2019 | 5+2, 10+5 | 第1名 | [89] |
CCC 10:兩位數 | 2019 | 10+3 | 第2名 | [90] |
CCC 11 | 2019 | 30+5 | 第2名 | [91] |
CCC 12:子彈瘋狂! | 2020 | 1+1 | 第3名 | [92] |
CCC 13:七邊形 | 2020 | 5+5 | 第2名 | [93] |
CCC 14 | 2020 | 15+5, 5+2, 1+1 | 第4名 | [94] |
CCC閃電戰2020 | 2020 | 5+5 | 第1名 | [95] |
CCC速戰2021 | 2021 | 15+3 | 第1名 | [96] |
CCC閃電戰2021 | 2021 | 5+5 | 第1名 | [97] |
CCC Chess960閃電戰 | 2021 | 5+5 | 第1名 | [98] |
CCC 16:速戰 | 2021 | 15+3 | 第1名 | [99] |
CCC 16:子彈 | 2021 | 2+1 | 第1名 | [100] |
CCC 16:閃電戰 | 2022 | 5+5 | 第1名 | [101] |
CCC 17:速戰 | 2022 | 15+3 | 第1名 | [102] |
CCC 17:子彈 | 2022 | 2+1 | 第1名 | [103] |
CCC 17:閃電戰 | 2022 | 5+5 | 第1名 | [104] |
CCC 18:速戰 | 2022 | 15+3 | 第1名 | [105] |
CCC 19:閃電戰 | 2022 | 5+5 | 第1名 | [106] |
CCC 19:速戰 | 2022 | 15+3 | 第1名 | [107] |
Event | Year | Time Controls | Result | Ref |
---|---|---|---|---|
CPU Blitz Madness | 2020 | 3+2 | 1st | [108] |
Trillion-Node Throwdown III | 2020 | 150+5 | 1st | [109] |
No-Castle II | 2020 | 5+2 | 1st | [110] |
Bullet Chess is Fun | 2020 | 2+1 | 1st | [111] |
Checkmate in 4 | 2020 | 3+2 | 1st | [112] |
Odds Ladder | 2020 | 3+2 | 1st | [113] |
Merry Queen Sac | 2020 | 2+1 | 1st | [114] |
Budapest Bullet | 2020 | 2+1 | 2nd | [115] |
King Gambit Madness | 2021 | 5+5 | 1st | [116] |
Drawkiller Update Party | 2021 | 2+1 | 1st | [117] |
To Castle Or Not To Castle II | 2021 | 3+2 | 1st | [118] |
Eco Mega-Match 2 (part 1) | 2021 | 1+1 | 1st | [119] |
Eco Mega-Match 2 (part 2) | 2021 | 1+1 | 1st | [120] |
Caro-Kann Special | 2021 | 5+2 | 1st | [121] |
King's Indian Defense Special | 2021 | 10+2 | 2nd | [122] |
Dutch Defense Special | 2021 | 10+2 | 1st | [123] |
Evans Gambit Madness | 2021 | 10+2 | 2nd | [124] |
Sicilian Najdorf Special | 2021 | 10+2 | 1st | [125] |
Belgian Stew | 2021 | 2+1 | 1st | [126] |
Saragossa | 2021 | 2+1 | 2nd | [127] |
Double Bongcloud, Rapid | 2021 | 10+2 | 2nd | [128] |
The Hillbilly Attack | 2021 | 10+2 | 3rd | [129] |
Romantic Openings: Danish Gambit Accepted | 2021 | 3+2 | 1st | [130] |
Romantic Openings: Evans Gambit Accepted | 2021 | 3+2 | 1st | [131] |
Romantic Openings: Urusov Gambit Accepted | 2021 | 5+2 | 1st | [132] |
Romantic Openings: Blackmar-Diemer Gambit | 2021 | 5+2 | 1st | [133] |
Romantic Openings: Stafford Gambit | 2021 | 1+2 | 2nd | [134] |
Romantic Openings: Calabrese Countergambit | 2021 | 5+2 | 1st | [135] |
Romantic Openings: Traxler Counterattack | 2021 | 5+2 | 2nd | [136] |
No Black Castling | 2022 | 5+5 | 1st | [137] |
Draw Killer Bonus | 2022 | 15+5 | 1st | [138] |
Romantic Openings: Wing Gambit | 2022 | 5+2 | 1st | [139] |
Chess 324 Bonus | 2022 | 5+2 | 1st | [140] |
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.[141]
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.[142][143][144] 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.[145] 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.[146][note 3]
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),[31] but lost the superfinal of the next season to Leela 53.5–46.5 (+14 =79 -7).[31][148] 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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.