國際象棋譯文苑》文摘
 
組織電腦棋比賽初步
 
Aaron Tay/
 
  【編譯前注:文章所說的組織電腦比賽,主要指個人自己測試進行軟件之間的比賽。文章不是定義式地講課,而是指引式的初步知識,因為將很快看到,軟件之間的比賽有很多不定變數的】
 
一、前言
 
  總的來說,組織電腦之間,或者說軟件之間的比賽,可以是測試,是學習,也可以只是純粹的喜愛和樂趣。話必須說在前頭,組織這樣的比賽會大量占用你的電腦時間和電腦資源。玩不玩由你自己定了。
 
二、軟硬件選擇
 
  這是第一步要做的事,但難以一言而蔽之,因為都是很具體的情況,還取決于你準備使用什么軟件。若棋弈軟件能運行在同樣的界面下或者使用特別協議使彼此之間能聯系上,那就簡單了,否則比較麻煩。以前曾采用人工幫忙輸入棋步的辦法,若只有一臺電腦還只好用切換屏幕的笨辦法,這不但費勁,而且效果不好,因為有些棋弈程序很獨占資源,如果這樣做甚至連它的棋力也大大下降。【譯注:有些來信提到因找不到合適辦法只好這樣,并且很困惑高級的商業軟件怎么還下不過舊的軟件。毫不奇怪,越是高級復雜的軟件,對電腦資源的獨占性依賴一般越大,這樣靠切換來走棋簡直是毀了它】
 
三、用一臺電腦還是兩臺?
 
  理論上說,使用兩臺電腦分別運行兩個軟件優于只用一臺同時運行它們,因為如此確保每臺電腦的所有資源只用于各自一個軟件,而且這樣解決了軟件的“同步思考功能”該不該打開的難題[后面還要說]
  可是,為玩電腦棋而專門準備一臺電腦的人不是很多吧?使用兩臺電腦還最好是硬件配置一樣的才公平,一臺快一臺慢就難辦了。而且把它們連接起來有點復雜,對技術有些要求。更好的辦法,可能是上ICS去尋找對手,不過依然有不好解決的問題:網上對手的硬件配置多種多樣肯定有差別,“公平”難求。
  目前可能還是用一臺電腦的占多數。
 
四、“同步思考”(Ponder)功能打開還是關閉?
 
  所謂“同步思考”,下棋的人其實一點都不陌生:當輪到對手走棋,他在想棋的時候,你是不是也在想當前局面和可能的續著?這就是同步思考。棋弈軟件,哪怕很多免費的引擎,一般都有這個功能,當對方在思考時,不是走棋方的也在根據當前局面搜索、計算、推測續著。顯然當人機對弈的時候,同步思考功能打開比關閉能提高軟件的棋力。但軟件之間的對弈,情況就有爭議了。
  有人認為在同一臺電腦上進行軟件對弈時,雙方都要關閉同步思考,理由是這樣確保一方思考時將獨占全部電腦資源特別是CPU速度,不因對方軟件也在思考而分走了部分資源。【譯注:在Fritz內的引擎對戰時,默認是關閉同步思考的。你可以打開它,但正如Fritz的幫助文件所說,這樣意味著每個引擎只能用到CPU50%速度。如果是50%還好,這樣還算公平,但如果由于引擎程序設計等原因不是呢?】
  另一方面,有人認為如果關閉了軟件的同步思考,它簡直是部分殘廢,不符合軟件的本來面目,因為它在設計時程序作者通常是在一臺電腦上打開這個功能來測試的。
  例如Crafty有基于同步思考功能打開的時間管理,這樣它通過同步思考假如能準確預測對手的下一著棋,就為以后節省了時間。但如果同步思考被關閉,就沒這個好處了,結果導致Crafty在對局早段就花過多時間,后來陷于時間緊張。現在還不清楚關閉同步思考對有些引擎的傷害是不是也象對Crafty那樣更顯著,曾有人試驗過指出關閉同步思考對所有引擎的影響是一樣的,但另一方堅持己見。
  一方打開另一方卻關閉同步思考的情況,大概是最不可取的,因為對電腦資源特別是CPU速度的分享極不公平,軟件對弈時要注意。
  若使用兩臺電腦,那這個問題比較好解決,因為對弈軟件之間不互相干擾搶資源了,這時候一般應該打開它們的同步思考功能。
 
五、選擇賽制
 
  若只是兩個軟件,當然用對抗賽形式了;5-10個軟件的比賽,循環賽最常用,這時一般都挑選估計水平差不多的軟件,不過這樣決出的結果,你想得到實質性的結論更困難;若比賽的軟件很多,水平不一時,通常用瑞士制;淘汰制比較少用;當然你也可以采用“應眾賽”的形式,讓要測試的軟件依次挑戰已知水平的軟件,以檢驗它的棋力。【譯注:有沒有人使用擂臺制?在目前技術水平下,似乎不推薦這種賽制,因為軟件棋實際上很不穩定的。當然如果是娛樂那就隨意了。】
 
六、選擇對局時限
 
  這個任務不簡單。最起碼有些軟件是不支持部分特定時限設置的【譯注:比如現階段的Winboard就設不了多時限段】。有意見認為閃電戰的參考意義遠不如長時限對局,而且太短的時限對于很多軟件來說由于在時間管理上因處理不當,容易出現時間恐慌以致崩潰。【譯注:這主要是說軟件之間的比較。的確,有些軟件盡管本身棋力不凡,但在時間管理方面似乎設計不是很好,比管理較好的軟件更容易出現超時現象,但這主要在閃電戰中顯著,長對局時限則基本沒有影響。】
  相反意見則認為,下快棋能短時間內完成更多對局,而誰都知道下的對局越多,所得到的結果更有說服力。
  要注意的是,起碼有些引擎在不同時限下的水平不同,象yace引擎,它在()快棋中的表現優于標準時限下,而有些引擎則相反。另一要考慮的是CPU速度,在慢速電腦上的某時限設置對局,相當于在快速電腦上的更短時限對局。假如你有興趣搞超慢時限的對局,比如運算一天才走一步棋,讓軟件算得很深,那么可一瞥而猜測當今軟件在未來硬件上的水平表現。
 
七、選擇參賽軟件
 
  你面臨的選擇很多,而且情況多樣,因而沒有固定的,但我建議其中至少要有一個棋力比較明確的軟件,把它作為測試基準。
  還有,同一引擎同時包含不同版本的情況可能不太好,除非各版本之間區別很大,并且你就是要測試不同版本之間的差別。
  有些測試者堅持認為參賽引擎必須能夠識別50步自然限著、子力不足以殺棋、三次重復等和棋情況。有道理,否則它們就會在官和局面里還無聊地繼續走棋,徒浪費大量時間。
 
八、開局庫和開局學習
 
  軟件對弈中若開局庫選得不好,影響很大的。有人認為有些商業棋弈軟件的新版本改進,與其說是引擎加強了,還不如說是使用了更好的開局庫。看法是偏激了些,但我們絕不能否認開局庫的重要地位。很多引擎都有自己配套的開局庫,有些測試者覺得應該用原配的;另一方面,也常有測試者使用自制的開局庫。可想而知,不同的開局庫里面的內容或多或少會有不同。
  于是有一種叫“努恩測試”(Nunn's test)的軟件比賽形式,要求起始局面是各種默認設定好的局面,這樣避免不同開局庫的影響。但是我們知道,人們下棋時會選擇適合自己棋風的開局準備,故為不同引擎設計能使它發揮最大效力的開局庫也是可以理解的,開局庫應視之為軟件的完整組成部分。何況努恩測試也有它不完善的一面。
  至于很多引擎所具有的“開局學習”功能該不該打開,尤其是一方有此功能而另一方沒有的情況下?我個人意見認為應該打開,因為這個沒有對對方構成妨礙。
 
九、哈希表的內存分配
 
  通常情況下,如果你在同一臺電腦上讓引擎對戰引擎,兩個引擎所設置哈希表的內存占用總和為系統所有內存的一半。【譯注:指物理內存,不考慮虛擬內存】
  要指出這只是對低內存系統[比如低于256MB]的限制。因為Windows系統本身占用內存數目變動不大,因此如果你的內存夠大,就不必遵守這個“50%”規則。512MB內存的設為雙方占用總數達到420MB也沒有問題。
  要分配多少內存,對局的長短也有關系,這個前文也說了。太大的哈希表對于閃電戰幫助不大甚至反而不利;長對局時限才需要更大的哈希表。
  一般來說人們為了追求公平,在為對戰引擎雙方分配內存時是采用對半平分的做法,大家數目一樣。不過如果看過前面關于哈希表的文章,你應該也知道事情還不是那么簡單,還有些變數待定。【譯注:所以改用配置相同的兩臺電腦上進行,可避免不少困惑】
 
十、自動進行循環賽
 
  如果你使用Fritz(界面),它內建支持自動進行循環賽功能;如果你用Winboard,目前的Winboard沒有帶這項功能。不過,如果你只是讓兩個引擎之間進行一定局數的對抗,可以以命令方式啟動Winboard,加上 /mg 參數。【譯注:Winboard的命令行參數是Winboard另一個讓人覺得有趣的地方,可以實現不少單純圖形方式不方便實現或實現不了的操作,值得較熟練者去研究】
  非常感謝Peter Berger寄給我一個批處理文件,使用它可以在Winboard上自動進行引擎之間的循環賽,適合不熟悉批處理的讀者參考使用。【譯注:每個人擁有的程序和存放的環境肯定不一樣,所以該文件沒必要提供下載;想用的請到
http://www.aarontay.per.sg/Winboard/batch.html參考那個例子后,舉一反三修改而用。另外為簡便,可考慮用Arena或其它支持Winboard引擎而有賽程安排功能的界面,比如chesspartner來做】
  循環賽的賽程表,你可以自己編;如果不熟悉,看看這兩個工具是否有點幫助。
ftp://cap.connx.com/pub/tournament_software/roundrobin.exe
ftp://cap.connx.com/pub/tournament_software/tourney.exe
 
十一、程序崩潰的處理
 
  比賽過程中或許有軟件無故崩潰的事情發生,你要有決斷,是該判結果,或者重下?比較棘手的情況是一方本來就要勝了,卻在這時崩潰。
  有人堅持認為如果一方明顯勝勢的,崩潰了也應判它勝。然而,很多人(可能大多數?)不同意這點。就如人類比賽一樣,連棋都不走了自然應算他輸;另外假如軟件崩潰了也可判贏,那對引擎的作者寫作引擎時也可能產生不良導向。
 
十二、比賽過程中的更新和修補錯漏的處理
 
  這在CCC網站(Computer Chess Club)曾有很大爭論,那就是比賽還進行時是否可以更新軟件。【譯注:這里的“更新”更多不是指明顯升級到新的版本,它可能只是局部調整,或者修改一些BUG
  一方認為如果是不同引擎參加的比賽,這樣做等同于成績無效,相當于人類比賽過程中換人。另外如果允許這樣做,那么就有可能出現面對特定引擎而有針對性地選擇不同“克星”版本的情況。
  但是,在有些正式的電腦國際象棋賽中,比如WCCC聯賽,還真允許這樣做的!引擎作者可以根據不同對手選擇不同開局、調整參數等,希望在面對不同對手時有最佳應對。人類棋手也是這樣,會根據不同對手調整不同戰略。
  即使這種更新沒有提升軟件的棋力,而只不過修補了它的一些程序設計小錯漏以防止崩潰,有些人還是認為不應該,因為他們認為錯漏是程序的一部分,應該一并考慮。但這個看法再次遇到相反意見,他們認為如果一個低級的程序錯漏導致軟件一而再地崩潰【并且因為這而判負】,那還有什么用?
  這個問題大概沒有絕對答案的,取決于你的意圖。不管你采用哪方意見,最好是事前就確定下來并且不帶偏見地執行。
 
十三、計算表現等級分和公布結果
 
  如果根據比賽結果計算等級分,可以用這個工具Elostat【計算等級分的工具還有其它可選擇】http://www.amateurschach.de/schach/download/elostat/elostat_11b.zip
  至于公布結果,倘若你只是個人測試或娛樂,那公不公布隨你高興的。倘若想和別人分享交流,可以公布在網上,影響較大的有 Winboard Forum
(http://www.f11.parsimony.net/forum16635/)Computer Chess Club [CCC]
(http://www.icdchess.com/ccc.html)【譯注:當然,中文讀者公布到中文國際象棋論壇也可以,只要有同好者就行】
  按照慣例,公布軟件比賽結果要提供以下信息:
1) 使用的CPU速度;
2) 同步思考有否打開;
3) 對局時限;
4) 每個引擎分配的內存數量;
5) 是否使用了殘局庫,使用了哪種級別殘局庫。【譯注:是的,原文沒有談到是否使用殘局庫的問題】
  其它的,你可自行決定是否加入必要評論和意見,指出你認為的優點和缺點,包括程序設計上的缺陷,尤其是在幫忙測試軟件時。至于對局本身,倒不一定要全部公布于論壇,除非你認為很特別的那些。
 
  出處:Aaron's Winboard and Chess Engines FAQ
  譯者:michael
  類型:略有刪節
  • 上一篇 人機大戰:魅力無窮
  • 下一篇 先進國際象棋
  • 返 回 象棋百科全書——電腦象棋
  • www.ejnwjd.tw
    快乐双彩今晚开奖结果