
- 有些引擎已經停止開發,那麼可以視為棋力已達上限
- 但有些引擎還在開發,有不同的版本號,而越新的版本通常實力更強
- 我的實測不一定是最新版本號,而是挑出適合安裝在 Drago 的版本號
- 引擎參數經優化後棋力會更強,例如 CPU 執行緒數量(threads)、每手棋模擬次數(playouts)、搜尋樹使用記憶體大小(tree-size)
- 很多靠神經網路運算的 AI 引擎,需要訓練過的權重檔案,不同的權重檔案也會導致棋力不同
- 不必花太多時間在調校 AI 引擎上,使用預設值就好
- 讓 AI 在容許的指定時間內就落子,減少等待時間的浪費
- 用最簡單的方式找出適合自己訓練棋力的 AI 對手
圍棋人機對奕系列文章:
(圖片出處: pexels.com)
一、GoGui 初始測試(規則不同勝負顛倒)
1. GoGui 對奕指令 之前「GoGui」→「五、AI 對奕」說明過,讓 AI 互相對奕的指令範例如下:G:\GoTool\GoGui\gogui-twogtp -black "G:\GoTool\Aya\Aya.exe --mode gtp" -white "G:\GoTool\DarGTP\DarGTP.exe" -size 19 -time 10s -games 10 -sgffile G:\GoTool\GoGui\twogtp\Aya_DarGTP -alternate -auto
- G:\GoTool\GoGui\gogui-twogtp → 這是 gogui-twogtp.exe 的路徑,請改成自己的路徑
- -black "G:\GoTool\Aya\Aya.exe --mode gtp" → 這是黑棋 AI 引擎,用 Aya 當範例,雙引號內請改成自己的引擎路徑,若引擎需要參數記得加上去
- -white "G:\GoTool\DarGTP\DarGTP.exe" → 這是白棋 AI 引擎,用 DariushGTP 當範例,雙引號內請改成自己的引擎路徑,若引擎需要參數記得加上去
- -size 19 → 棋盤尺寸
- -time 10s → 每手 10 秒,請自行調整。如果不想等待太久的話,別設定太長的時間,否則一盤棋會模擬很久
- -games 10 → 對奕 10 盤棋,請自行調整數字
- -sgffile G:\GoTool\GoGui\twogtp\Aya_DarGTP → 對奕檔案的檔名、路徑
- -alternate → 此參數代表每下完一盤棋,黑白對調
- -auto → 自動進行對奕,一定要有此參數才能執行

- 比目制:死子會算 2 目,那麼 AI 自殺的子會讓對手平白多出額外的目數,可能影響勝負
- 數子法:由於子空皆地,那麼棋子如何自殺,不影響最終算空的結果
二、GoGui 修正後的指令
1. 加入裁判功能 查閱資料後,找到一個方法可以強制使用數子法算空。根據「GoGui 說明書」,裡面有個參數G:\GoTool\GoGui\gogui-twogtp -black "G:\GoTool\Aya\Aya.exe --mode gtp" -white "G:\GoTool\DarGTP\DarGTP.exe" -size 19 -time 10s -games 10 -sgffile G:\GoTool\GoGui\twogtp\Aya_DarGTP -alternate -auto -referee "G:\GoTool\GnuGo\gnugo.exe --mode gtp --chinese-rules"
- -referee 後面的參數請用雙引號 "" 包起來
- G:\GoTool\GnuGo\gnugo.exe 請改成你的
gnugo.exe 路徑 - 後面的參數 --mode gtp --chinese-rules 代表 GNU Go 使用中國規則數子法

- 棋局結果最多會有 3 欄,第 1 欄為日本規則,第 2 欄為中國規則,第 3 欄為裁判使用的規則
- 如果兩個引擎預設都是日本規則,只會顯示第 1 欄
- 如果兩個引擎預設都是中國規則,只會顯示第 2 欄
- 如果兩個引擎預設一中一日,則第 1、2 欄都會有勝負結果
- 如果加入了裁判,則第 3 欄也會出現勝負結果
- 如上圖,第 1、2 欄的勝負跟之前差不多,幾乎都是相反的結果
- 但我們只要看紅框標示的第 3 欄,使用中國規則數子法的勝負結果就行了
三、級位 AI 對戰結果
1. 對戰條件 麻煩的問題解決後,可以開始模擬 AI 對戰。首先進行已經介紹過的 4 個級位 AI 引擎,如有版本號的話以安裝在 Drago 上顯示的為準:- Dariush
- Aya 6.34
- GNU Go 3.8
- Fuego 1.1
- 19x19 棋盤
- 每手 20 秒
- 同一個對手下 10 局
- Aya vs DariushGTP:DariushGTP 勝 8:2
- Aya vs GNU Go:GNU Go 勝 10:0
- Aya vs Fuego:Fuego 勝 9:1
- DariushGTP vs GNU Go :GNU Go 勝 8:2
- DariushGTP vs Fuego:Fuego 勝 9:1
- GNU Go vs Fuego:GNU Go 勝 6:4
- GNU Go:3勝 (勝場 24)
- Fuego: 2勝1負 (勝場 22)
- DariushGTP:1勝2負 (勝場 11)
- Aya:3負 (勝場 3)
- Aya 輸 DariushGTP 約 1~2 子
- DariushGTP 輸 Fuego 及 GNU Go 約 2~3 子
- Fuego 與 GNU Go 實力接近,GNU Go 稍微領先一點點
Aya → DariushGTP → Fuego → GNU Go
四、段位 AI 對戰結果
1. 對戰條件 接著進行已經介紹過的 5 個段位 AI 引擎,如有版本號的話以安裝在 Drago 上顯示的為準:- Pachi 12.86
- AQ 2.1.1
- Rayon 8.0.1+3.0
- Leela 0.11.0
- KataGo 1.9.1
- 19x19 棋盤
- 每手 20 秒
- 同一個對手下 10 局
- Pachi vs AQ:AQ 勝 7:3
- Pachi vs Ray:Ray 勝 10:0
- Pachi vs Leela:Leela 勝 9:1
- Pachi vs KataGo:KataGo 勝 10:0
- AQ vs Ray:Ray 勝 9:1
- AQ vs Leela:AQ 勝 8:2
- AQ vs KataGo:KataGo 勝 9:1
- Ray vs Leela:平手 5:5
- Ray vs KataGo:KataGo 勝 6:4
- Leela vs KataGo:KataGo 勝 10:0
- KataGo:4勝 (勝場 35)
- Ray: 2勝1負1和 (勝場 28)
- AQ:2勝2負 (勝場 17)
- Leela:1勝2負1和 (勝場 16)
- Pachi:4負 (勝場 4)
- Pachi 輸 Leela 約 2~3 子
- Leela 與 AQ 實力接近,AQ 稍微領先一點點(勝場數只多1場)
- AQ 輸 Ray 約 2 子
- 但 Ray 的實力不太穩定,能跟 KataGo 一拼也能跟弱很多的 Leela 打成平手
- 從KataGo 全勝,且勝局數大幅領先 Ray 來判斷,實力應可對 Ray 讓先
Pachi → Leela → AQ → Ray → KataGo
五、額外測試
除了以上分別對級位、段位引擎進行測試,我還測試了級位最強的 Fuego、GNU Go 與段位最弱的 Pachi,看看究竟差距多少,結果 Pachi 兩局都以 10:0 碾壓獲勝。 以 Pachi 實力 KGS 4D 來看,Fuego 為 KGS 2K,此結果算是相當合理,10:0 代表棋力差距在 3~4 子以上,那麼此篇對戰實測是有相當大參考價值的,所有級位引擎實際上都未達段位的實力,而所有段位引擎都至少具備中高段的實力,棋友們可以根據自身棋力挑選合適的 AI 引擎進行訓練。圍棋人機對奕系列文章:
沒有留言:
張貼留言注意事項:
◎ 勾選「通知我」可收到後續回覆的mail!
◎ 請在相關文章留言,與文章無關的主題可至「Blogger 社團」提問。
◎ 請避免使用 Safari 瀏覽器,否則無法登入 Google 帳號留言(只能匿名留言)!
◎ 提問若無法提供足夠的資訊供判斷,可能會被無視。建議先參考這篇「Blogger 提問技巧及注意事項」。
◎ CSS 相關問題非免費諮詢,建議使用「Chrome 開發人員工具」尋找答案。
◎ 手機版相關問題請參考「Blogger 行動版範本的特質」→「三、行動版範本不一定能執行網頁版工具」;或參考「Blogger 行動版範本修改技巧 」,或本站 Blogger 行動版標籤相關文章。
◎ 非官方範本問題、或貴站為商業網站,請參考「Blogger 免費諮詢 + 付費諮詢」
◎ 若是使用官方 RWD 範本,請參考「Blogger 推出全新自適應 RWD 官方範本及佈景主題」→ 不建議對範本進行修改!
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 為了過濾垃圾留言,所有留言不會即時發佈,請稍待片刻。
◎ 本站「已關閉自刪留言功能」。