新聞中心

EEPW首頁 > 電源與新能源 > 設計應用 > 淺談博弈電路系統(tǒng)設計

淺談博弈電路系統(tǒng)設計

作者: 時間:2013-01-28 來源:網(wǎng)絡 收藏
機器博弈是人工智能學科的一個重要研究方向,被稱為人工智能領域的“果蠅”,是檢驗人工智能發(fā)展水平的一個重要方面。國內(nèi)外研究專用博弈集成電路系統(tǒng)的成果還較少,基本上都是采用高性能或多CPU的計算機來實現(xiàn),使系統(tǒng)像大型服務器那樣龐大。因此,本文以牛角棋為載體,進行機器博弈算法硬件實現(xiàn)技術的研究,使用片上可編程系統(tǒng)(System on a Programmable Chip,SoPC)開發(fā)了完整的牛角棋的雙人博弈系統(tǒng)。進而為開發(fā)體積小、實時性能高的機器博弈專用硬件板卡系統(tǒng)進行探索。

1 牛角棋博弈軟件設計

1.1 系統(tǒng)總體結(jié)構

根據(jù)牛角棋博弈系統(tǒng)的功能需求分析,將系統(tǒng)進行模塊劃分,系統(tǒng)總體功能結(jié)構如圖1所示。

1.2 招法生成

招法生成模塊提供了在局面中選出所有可行招法的功能,從而為正確地展開博弈樹提供了支持。

1.2.1 牛角棋的數(shù)字化描述

為了讓計算機下棋,首先就要將所有的棋局元素,包括棋盤、棋子、棋局、著法、規(guī)則、知識等通過數(shù)字化(編碼)成為數(shù)據(jù)元素,而各種數(shù)據(jù)元素再以特定的關系構成相應的數(shù)據(jù)結(jié)構進行存儲和處理。

牛角棋的棋盤和棋子編碼如圖2所示。12個棋位編碼為0~11,紅子用0表示,兩黑子分別用1和2表示。這樣初始棋局便可有兩種形式的表示:

(1)棋位向量(0,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2);

(2)棋子向量(11,10,0)。

1.2.2 招法的形式化描述

用表示紅藍3枚棋子在第n步時的棋位,第n步時刻的棋位向量的形式化描述為狀態(tài)Sn:

式中qn+1為第n+1時刻的招法。

由于紅子走子方向不受限制,可上可下,可橫走,只能走向空位,不得跳躍。所以紅方棋子可以表述為:

藍方的棋子走棋方向受到限制,只能上不能下,可以橫走,只能走向空位,不得跳躍。故藍方的兩枚棋子可以描述為:

1.2.3 預置表招法生成

預置表可看作一個可快速檢索到滿足某些簡單條件的、預先生成的招法列表的知識庫。

對照圖2棋盤的編碼方式,參照牛角棋的規(guī)則,一種預置招法表的設計方案如圖3所示。

preTable是三維的預置表,其中的兩個高維度分別代表了2個條件:

(1)棋子的顏色是什么;

(2)棋子處在什么位置上。

在明確上述兩個條件的具體值之后,就可以獲得全部可行著法的列表。由于預置表是頻繁訪問的數(shù)據(jù),所以,預置表占用的空間不應太大,而且執(zhí)行時應以能夠載入內(nèi)存為宜,所以針對具體棋類還須因地制宜地采用一些技巧。

1.3 搜索控制

在解決機器博弈問題中,搜索是機器博弈的核心,他控制著系統(tǒng)各個模塊的調(diào)用,他效率的高低直接影響搜索的速度,是決定整個博弈系統(tǒng)棋力高低的首要因素。

首先,他調(diào)用招法生成模塊,對當前局面產(chǎn)生所有可能的招法并將產(chǎn)生的招法保存到招法列表中。然后,判斷當前局面是否有獲勝方,如果有獲勝方返回當前局面的估值;否則再判斷是否是葉子節(jié)點,如果是葉子節(jié)點,調(diào)用估值模塊對當前局面進行估值并將其返回;如果不是葉子節(jié)點則按照當前招法走一步棋并且調(diào)用自身將剛生成的節(jié)點展開,此過程一直持續(xù)下去直到分出勝負或者搜索到葉子節(jié)點。接著,按照走法將當前局面撤銷,退到?jīng)]有走棋時的局面。然后判斷是否需要剪枝。以上過程反復執(zhí)行,將龐大的博弈樹一層一層展開以搜索最佳招法,并將其輸出。

在NiosⅡ系統(tǒng)中,使用遞歸調(diào)用的方式來實現(xiàn)搜索算法,使用負極大值算法(Negamax algorithm),并且采用固定深度的深度優(yōu)先搜索,同時配合α-β剪枝技術來搜索最佳招法。

1.4 局面評估

對葉子結(jié)點所對應的局面打分是估值函數(shù)的職責,通過對局面的量化值來表示局面的好壞,而博弈樹的其他節(jié)點的值則通過算法從葉子節(jié)點返回得到。函數(shù)的輸入是待評估的函數(shù),輸出是一個數(shù)值。

博弈樹的葉子結(jié)點是需要調(diào)用估值函數(shù)加以估值的結(jié)點。而博弈樹的中間結(jié)點和根節(jié)點的分值,均可利用極大極小原理從葉子節(jié)點的取值倒推出來。除了殘局階段,搜索樹中的大部分葉子結(jié)點,都是未分勝負的結(jié)點,需要估值函數(shù)對該局面做出評價,并以數(shù)值的形式反映優(yōu)劣程度。一般地,將所有特征的取值的加權和作為估值函數(shù)值。局面p的估值函數(shù)V(p),一般形式如下:

式中:fi表示特征;wi表示權值。

需要注意到是,對于負極大值算法中葉子節(jié)點的估值必須對那一方走棋敏感,評估模塊設置使能信號,在搜索狀態(tài)機發(fā)出評估使能信號后,評估模塊立即對當前局面進行評估并在一定的延時后返回局面的評估值。如果評估使能信號無效,評估模塊的輸出保持在高阻態(tài),不對局面進行評估。

2 牛角棋博弈系統(tǒng)硬件設計

本系統(tǒng)的處理器為NiosⅡ嵌入式軟核處理器。NiosⅡ是Altera公司提出的數(shù)字系統(tǒng)SoPC解決方案,使得處理器可配置到可編程邏輯器件之中,因此被稱為軟核處理器。NiosⅡ軟核處理器與常見的微控制器相似,它們都是在一個芯片上包含了處理器、存儲器、以及輸入/輸出電路等功能模塊。相對于微控制器,NiosⅡ軟核處理器最大的特點為它是一種軟核、可配置的系統(tǒng)。軟核表示處理器的目標器件只有在下載設計文件后才具備處理器的功能;可配置意味著處理器系統(tǒng)的組成和性能可以根據(jù)需要進行調(diào)整。另外,系統(tǒng)還包含計時模塊和PLL分頻模塊,硬件系統(tǒng)主要包括NiosⅡ快速型內(nèi)核、SDRAM、三態(tài)橋(tristate bridge)cfi控制器、sysid和并行輸入輸出(pio)。對系統(tǒng)的各個模塊添加和配置完成之后,可以使用SoPC Builder自動配置各個模塊的的地址和系統(tǒng)的中斷。

3 測試結(jié)果

該設計采用的開發(fā)板為A1tera公司的DE2 FPGA開發(fā)板,板上的FPGA為CycloneⅡ系列,芯片的型號為EP2C35F672C2。

SoPC系統(tǒng)配置完成以后,在原理圖中將系統(tǒng)各個模塊的硬件系統(tǒng)進行連接,生成硬件系統(tǒng)原理圖。之后,對系統(tǒng)進行綜合、時序分析等操作,完成硬件系統(tǒng)的調(diào)試。接著對FPGA的引腳進行鎖定,然后將硬件系統(tǒng)全編譯生成FPGA配置文件用于配置FPGA。在使用QuartusⅡ?qū)oPC系統(tǒng)硬件配置到FPGA之后即可在NiosⅡIDE中對系統(tǒng)的軟件進行


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉