中國象棋計算機博弈發展史研究報告

系統梳理中國象棋計算機博弈從 1980 年代到 2026 年的技術演進、代表引擎與社群生態。 在線平臺使用規範 → 爭議二:商業引擎的閉源問題

☰ 目錄

在線平臺使用規範

在中國象棋在線平臺使用引擎的規範:

對弈平臺規則:大多數在線平臺禁止開啓引擎輔助對弈 分析模式:在平臺的分析模式或觀戰模式使用引擎是允許的 教學使用:在象棋教學和訓練場景中使用引擎是合法和推薦的

001 中國象棋引擎知識點:1號專題

專題1:中國象棋引擎的核心參數說明

中國象棋引擎在運行過程中可以配置多個核心參數,這些參數對引擎的棋力、性能和穩定性有重要影響。

參數1:哈希表大小(Hash Size)

哈希表大小決定了引擎可以緩存多少個已搜索局面的結果。哈希表越大,引擎可以記憶更多的搜索信息,避免重複搜索。

推薦值:

  • 2GB內存系統:64-128MB
  • 4GB內存系統:128-256MB
  • 8GB內存系統:256-512MB
  • 16GB內存系統:512-1024MB

參數1:線程數(Threads)

線程數決定了引擎使用多少CPU核心進行並行搜索。線程數越多,並行搜索的效率越高。

推薦值:

  • 雙核CPU:2個線程
  • 四核CPU:4個線程
  • 八核CPU:8個線程
  • 十六核CPU及以上:8-16個線程

參數2:評估文件路徑(EvalFile)

評估文件路徑指定NNUE神經網絡權重文件的存儲位置。引擎啓動時加載該文件用於局面評估。

參數3:規則選擇(Rule)

規則選擇參數允許用戶選擇使用的象棋規則體系。支持亞洲規則和中國規則兩種選擇。


中國象棋引擎專題資料 1

專題1A:着法生成器的性能優化

中國象棋引擎的着法生成器是最常用的函數之一。優化着法生成器的性能可以顯著提升引擎的整體搜索效率。

優化策略1:預計算表。在引擎啓動時,預計算所有棋子在所有位置上的着法,存儲在查找表中。運行時,着法生成器只需要查表並過濾合法着法,而不是每次動態生成。

優化策略2:位棋盤操作。使用位棋盤(Bitboard)進行着法生成,通過位運算一次生成多個着法,減少循環次數。

優化策略3:增量更新。每次走棋後,只更新受影響的着法數據,而不是重新生成所有着法。

優化策略4:模板化和內聯。使用C++模板和內聯函數,減少函數調用開銷。

優化策略5:緩存友好。確保着法生成器的數據結構和訪問模式對CPU緩存友好。

專題1B:評估函數的更新策略

評估函數在引擎搜索中被頻繁調用,其更新策略對性能有重要影響:

全量評估:每次需要評估時,重新計算所有特徵值。這種方法簡單但計算量大。

增量評估:每次走棋後,只更新受影響的特徵值。這種方法顯著減少了評估開銷。

惰性評估:在搜索中,如果某些分支的評估已經足夠確定結果,可以延遲或跳過完全評估。

NNUE的增量更新:NNUE評估網絡天然支持增量更新,每次走棋後只更新幾個輸入特徵。

專題1C:搜索的穩定性改進

搜索穩定性指引擎在相鄰兩步棋之間給出的一致性走法建議。改進搜索穩定性的方法:

時間管理優化:在剩餘時間充裕時,等待搜索穩定後再出棋。

評估平滑:對評估結果進行平滑處理,減少相鄰搜索的評估波動。

PV穩定性檢查:在搜索過程中,持續監控PV(主變)的變化。如果PV頻繁變化,可能需要增加搜索時間。

隨機化:在棋力相近的變化中,引入少量隨機化,避免引擎在相同局面下反覆走出不同的走法。

專題1D:開局庫的使用策略

開局庫對引擎的實戰表現有重要影響。使用策略包括:

開局庫的深度:引擎在開局庫覆蓋的範圍內不使用搜索,直接返回開局庫中的走法。開局庫的深度通常在5-15步之間。

開局庫的質量:開局庫中的數據應來自高水平對局(大師級或引擎超高水平對局)。

開局庫的更新:定期更新開局庫,納入最新的開局理論發展。

開局庫的侷限性:過度依賴開局庫可能導致引擎在開局庫之外的局面中表現不佳。

專題1E:殘局庫的使用策略

殘局庫指導引擎在殘局中精確計算。使用策略包括:

殘局庫的覆蓋:殘局庫覆蓋的子力組合範圍決定了引擎在殘局中的精確性。

殘局庫的優先級:在殘局庫覆蓋的局面中,優先使用殘局庫結果(而不是搜索)。

殘局庫的查詢開銷:殘局庫的查詢時間應該儘可能短,避免成爲搜索瓶頸。

第二十八卷 中國象棋引擎社區歷史上的重要爭議

爭議一:旋風vs名手的棋力之爭

2009-2014年間,象棋旋風與象棋名手之間的棋力之爭是中國象棋引擎社區最熱烈的話題之一。這場爭論沒有明確的結論,但推動了中國象棋引擎技術的快速發展。

爭議的核心關注點:

  1. 評估函數的精度:名手的手工評估被認爲更精細,旋風則強調搜索效率
  2. 並行搜索的效率:名手的分佈式支持是其技術優勢
  3. 開局庫的質量:兩者的開局庫各有優勢
  4. 測試條件和測試方法:不同的測試設置導致不同的結論

爭議二:商業引擎的閉源問題

2005-2020年間,商業引擎的閉源問題引發了社區中的激烈討論:

支持閉源的觀點:

  1. 引擎開發需要大量時間和精力,開發者有權獲得回報
  2. 商業運營是引擎持續改進的條件
  3. 閉源可以保護開發者的知識產權

支持開源的觀點:

  1. 中國象棋引擎的發展依賴於知識的積累和傳播
  2. 閉源阻礙了技術的進步和創新
  3. 開源可以讓更多人蔘與到引擎開發中來

這個爭議在2022年皮卡魚開源引擎的棋力超越商業引擎後基本得到解決。