專利名稱:一種圍棋人機對弈系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種圍棋人機對弈軟件技術(shù)領(lǐng)域,具體涉及到計算機和人類對 弈來下圍棋的系統(tǒng)。
背景技術(shù):
隨著人類幾十年來的不斷努力,計算機已經(jīng)在眾多棋類中擊敗人類頂尖高 手,但由于圍棋本身復(fù)雜度極高,變化無窮,戰(zhàn)術(shù)運用極其靈活,而且下棋多 靠模式識別的特點,使得圍棋變成了計算機科學(xué)的"阿喀琉斯之踵"。
圍棋是一種源于中國的智力游戲,先介紹一下圍棋的基礎(chǔ)知識
棋子的氣,是指 一個棋子在棋盤上,與它直線緊鄰的空點是這個棋子的 "氣"。棋子直線緊鄰的點上,如果有同色棋子存在,則它們便相互連接成一 個不可分割的整體。它們的氣也應(yīng)一并計算。棋子直線緊鄰的點上,如果有 異色棋子存在,這口氣就不復(fù)存在。
提子,是指如一塊棋所有的氣均被對方占據(jù),便呈無氣狀態(tài),將被提掉, 稱為"提子"。若下子后,雙方棋子都呈無氣狀態(tài),應(yīng)只提取對方無氣之子。
禁著點,是指棋盤上的任何一子,如某方下子后,該子立即呈無氣狀態(tài), 同時又不能提取對方棋子,這個點叫做"禁著點",禁止落子。
禁止全局同型,是指禁止該局棋曾出現(xiàn)的局面再次出現(xiàn)。
終局勝負(fù)判斷,是指在終局時,根據(jù)中國規(guī)則,先將死子撿掉,再把目和
子數(shù)加起來,看看是否達到184^(185)個子(黑棋應(yīng)贏的目數(shù))或176^(177)個
子(白棋應(yīng)贏的目數(shù)),并決定勝負(fù)。
圍棋為什么這么難呢?圍棋是棋類中最復(fù)雜的一項(參見文獻施遙《人 工智能在圍棋程序中的應(yīng)用》復(fù)旦大學(xué)附屬中學(xué)),圍棋獨特的復(fù)雜性即
1. 圍棋的模糊性棋型過多致使計算機無法識別出準(zhǔn)確招法;
2. 圍棋的反復(fù)性僅圍棋中存在提子和打劫這兩種極其復(fù)雜的情況,人 類都無法很準(zhǔn)確地指出正著所在,在計算機程序上的實現(xiàn)則更為復(fù)雜而繁瑣;
3. 圍棋的靈活性圍棋中存在大量高深的棋理和靈活戰(zhàn)術(shù),計算機無法 "理解的。而且圍棋中戰(zhàn)略的目的性沒有其他棋類明顯,很難對每個子的價值進行評估。
人類圍棋高手下棋時的"感覺"也是目前計算機無法"領(lǐng)會"的。 基于上述三種獨特的復(fù)雜性,圍棋中很多著手無法被抽象成機械化的算 法?,F(xiàn)有的圍棋人機對弈軟件只能采用近似的數(shù)學(xué)方法或模擬方法,致使圍棋 人機對弈軟件上的算法無法發(fā)揮出在其他棋類人機對弈軟件上的效果。
現(xiàn)有的人機對弈軟件的棋力最高水平不過是業(yè)余2段,常用圍棋人機對弈 軟件日本的Hiroshi編制的Aya,是亞洲最強的人機對弈軟件,其功能較全, 但定式下法混亂,落子速度慢。
蒙特卡羅算法(以下簡稱MC算法)自06年開始被各個軟件所使用,它 使軟件的戰(zhàn)斗力達到了一個新的高度。但MC算法基于概率論,存在很大的不 確定性,而圍棋是錙銖必較的,純基于MC算法的程序雖然可以大量模擬對局, 但是程序會漫天落子,毫無章法。
上述軟件,存在由于算法的缺陷,存在落子速度慢的缺陷。
發(fā)明內(nèi)容
為了解決現(xiàn)有人機對穽軟件中存在軟件與軟件、人類與軟件之間交流不多 以及落子速度慢的缺陷,本發(fā)明提出了一種圍棋人機對弈系統(tǒng)。
圍棋人機對弈系統(tǒng),由系統(tǒng)服務(wù)器Server、 AI平臺和多個對弈用戶終端 Client組成,所述系統(tǒng)服務(wù)器Server、 AI平臺和對弈用戶終端Client之間通過 網(wǎng)絡(luò)系統(tǒng)連接,并采用圍棋對弈協(xié)議SGCP協(xié)議進行通信,其中-
系統(tǒng)服務(wù)器Server,作為游戲大廳服務(wù)器,用于提供聯(lián)機對弈、數(shù)據(jù)交換 以及對弈規(guī)則處理;
AI平臺,是人機對弈的引擎,用于獲取對弈用戶終端Client的棋盤信息, 并根據(jù)所述棋盤信息控制人機對弈的過程,包括棋局分析、戰(zhàn)術(shù)的選擇、落子 點的確定,還用于發(fā)送所述落子點信息給^f弈用戶終端Client;
對弈用戶終端Client,用于提供圍棋對弈界面,還用于引導(dǎo)用戶進入人機 對弈進程;還用于將棋盤數(shù)據(jù)發(fā)送給AI平臺,還用于根據(jù)AI平臺發(fā)送的落子 點信息更新棋盤數(shù)據(jù)和圍棋對弈界面;
所述圍棋對弈協(xié)議SGCP,是基于TCP/IP協(xié)議的一種通信協(xié)議,它在已 建立的TCP連接中進行數(shù)據(jù)通信,它以換行符[CrLf]分割數(shù)據(jù)包中的每條指 令,所述指令由命令號和參數(shù)構(gòu)成,命令號與參數(shù)之間使用一個空格[Space]分隔;
AI平臺包括多用戶管理器、常數(shù)管理器、參數(shù)編輯器、網(wǎng)絡(luò)通信控制器、
戰(zhàn)術(shù)與算法協(xié)調(diào)器,其中
多用戶管理器,用于保存并控制多個對弈用戶終端Client的檔案,并對 每個對弈用戶終端Client的檔案獨立設(shè)置、并分配單獨的存儲空間,所述存儲 空間用于存儲對弈用戶終端Client的設(shè)置參數(shù)和對弈過程數(shù)據(jù);
常數(shù)管理器,用于存取AI平臺運行時需要的常數(shù),還用于根據(jù)算法運行 需要調(diào)整相關(guān)常數(shù);
參數(shù)編輯器,用于存儲戰(zhàn)術(shù)與算法協(xié)調(diào)器中所有算法模塊相關(guān)的參數(shù)和評 分權(quán)重參數(shù);所述評分權(quán)重參數(shù)是指確定所用到的各算法的加分比例;
網(wǎng)絡(luò)通信控制器,用于控制AI平臺與系統(tǒng)網(wǎng)關(guān)、每個對弈用戶終端Client 的數(shù)據(jù)通信,所述通信遵循圍棋對弈協(xié)議SGCP協(xié)議;
戰(zhàn)術(shù)與算法協(xié)調(diào)器,用于存儲圍棋的戰(zhàn)術(shù)規(guī)則和算法模塊,還用于統(tǒng)籌和 調(diào)用算法模塊和戰(zhàn)術(shù)規(guī)則,進而確定落子點;還用于在對局過程中,調(diào)整、更 新參數(shù)編輯器中的算法參數(shù);還用于判斷終局的勝負(fù)。
所述戰(zhàn)術(shù)與算法協(xié)調(diào)器,可以采用多臺電腦共同分擔(dān)計算任務(wù)的分布式計 算的方法獲得落子點;還可以采用后臺計算的方法在對方思考的時間段內(nèi)對棋 局進行分析,并根據(jù)分析預(yù)測對方的落子點。
本發(fā)明的圍棋人機對弈系統(tǒng)中的戰(zhàn)術(shù)與算法協(xié)調(diào)器采用分布式計算的方 法獲得己方落子點,有效的提高運算能力,縮短引擎思考時間;所述戰(zhàn)術(shù)與算 法協(xié)調(diào)器還采用后臺的計算方法,即在對方思考的時間段內(nèi)對棋局進行分析, 模擬人類下棋的過程,增加了引擎的實際思考時間,進一步提高了計算速度, 進而提高了落子速度。
具體實施例方式
本實施方式的圍棋人機對弈系統(tǒng),由系統(tǒng)服務(wù)器Server、 AI平臺和多個 對弈用戶終端Client組成,所述系統(tǒng)服務(wù)器Server、 AI平臺和對弈用戶終端 Client之間通過網(wǎng)絡(luò)系統(tǒng)連接,并采用圍棋對弈協(xié)議SGCP協(xié)議進行通信,其 中
系統(tǒng)服務(wù)器Server,作為游戲大廳服務(wù)器,用于提供聯(lián)機對弈、數(shù)據(jù)交換 以及對弈規(guī)則處理;AI平臺,是人機對穽的引擎,用于獲取對穽用戶終端Client的棋盤信息, 并根據(jù)所述棋盤信息控制人機對弈的過程,包括棋局分析、戰(zhàn)術(shù)的選擇、落子 點的確定,還用于發(fā)送所述落子點信息給對弈用戶終端Client;
對弈用戶終端Client,用于提供圍棋對弈界面,還用于引導(dǎo)用戶進入人機 對弈進程;還用于將棋盤數(shù)據(jù)發(fā)送給AI平臺,還用于根據(jù)AI平臺發(fā)送的落子
點信息更新棋盤數(shù)據(jù)和圍棋對弈界面;
所述圍棋對弈協(xié)議SGCP,是基于TCP/IP協(xié)議的一種通信協(xié)議,它在已 建立的TCP連接中進行數(shù)據(jù)通信,它以換行符[CrLf]分割數(shù)據(jù)包中的每條指 令,所述指令由命令號和參數(shù)構(gòu)成,命令號與參數(shù)之間使用一個空格[Space] 分隔;
AI平臺包括多用戶管理器、常數(shù)管理器、參數(shù)編輯器、網(wǎng)絡(luò)通信控制器、 戰(zhàn)術(shù)與算法協(xié)調(diào)器,其中
多用戶管理器,用于保存并控制多個對弈用戶終端Client的檔案,并對 每個對弈用戶終端Client的檔案獨立設(shè)置、并分配單獨的存儲空間,所述存儲 空間用于存儲對弈用戶終端Client的設(shè)置參數(shù)和對弈過程數(shù)據(jù);
常數(shù)管理器,用于存取AI平臺運行時需要的常數(shù),還用于根據(jù)算法運行 需要調(diào)整相關(guān)常數(shù);
參數(shù)編輯器,用于存儲戰(zhàn)術(shù)與算法協(xié)調(diào)器中所有算法模塊相關(guān)的參數(shù)和評 分權(quán)重參數(shù);所述評分權(quán)重參數(shù)是指確定所用到的各算法的加分比例;
網(wǎng)絡(luò)通信控制器,用于控制AI平臺與系統(tǒng)網(wǎng)關(guān)、每個對弈用戶終端Client 的數(shù)據(jù)通信,所述通信遵循圍棋對弈協(xié)議SGCP協(xié)議;
戰(zhàn)術(shù)與算法協(xié)調(diào)器,用于存儲圍棋的戰(zhàn)術(shù)規(guī)則和算法模塊,還用于統(tǒng)籌和 調(diào)用算法模塊和戰(zhàn)術(shù)規(guī)則,進而確定落子點;還用于在對局過程中,調(diào)整、更 新參數(shù)編輯器中的算法參數(shù);還用于判斷終局的勝負(fù)。
所述戰(zhàn)術(shù)與算法協(xié)調(diào)器,是AI平臺進行落子生成的核心模塊。它所包含 的算法模塊包含有多個現(xiàn)有算法,所述現(xiàn)有算法包括括靜態(tài)分析模塊、搜索 模塊、MC算法模塊等現(xiàn)有的圍棋相關(guān)算法模塊。
所述常數(shù)管理器,能夠?qū)崿F(xiàn)算法的微調(diào),如調(diào)整MC算法模擬的對局?jǐn)?shù)目, 使算法更加靈活。
引擎進入對弈狀態(tài)前,可以在所述參數(shù)編輯器中調(diào)整相關(guān)參數(shù),在對局進程中,引擎可以根據(jù)棋局進程和戰(zhàn)術(shù)要求調(diào)整參數(shù)編輯器中的參數(shù),以提高對 棋局的把握能力。
所述對穽用戶終端Client,還用于設(shè)置本地的算法常數(shù),所述算法常數(shù)存 儲于多用戶管理器中的對穽用戶終端Client的檔案中。這樣,用戶可以在對 局前、以及對局過程中,隨時通過調(diào)整算法常數(shù)的辦法來改變計算機的行棋方 法。
所述戰(zhàn)術(shù)與算法協(xié)調(diào)器采用現(xiàn)有的各種圍棋落子點的選擇方法獲得落子占。
"、、o
所述戰(zhàn)術(shù)與算法協(xié)調(diào)器,采用多臺電腦共同分擔(dān)計算任務(wù)分布式計算的方 法,具體過程為
步驟一在每個對弈用戶終端Client的電腦上設(shè)置計算端程序;
步驟二分別對每個計算端程序進行性能測試,并獲得每個對弈用戶終 端Client的電腦的計算性能,并選取計算性能位于前k位的多臺對弈用戶終端 Client的電腦作為分布式計算的終端;
步驟三根據(jù)棋盤數(shù)據(jù),和所有分布式計算的終端的計算能力之和算出 所期望的計算時間,為蒙特卡羅算法分配模擬次數(shù),以各分布式計算的終端的 性能為權(quán)值,按照能者多勞的原則進行加權(quán)分配計算任務(wù);
步驟四AI平臺等待各分布式計算終端反饋的計算結(jié)果,并預(yù)算超時時 間,將超時未完成的運算任務(wù)在主機進行處理。
所述步驟四中,在接收到第一臺參與分布式運算的終端的電腦返回的計算 結(jié)果之后,啟動計時器開始計時,在設(shè)定時間內(nèi),接收其他參與分布式運算的 終端的電腦返回的計算結(jié)果,當(dāng)計時超過所述設(shè)定時間時,強制將其他所有參 與分布式計算的終端的電腦返回運算結(jié)果,對于未完成的計算量,由主機負(fù)責(zé) 計算,或者由主機再次分配給計算性能位于前1-5位的參與分布式運算的終端 的電腦進行計算,并將計算結(jié)果返回主機;
所述k為大于l的整數(shù)。
所述主機是指AI平臺所在的電腦。
在所述步驟三中,根據(jù)算法類型來分配計算任務(wù)。
當(dāng)參與分布式計算的終端的電腦數(shù)量較多,達到上百臺時,AI平臺所在 的電腦負(fù)擔(dān)過重,可以選擇計算能力位于前i位的多臺參與分布式計算的終端的電腦作為子主機,來完成步驟三和步驟四的工作,然后,所有子主機將所有
計算結(jié)果返給主機。所述i為大于10的整數(shù)。
分布式計算可以解決很大一部分的計算力不足的問題。 對計算端程序的性能測試方法,統(tǒng)計參與對弈的所有用戶終端Client進行
5億次l+l運算所需時間,然后根據(jù)所述時間對所有參與對弈的用戶終端Client
的電腦進行排序,進而獲得所有參與對弈的用戶終端Client的電腦的計算能力。
采用分布式計算的方式,能夠有效的提高運算能力,縮短引擎思考時間。 所述戰(zhàn)術(shù)與算法協(xié)調(diào)器,還采用后臺計算的方法,具體為 在對方思考的時間段內(nèi),將棋盤均勻拆分成多個局部,對每個局部進行模 擬、局部分析;
對當(dāng)前局面,通過靜態(tài)分析預(yù)測對方落子,針對對方可能的幾個落子點, 進行預(yù)先落子點的計算。
所述預(yù)測對方落子的方法,可以采用確定己方圍棋落子點的選擇方法預(yù)測 對方的落子點。
現(xiàn)有的人機對弈軟件,都只在輪到己方落子時才開始思考,而本發(fā)明在任 何時候都不會停止自己思考的腳步,模擬人的思維,在對方思考時,本發(fā)明的 系統(tǒng)仍在思考已方棋的下一個落子點的選擇,增加了引擎的實際思考時間。加 入后臺計算功能的人機對弈軟件,比現(xiàn)有人機對弈軟件的確定落子的時間更 短。
所述戰(zhàn)術(shù)與算法協(xié)調(diào)器,同時采用上述分布式計算的方法和后臺計算的方 法,能夠充分利用所有參與圍棋人機對弈系統(tǒng)的用戶終端的計算機的資源,最 大可能的縮短運算時間、提高計算效率,縮短確定落子的時間。
所述戰(zhàn)術(shù)與算法協(xié)調(diào)器判斷終局的勝負(fù)的方法為
在對局結(jié)束時,以點目結(jié)果為勝負(fù)判定標(biāo)準(zhǔn),點目方法如下對棋盤每個 點進行判斷,如果該點為非空點時,則該點的歸屬者目數(shù)+h如果該點為空點 時,與之相鄰的非空點全部為白子,則白方目數(shù)+1,全部為黑子,則黑方目數(shù) +1,若有黑有白,則雙方+0.5,其他情況則不加;分?jǐn)?shù)多的一方為勝者。
所述對局結(jié)束,是指雙方都停著的時候。
本發(fā)明中所述的圍棋對弈協(xié)議SGCP中,系統(tǒng)服務(wù)器接收到的有效101登錄到SkyGo Server網(wǎng)關(guān),參數(shù)為選用的昵稱 201向網(wǎng)關(guān)申請等待對手,參數(shù)忽略 202從網(wǎng)關(guān)獲取當(dāng)前正在等待對手的玩家列表,參數(shù)忽略 203向網(wǎng)關(guān)申請與指定對手對弈,參數(shù)為對手昵稱 204獲取網(wǎng)關(guān)統(tǒng)計信息(在線人數(shù)等),參數(shù)忽略 205撤銷等待對手申請,參數(shù)忽略 301獲取對局信息,參數(shù)為對局唯一標(biāo)識符(Gtoken) 302退出對局,參數(shù)為對局唯一標(biāo)志符(Gtoken) 303聊天發(fā)言,參數(shù)為發(fā)言內(nèi)容 311對局準(zhǔn)備就緒,參數(shù)忽略 321申請落子,參數(shù)為坐標(biāo) 327申請點目,參數(shù)忽略其中,中括號中的為反饋指令。 對局建立流程為
1、 確保網(wǎng)關(guān)狀態(tài)正常,啟動用戶端,輸入昵稱和網(wǎng)關(guān)信息,進行連接 [確定昵稱唯一,如不唯一則添加下劃線以示區(qū)別]
2、 等待對手或向其他玩家申請對局
3、 獲取對局信息
4、 點擊"開始"表示準(zhǔn)備就緒 [等待雙方準(zhǔn)備就緒后開始對局]
5、 進行對局
6、 雙方點擊"放棄"以示結(jié)束 [此時對局結(jié)束,可再次點擊開始發(fā)起新局]
其中,中括號中的為網(wǎng)關(guān)內(nèi)部的處理流程。
本實施方式的AI平臺還包括記憶庫管理器和自學(xué)習(xí)模塊,所述記憶庫管 理器,用于對AI平臺運行中產(chǎn)生的棋局形勢進行保存和重現(xiàn),還用于存儲自 學(xué)習(xí)模塊的分析結(jié)果,還用于將所述自學(xué)習(xí)模塊的分析結(jié)果為戰(zhàn)術(shù)與算法協(xié)調(diào) 器提供棋局參考;所述自學(xué)習(xí)模塊,用于將記憶庫管理器中存儲的棋局中重復(fù) 出現(xiàn)的棋局進行分析,并將所述棋局和分析結(jié)果存儲到記憶庫管理器中。
所述記憶庫管理器能夠保存和再現(xiàn)一些棋型,是AI平臺的自學(xué)習(xí)模塊的 基礎(chǔ)支持。
所述自學(xué)習(xí)模塊是讓程序主動學(xué)習(xí)定式(參見文獻谷蓉,劉學(xué)民,朱 仲濤,周杰《一種圍棋定式的機器學(xué)習(xí)方法》清華大學(xué)自動系)和手筋等圍 棋知識。
權(quán)利要求
1、一種圍棋人機對弈系統(tǒng),其特征在于它由系統(tǒng)服務(wù)器Server、AI平臺和多個對弈用戶終端Client組成,所述系統(tǒng)服務(wù)器Server、AI平臺和對弈用戶終端Client之間通過網(wǎng)絡(luò)系統(tǒng)連接,并采用圍棋對弈協(xié)議SGCP協(xié)議進行通信,其中系統(tǒng)服務(wù)器Server,作為游戲大廳服務(wù)器,用于提供聯(lián)機對弈、數(shù)據(jù)交換以及對弈規(guī)則處理;AI平臺,是人機對弈的引擎,用于獲取對弈用戶終端Client的棋盤信息,并根據(jù)所述棋盤信息控制人機對弈的過程,包括棋局分析、戰(zhàn)術(shù)的選擇、落子點的確定,還用于發(fā)送所述落子點信息給對弈用戶終端Client;對弈用戶終端Client,用于提供圍棋對弈界面,還用于引導(dǎo)用戶進入人機對弈進程;還用于將棋盤數(shù)據(jù)發(fā)送給AI平臺,還用于根據(jù)AI平臺發(fā)送的落子點信息更新棋盤數(shù)據(jù)和圍棋對弈界面;所述圍棋對弈協(xié)議SGCP,是基于TCP/IP協(xié)議的一種通信協(xié)議,它在已建立的TCP連接中進行數(shù)據(jù)通信,它以換行符[CrLf]分割數(shù)據(jù)包中的每條指令,所述指令由命令號和參數(shù)構(gòu)成,命令號與參數(shù)之間使用一個空格[Space]分隔;所述AI平臺包括多用戶管理器、參數(shù)編輯器、網(wǎng)絡(luò)通信控制器、戰(zhàn)術(shù)與算法協(xié)調(diào)器,其中多用戶管理器,用于保存并控制多個對弈用戶終端Client的檔案,并對每個對弈用戶終端Client的檔案獨立設(shè)置、并分配單獨的存儲空間,所述存儲空間用于存儲對弈用戶終端Client的設(shè)置的戰(zhàn)術(shù)參數(shù)和對弈過程數(shù)據(jù);參數(shù)編輯器,存取AI平臺運行時需要的常數(shù),根據(jù)算法運行需要調(diào)整相關(guān)常數(shù);還用于存儲戰(zhàn)術(shù)與算法協(xié)調(diào)器中所有算法模塊相關(guān)的參數(shù)和評分權(quán)重參數(shù);所述評分權(quán)重參數(shù)是指確定所用到的各算法的加分比例;網(wǎng)絡(luò)通信控制器,用于控制AI平臺與系統(tǒng)網(wǎng)關(guān)、每個對弈用戶終端Client的數(shù)據(jù)通信,所述通信遵循圍棋對弈協(xié)議SGCP協(xié)議;戰(zhàn)術(shù)與算法協(xié)調(diào)器,用于存儲圍棋的戰(zhàn)術(shù)規(guī)則和算法模塊,還用于統(tǒng)籌和調(diào)用算法模塊和戰(zhàn)術(shù)規(guī)則,進而確定落子點;還用于在對局過程中,調(diào)整、更新參數(shù)編輯器中的算法參數(shù);還用于判斷終局的勝負(fù)。
2、 根據(jù)權(quán)利要求1所述的圍棋人機對弈系統(tǒng),其特征在于,所述對弈用戶終端Client,還用于設(shè)置本地的算法常數(shù),所述算法常數(shù)存儲于多用戶管 理器中的對弈用戶終端Client的檔案中。
3、 根據(jù)權(quán)利要求1所述的圍棋人機對穽系統(tǒng),其特征在于,所述戰(zhàn)術(shù) 與算法協(xié)調(diào)器,采用多臺電腦共同分擔(dān)計算任務(wù)的分布式計算的方法,具體過 程為步驟一在每個對弈用戶終端Client的電腦上設(shè)置計算端程序;步驟二分別對每個計算端程序進行性能測試,并獲得每個對弈用戶終 端Client的電腦的計算性能,并選取計算性能位于前k位的多臺對弈用戶終端 Client的電腦作為分布式計算的終端;步驟三根據(jù)棋盤數(shù)據(jù),和所有分布式計算的終端的計算能力之和算出 所期望的計算時間,以各分布式計算的終端的性能為權(quán)值,按照能者多勞的原 則進行加權(quán)分配計算任務(wù);步驟四AI平臺等待各分布式計算終端反饋的計算結(jié)果,并預(yù)算超時時 間,將超時未完成的運算任務(wù)在主機進行處理。所述步驟四,可以采用下述方法實現(xiàn)AI平臺接到第一臺參與分布式運 算的終端的電腦返回的計算結(jié)果之后,繼續(xù)等待設(shè)定時間,如果在所述設(shè)定時 間內(nèi),接收他參與分布式運算的終端的電腦也返回計算結(jié)果,超過所述設(shè)定時 間后,強制將其他所有參與分布式計算的終端的電腦返回運算結(jié)果,對于未完 成的計算量,由主機負(fù)責(zé)計算;或者由主機再次分配給計算性能位于前l(fā)-5位 的對弈用戶終端Client的電腦進行計算,所述計算結(jié)果返回主機;所述k為大于1的整數(shù);所述主機是指AI平臺所在的電腦。
4、 根據(jù)權(quán)利要求3所述的圍棋人機對弈系統(tǒng),其特征在于,在步驟二 中,分布式計算的終端的計算能力的測試方法為,統(tǒng)計參與對穽的所有用戶終 端Client進行5億次1+1運算所需時間,然后根據(jù)所述時間對所有參與對弈的 用戶終端Client的電腦進行排序,進而獲得所有參與對弈的用戶終端Client 的電腦的計算能力。
5、 根據(jù)權(quán)利要求3所述的圍棋人機對弈系統(tǒng),其特征在于,所述步驟 四中,在接收到第一臺參與分布式運算的終端的電腦返回的計算結(jié)果之后,啟 動計時器開始計時,在設(shè)定時間內(nèi),接收其他參與分布式運算的終端的電腦返 回的計算結(jié)果,當(dāng)計時超過所述設(shè)定時間時,強制將其他所有參與分布式計算的終端的電腦返回運算結(jié)果,對于未完成的計算量,由主機負(fù)責(zé)計算,或者由主機再次分配給計算性能位于前l(fā)-5位的參與分布式運算的終端的電腦進行計 算,并將計算結(jié)果返回主機。
6、 根據(jù)權(quán)利要求5所述的圍棋人機對弈系統(tǒng),其特征在于,當(dāng)參與分 布式計算的終端的電腦數(shù)量超過一百臺時,選擇計算能力位于前i位的多臺參 與分布式計算的終端的電腦作為子主機,來完成步驟三和步驟四的工作,然后, 所有子主機將所有計算結(jié)果返給主機,所述i為大于10的整數(shù)。
7、 根據(jù)權(quán)利要求1或3所述的圍棋人機對弈系統(tǒng),其特征在于,所述 戰(zhàn)術(shù)與算法協(xié)調(diào)器,采用后臺計算的方法,具體為在對方思考的時間段內(nèi),將棋盤均勻拆分成多個局部,對每個局部進行模 擬、局部分析;對當(dāng)前局面,通過靜態(tài)分析預(yù)測對方落子,針對對方可能的幾個落子點, 進行預(yù)先落子點的計算。
8、 根據(jù)權(quán)利要求7所述的圍棋人機對弈系統(tǒng),其特征在于,所述預(yù)測 對方落子的方法,采用確定己方圍棋落子點的選擇方法預(yù)測對方的落子點。
9、 根據(jù)權(quán)利要求1所述的圍棋人機對穽系統(tǒng),其特征在于,所述戰(zhàn)術(shù) 與算法協(xié)調(diào)器判斷終局的勝負(fù)的方法為在對局結(jié)束時,以點目結(jié)果為勝負(fù)判定標(biāo)準(zhǔn),點目方法如下對棋盤每個 點進行判斷,如果該點為非空點時,則該點的歸屬者目數(shù)+h如果該點為空點 時,與之相鄰的非空點全部為白子,則白方目數(shù)+1,全部為黑子,則黑方目數(shù) +1,若有黑有白,則雙方+0.5,其他情況則不加;分?jǐn)?shù)多的一方為勝者。
10、 根據(jù)權(quán)利要求1所述的圍棋人機對弈系統(tǒng),其特征在于,所述AI 平臺還包括記憶庫管理器和自學(xué)習(xí)模塊,所述記憶庫管理器,用于對AI平臺 運行中產(chǎn)生的棋局形勢進行保存和重現(xiàn),還用于存儲自學(xué)習(xí)模塊的分析結(jié)果, 還用于將所述自學(xué)習(xí)模塊的分析結(jié)果為戰(zhàn)術(shù)與算法協(xié)調(diào)器提供棋局參考;所述 自學(xué)習(xí)模塊,用于將記憶庫管理器中存儲的棋局中重復(fù)出現(xiàn)的棋局進行分析, 并將所述棋局和分析結(jié)果存儲到記憶庫管理器中。
全文摘要
一種圍棋人機對弈系統(tǒng),涉及一種人機對弈軟件技術(shù)。它解決了現(xiàn)有人機對弈軟件存在的落子速度慢的缺陷。本發(fā)明的人機對弈系統(tǒng)由系統(tǒng)服務(wù)器Server、AI平臺和多個對弈用戶終端Client組成,其中戰(zhàn)術(shù)與算法協(xié)調(diào)器用于存儲圍棋的戰(zhàn)術(shù)規(guī)則和算法模塊,還用于統(tǒng)籌和調(diào)用算法模塊和戰(zhàn)術(shù)規(guī)則,進而確定落子點;還用于在對局過程中,調(diào)整、更新參數(shù)編輯器中的算法參數(shù);還用于判斷終局的勝負(fù)。所述戰(zhàn)術(shù)與算法協(xié)調(diào)器采用分布式計算的方式對棋局進行分析獲得落子點,有效提高了運算能力,縮短引擎思考時間;所述戰(zhàn)術(shù)與算法協(xié)調(diào)器還可以采用后臺計算方法,即在對方思考的時間段內(nèi)對棋局進行分析,模擬人類下棋的過程,增加了引擎的實際思考時間,進一步提高了計算速度。
文檔編號G06F19/00GK101539968SQ20091007189
公開日2009年9月23日 申請日期2009年4月27日 優(yōu)先權(quán)日2009年4月27日
發(fā)明者何天一, 姚斯宇 申請人:姚斯宇;何天一