一種機器博弈優化方法
【技術領域】
[0001] 本發明屬于計算機技術領域,特別是涉及一種機器博弈優化方法。
【背景技術】
[0002] 機器博弈(Computer Games),又稱之為計算機博弈,伴隨著計算機的誕生便受 到學術界的普遍關注,顯然這是人工智能領域的很有顯示度的挑戰性課題,盡管"人工智 能"(Artificial Intelligence)學科還是在它十年之后(1956年)才正式誕生。
[0003] 早在計算機誕生的前夜,著名的數學家和計算機學家阿倫?圖靈(Alan Turing) 便設計了一個能夠下國際象棋的紙上程序,并經過一步步的人為推演,實現了第一個國際 象棋的程序化博弈[1]。那些世界上最著名的科學家,如計算機創始人馮?諾依曼(John von Neumann),信息論創始人科勞德?香農(Claude E. Shannon),人工智能的創始人麥卡錫 (John McCarthy)等人都曾涉足計算機博弈領域,并做出過非常重要的貢獻。
[0004] 從上世紀40年代計算機誕生,計算機博弈經過一代又一代學者的艱苦奮斗和坎 坷歷程,終于在上世紀的八、九十年代,以計算機程序戰勝棋類領域的天才而享譽世界。其 中最為著名的則是1997年5月IBM "深藍"戰勝世界棋王卡斯帕羅夫,成為計算機科學史 上一個不朽的豐碑。在這之后,計算機博弈一天也沒有停息過拼搏。由《Science》雜志評 選的2007年十大科技突破中,就還包括了加拿大阿爾波特大學的科研成果一一解決了西洋 跳棋(Checker)博弈問題,也就是說,在西洋跳棋的博弈中計算機將永遠"立于不敗之地"。
[0005] 機器博弈的核心思想并不復雜,實際上就是對博弈樹葉子節點的估值過程和對博 弈樹搜索過程的結合。在博弈的任何一個中間階段,站在博弈雙方其中任意一方的立場上, 可以構造一棵博弈樹。這個博弈樹的根節點是當前時刻的棋局,它的兒子節點是假設行棋 一步后的各種棋局,孫子節點是從兒子節點的棋局再行棋一步的各種棋局,依次類推,構造 整棵博弈樹,直到可以分出勝負的棋局。
[0006] 博弈程序的任務就是對博弈樹進行搜索找出當前最優的一步。對博弈樹進行極大 極小搜索,可以達到這一目的。當然,程序不能也沒有必要做到搜索整棵博弈樹的所有節 點,對于一些已經確定為不佳的走步可以將以它為根節點的子樹剪掉。而且,搜索也不必真 的進行到分出勝負的棋局,只需要在一定深度范圍內對局面進行評價即可,因為只有搜索 空間縮小到一定程度,搜索才可以真正的進行。
[0007] 機器博弈在獲得棋局對手棋牌的信息多少上來區分,分為完全信息博弈和不完全 信息博弈。其中,完全信息博弈:是指每一參與者都擁有所有其他參與者的特征、策略及得 益函數等方面的準確信息的博弈。而在不完全信息博弈里,參與人并不完全清楚有關博弈 的一些信息。例如大部分的棋類游戲屬于完全信息博弈,而牌類游戲屬于不完全信息博弈 的類別。但是軍棋是一個例外,根據軍棋的下棋規則,只有在雙方碰子之后才能知曉對方的 棋子子力,所以軍棋也屬于不完全信息博弈的一種。
[0008] 機器博弈在完全信息博弈領域已經很好的解決博弈樹剪枝和評價系統的問題,并 利用如今計算機優異的性能在多次人機比賽中取得輝煌成績。但在不完全信息博弈領域 的研究還處于初級階段,尤其是軍棋。機器軍棋博弈的難點在于計算機策略搜索空間超過 了目前計算機可以承受的范圍,不能解決博弈樹剪枝的問題,軟件運行速度慢,并且勝率不 尚。
[0009] 蒙特卡羅抽樣算法是現今應用于不完全信息博弈中的一個基本方法,它的基本思 想就是隨機抽樣和大規模的抽樣次數來把不完全信息強制轉化為完全信息而且逐步逼近 于真實情況。而根據蒙特卡洛隨機試驗所設計的軟件較復雜,并且需要大量的試驗,軟件運 行速度慢,導致影響系統的出棋速度。
【發明內容】
[0010] 本發明為了克服現有技術存在的缺陷,本發明的目的是提供一種不深入展開博弈 樹,利用概率分布模型模擬真實情況,只針對當前一層局面和預測對方下一步可能策略進 行搜索評估,容易通過機器語言實現,軟件運行速度快,提高機器出棋速度和勝率的機器博 弈優化方法。
[0011] 本發明所采用的技術解決方案是一種機器博弈優化方法,具體步驟如圖1如示:
[0012] 步驟1 :根據博弈種類和規則來設置維數及算法,完成對概率矩陣a的初始化,設 敵方共有m個子,所以矩陣的行數為m。每個位置共有η種可能的子力,所以矩陣的列數為 η。為了記錄每個位置,在矩陣每行的右端加 Ovb,),來表示矩陣中的敵方子力的所在位置, 博弈過程中對手的子力概率分布:
[0014] 這里我們將a〇11,n)位置處的概率擴大10000倍,這樣有助于我們計算,其中,在不同 種類的博弈,可能會有一些子是相同的,設P為一種博弈中的一種子,q為這種博弈中的另 一種子,如果P在這種博弈中只有一個,而q有r個,我們還設七^這一列表示的是p這個 子的概率,則a u, h)這一列的總概率為1,擴大10000倍為10000 ;在設au, ^這列表示q這 個子的概率,則au, g)這一列的總概率為r,擴大10000倍為r*l〇〇〇〇。這里說明,在下面更 新時需要注意,矩陣中的每一行每一列的值都為固定的,其中這里的P,q分別代表博弈中 的子,而在a的矩陣中每一列代表一個子,我們用h,g分別代表p,q子所對應的列,這一列 的概率和為這個子的概率,并且在不同的博弈種類中不同的子可能有不同個,每個子代表 的這一列概率就應該是子的個數乘上10000 ;
[0015] 步驟2 :矩陣中的行更新是固定博弈中碰子的位置i,對該位置j上是o-m個子力 的概率更新。因每個位置上只能有一種可能的子力,所以取每行的概率和為1,為減少誤差, 我們取值10000。當雙方碰子之后,概率表中Q 1J1)位置的概率增大或減小時需要在其相 對應的I1行列及所有列中收回或分配概率,以保證總概率不變。例如,若我方子滅,則對方 此位置定是比我方子力大的子,所以比我方子大的子力的概率值要增加,和我方子力相同 和之下的(ii,ji)子力概率值要減小,利用公式
1,……,n&&j辛jl對概率矩陣的行向進行迭代更新,直到除jl列之外的概率值全部更新 完成;
[0016] 其中,h表示雙方碰子時所在的位置,j i表示是0-n中某種子力;上角標1表示是 迭代變化后的新數值;alh ^是變化的某子力的迭代初始概率值,4.,,是變化后的該子力新 的概率值,ail,,是除了 j i之外的某子力的概率值,是迭代完成后某子力的新概率值;
[0017] 步驟3:矩陣中的列更新主要是固定子中的子力j,而不限定子的位置i。根據同一 子力的不同數量,列上概率的總和也不盡相同,利用公式
i = 0,1,......,m&&i辛il對步驟2中提到的相應的j列中的概率值進行更新,直到除il 行之外的行都更新完成,其中,a_的值是10000 ;
[0018] 步驟4 :雙方博弈過程中,來對敵方的概率矩陣進行更新;
[0019] 步驟5 :通過反查概率矩陣a中每個位置上可能性最大的敵方子力Vcippci niax,我們就 能判斷這個位置上得子是何種子力的概率更大,我方的博弈策略就可據此改變,以獲得更 快的運算速度。
[0020] 與現有技術相比,本發明所具有的有益效果為:本發明的優化方法不深入展開博 弈樹,利用概率分布模型模擬真實情況,只針對當前一層局面和預測對方下一步可能策略 進行搜索評估,容易通過機器語言實現,軟件運行速度快,提高機器出棋速度和勝率,既能 克服速度慢的缺點,又能克服搜