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 可以進行更深的搜索。截至 2022 年 7 月 (2022-07)，Stockfish 15 (4 執行緒) 在 CCRL 40/15 評測中達到了 3540+16 
−16 的等級分。

由於其從 Glaurung 派生而來，Stockfish 支持 Chess960。曾在羅納德・德曼維護的分叉中實現的 Syzygy 殘局資料庫於 2014 年被併入 Stockfish 中。在 7 個棋子的 Syzygy 殘局資料庫發布之後不久，Stockfish 於 2018 年增加了對其的支持。

Stockfish 在很多平台上受歡迎。在桌面端，它是網際網路西洋棋俱樂部界面程序 BlitzIn 和 Dasher 默認的象棋引擎。在移動端，它是 Stockfish、SmallFish 和 DroidFish 等 APP 內置的象棋引擎。其它兼容 Stockfish 的圖形用戶界面包括 Fritz、Arena、Stockfish for Mac 以及 PyChess。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 的棋力的貢獻的承認，他的名字被加入到正式的作者名單中。

截至 2022 年 12 月 (2022-12)，Fishtest 框架總共用 9850 多年的 CPU 時間下了 57 億多局象棋。

### 可高效更新神經網絡

2020 年 6 月，Stockfish 的開發者討論了一個由計算機日本將棋程式設計師編寫的名為 Stockfish NNUE 的可高效更新神經網絡分叉。2020 年 7 月，西洋棋新聞報導說「Stockfish NNUE 通過將神經網絡加入本就十分強大的 Stockfish 象棋引擎里，在計算機象棋中開闢了新天地」。之後，開發者宣布將會把 NNUE 合併入 Stockfish 中並發布了開發版。

> 「由 @nodchip 維護的可高效更新神經網絡分支展現了很好的效果並有極大的潛力，我們接下來會合併…… 這一合併會將機器學習引入到引擎中，從而擴大開發者的範圍並吸引更多有能力的人。我們渴望所有人 —— 包括所有的開發者和各種硬體的用戶 —— 的支持並旨在成為一個包容的社群…… 所需的具體措施在未來會逐漸明朗，我期待與社群合作以實現這一目標！」
> 
> 

2020 年 9 月 2 日，實現了前述神經網絡的 Stockfish 第 12 版發布。根據發行公告，這一新版本「棋力明顯比它之前的任何一個版本更強」，與第 11 版對弈時平均每贏 10 個回合才會輸掉 1 個回合。

## 比賽結果

### 最強象棋引擎錦標賽

主條目：最強象棋引擎錦標賽

Stockfish 曾多次獲得最強象棋引擎錦標賽（TCEC）冠軍，目前是獲得冠軍次數最多的。自 TCEC 於 2013 年重啟以來，Stockfish 僅在一個賽季中未能取得前兩名。在 TCEC 第 4 和第 5 賽季，Stockfish 均獲得第二名，其在總決賽中均以 23–25 的成績先後負於 Houdini 和 Komodo。值得注意的是，在第 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 面對新的競爭對手 Leela Chess Zero，以相差一局的比分（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 枚棋子的殘局資料庫和局中失誤後被 Leela Chess Zero 擊敗。在第四次杯賽中，Stockfish 逆轉了這一結局，在決賽中以 4.5–3.5 的比分擊敗了 Leela。

### Chess.com 計算機西洋棋錦標賽

自從 Chess.com 於 2018 年首次舉辦 Chess.com 計算機西洋棋錦標賽（CCC）以來，Stockfish 是該比賽中最成功的引擎。它在早期比賽中占有優勢，在前六次錦標賽中均取得勝利，而在第七次錦標賽中獲得第二名。自此以來，它的支配地位受到了基於神經網絡的象棋引擎 Leelenstein 和 Leela Chess Zero 的挑戰，但它仍然表現良好，在 CCC11 之前的每次比賽都能晉級總決賽。CCC12 改用了淘汰賽制，抽籤時 Stockfish 和 Leela 被分到了半決賽的同一組。Leela 在半決賽中將 Stockfish 淘汰。然而，在賽後相同形式的比賽中，Stockfish 戰勝了決賽的輸家 Leelenstein。