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