王亞杰,丁傲冬,祁冰枝,張?jiān)撇?/p>
(沈陽(yáng)航空航天大學(xué) a.工程訓(xùn)練中心;b.計(jì)算機(jī)學(xué)院,沈陽(yáng) 110135)
機(jī)器博弈,也稱計(jì)算機(jī)博弈,它既是人工智能領(lǐng)域的重要應(yīng)用,也是研究人類思維和實(shí)現(xiàn)機(jī)器思維絕佳的實(shí)驗(yàn)載體,國(guó)內(nèi)外很多學(xué)者一直進(jìn)行不懈的研究[1-3],各種國(guó)際、國(guó)內(nèi)的比賽也促進(jìn)了機(jī)器博弈理論和方法的快速發(fā)展[4]。機(jī)器博弈通常分為完備信息博弈與非完備信息博弈,如今完備信息博弈已經(jīng)取得了重大突破,如谷歌的ALPHA GO[5]系列,通過(guò)使用深度強(qiáng)化學(xué)習(xí)算法在無(wú)需相關(guān)領(lǐng)域知識(shí)情況下實(shí)現(xiàn)多棋種對(duì)弈,達(dá)到了遠(yuǎn)超人類的水平。深度強(qiáng)化學(xué)習(xí)在電子游戲領(lǐng)域也取得了較好的效果,如Atari[6]。
由于對(duì)手信息的缺失,非完備信息博弈一直是機(jī)器博弈領(lǐng)域的難點(diǎn),作為此類博弈的典型代表,德州撲克一直是人工智能領(lǐng)域內(nèi)的難題[7],分為有限注和無(wú)限注,玩家一般2~10人。本文以二人無(wú)限注德州撲克作為研究對(duì)象。
德州撲克常用算法有基于博弈樹(shù)的搜索、虛擬遺憾最小化算法(counterfactual regret minimization,CFR)、對(duì)手建模等。2006年,Billings等提出了基于對(duì)手建模和樹(shù)搜索的德州撲克算法[8];2014年北京郵電大學(xué)的曹一鳴實(shí)現(xiàn)了基于上限置信區(qū)間算法(upper confidence bound apply to tree,UCT,一種基于蒙特卡羅的博弈樹(shù)搜索)的德州撲克程序[9],在結(jié)合了領(lǐng)域知識(shí)后取得了較好的效果。2007年,CFR被Zinkevich等提出[10],同時(shí)證明CFR算法能夠在二人零和博弈中達(dá)到近似納什均衡,并且能夠利用對(duì)手的弱點(diǎn)[11];2015年,Billings等在CFR算法的基礎(chǔ)上改進(jìn)得到了CFR+算法,并證明改進(jìn)后的CFR+算法能夠解決二人限制性德州撲克,但是需要大量的相關(guān)領(lǐng)域知識(shí)[12]。2017年,來(lái)自加拿大Alberta大學(xué)、捷克Charles大學(xué)、布拉格捷克理工大學(xué)的研究人員們使用CFR算法結(jié)合深度學(xué)習(xí)實(shí)現(xiàn)的德州撲克人工智能系統(tǒng)DeepStack是世界上第一個(gè)在 “一對(duì)一無(wú)限注德州撲克”上擊敗了職業(yè)撲克玩家的計(jì)算機(jī)程序。2018年,浙江大學(xué)的李翔等提出基于手牌預(yù)測(cè)[7](對(duì)手建模的一種)的算法,在結(jié)合領(lǐng)域知識(shí)的前提下首次在3人及以上無(wú)限注德州撲克上實(shí)現(xiàn)了對(duì)手手牌預(yù)測(cè)。
本文針對(duì)上述算法需要結(jié)合領(lǐng)域知識(shí)這一點(diǎn),首先提出了預(yù)期收益策略,即每個(gè)階段都根據(jù)每個(gè)可選動(dòng)作的期望收益選擇下一步動(dòng)作。計(jì)算期望收益時(shí)考慮了3個(gè)指標(biāo):己方勝率、己方可選動(dòng)作的下注量和損失率(下注量占己方總籌碼量的比例)。己方勝率使用蒙特卡羅方法計(jì)算得到;己方可選動(dòng)作的下注量代表動(dòng)作執(zhí)行完之后,己方在當(dāng)前階段的下注籌碼總量;損失率代表己方如果輸了要承擔(dān)的損失。然后通過(guò)己方勝率和對(duì)手下注量評(píng)估對(duì)手勝率,得到對(duì)手勝率后把預(yù)期收益策略作為對(duì)手策略模型應(yīng)用在UCT算法的模擬部分,即,將傳統(tǒng)UCT算法用的隨機(jī)模擬替換成雙方都使用預(yù)期收益策略模擬。無(wú)論是計(jì)算預(yù)期收益考慮的3個(gè)指標(biāo)還是評(píng)估對(duì)手勝率時(shí)用到的對(duì)手下注量都無(wú)需任何領(lǐng)域知識(shí),因此改進(jìn)后的UCT算法也是一種無(wú)需領(lǐng)域知識(shí)的算法。
在德州撲克中,游戲分為5個(gè)階段:
Perflop(翻牌前):每人發(fā)2張底牌,決定大小盲注,雙方輪流表態(tài)(棄牌、跟注、下注);
Flop(翻牌):發(fā)3張公共牌,輪流表態(tài);
Turn(轉(zhuǎn)牌):發(fā)第4張公共牌,輪流表態(tài);
River(河牌):發(fā)第5張公共牌,輪流表態(tài);
比牌階段:經(jīng)過(guò)4輪的發(fā)牌和下注,雙方選擇最大5張牌,最大牌型的玩家贏得籌碼。
上述5個(gè)階段中前4個(gè)階段都需要計(jì)算勝率作為表態(tài)依據(jù),并且到一個(gè)新階段勝率會(huì)發(fā)生變化。由于不知道對(duì)方底牌與未發(fā)的公共牌,所以采用蒙特卡羅方法進(jìn)行計(jì)算。蒙特卡羅方法是通過(guò)重復(fù)隨機(jī)采樣來(lái)計(jì)算結(jié)果的一類概率算法。這里剩余公共牌滿足均勻概率分布,對(duì)手底牌概率分布和對(duì)方策略相關(guān),但是本文不考慮對(duì)手建模,仍然采用均勻概率分布。因此,隨機(jī)地生成剩余公共牌與對(duì)方底牌,并統(tǒng)計(jì)雙方勝負(fù)關(guān)系,將此過(guò)程重復(fù),最終得到一個(gè)穩(wěn)定的勝率作為當(dāng)前階段己方的勝率[13]。
本文采用蒙特卡羅方法計(jì)算勝率流程如圖1所示。
圖1 蒙特卡羅方法計(jì)算勝率流程
圖2~5分別是在一次對(duì)局中Perflop、Flop、Turn和River 4個(gè)階段模擬次數(shù)與勝率的關(guān)系,橫坐標(biāo)為模擬次數(shù),縱坐標(biāo)為己方勝率。
圖2 Preflop階段模擬次數(shù)與勝率關(guān)系
圖3 Flop階段模擬次數(shù)與勝率關(guān)系
圖4 Turn階段模擬次數(shù)與勝率關(guān)系
圖5 River階段模擬次數(shù)與勝率關(guān)系
在這4個(gè)階段中,每次都隨機(jī)地生成剩余公共牌與對(duì)方底牌,Perflop、Flop、Turn和River分別生成公共牌數(shù)量為:5張、2張、1張、1張;對(duì)方底牌數(shù)量為:2張。理論上,模擬次數(shù)足夠多時(shí)得到的統(tǒng)計(jì)勝率就是真實(shí)勝率。從圖像看,隨著模擬次數(shù)N的增大,勝率W趨于穩(wěn)定。表1統(tǒng)計(jì)了Preflop階段N處于不同范圍時(shí)的勝率情況。
表1 模擬次數(shù)與勝率
表1的模擬次數(shù)N∈[a+10,a+100]表示N分別取值為a+10、a+20、…、a+100共10組值,得到10個(gè)勝率值,分別取最大勝率,最小勝率、平均勝率、最大與最小勝率差值。其中,平均勝率作為真實(shí)勝率的參考值,勝率差描述平均勝率的穩(wěn)定性,值越小平均勝率越穩(wěn)定。隨著N逐漸增大,勝率差逐漸減小。當(dāng)模擬次數(shù)N∈[810,1 000]時(shí),勝率差小于0.05;當(dāng)N∈[410,500]時(shí),勝率差已經(jīng)接近0.05,勝率已經(jīng)非常穩(wěn)定,可以代替真實(shí)勝率。同時(shí),考慮到模擬次數(shù)越多耗時(shí)也會(huì)相應(yīng)增長(zhǎng),實(shí)驗(yàn)中將模擬次數(shù)設(shè)置為500。
計(jì)算出當(dāng)前階段的勝率之后,根據(jù)勝率獲得每個(gè)動(dòng)作對(duì)應(yīng)的預(yù)期收益。德州撲克中有5種動(dòng)作:Fold、Call、Check、Raise、Bet、Allin。其中,F(xiàn)old代表?xiàng)壟?;Call代表將籌碼加注到和對(duì)手一樣多;Check代表不加注,看作將籌碼加注到和當(dāng)前一樣多;Raise代表加注到指定籌碼;Bet代表直接下注,可以看成直接把籌碼加注到一個(gè)值;Allin代表剩余籌碼全下注,可以看成直接把籌碼加注到最大值,所以除了Fold之外的5種動(dòng)作都可以用Raise代替,因此在程序中只有2種動(dòng)作:Fold和Raise。Fold代表?xiàng)壟?,?zhí)行Fold即損失所有下注籌碼;對(duì)于動(dòng)作Raise,需要根據(jù)勝率和對(duì)應(yīng)下注量chip值計(jì)算出預(yù)期收益,用于估計(jì)動(dòng)作的價(jià)值。用式(1)計(jì)算預(yù)期收益:
其中,S代表預(yù)期收益,W代表當(dāng)前階段己方勝率,chip代表當(dāng)前動(dòng)作的下注量,max_chip代表最大籌碼量,即開(kāi)局時(shí)己方擁有的籌碼量。1-W是己方負(fù)率,W-(1-W)=2×W-1是期望收益率。如果只考慮W則會(huì)出現(xiàn)期望收益率大于零時(shí)Allin總會(huì)被選為最佳策略;反之,Call或Check總會(huì)被選為最佳策略??紤]到無(wú)論選擇哪種策略(除了Fold),都伴隨著損失下注籌碼的風(fēng)險(xiǎn),因此引入損失率的概念,即下注籌碼量占己方總籌碼量的比例(chip/max_chip),比例越高,可能的損失越大。因此,在期望收益率的基礎(chǔ)上減去損失率作為最終的預(yù)期收益率。在作出最終決策之前,先算出n個(gè)預(yù)期收益,加上選擇Fold獲得的收益,從n+1個(gè)收益中選擇最大的收益對(duì)應(yīng)的動(dòng)作作為下一步動(dòng)作。
圖6是預(yù)期收益策略決策流程圖。
圖6 預(yù)期收益策略決策流程
基于預(yù)期收益策略的德州撲克程序THPZZ參加了2019屆中國(guó)計(jì)算機(jī)博弈大賽2人非限制德州撲克項(xiàng)目,獲得第3名。在實(shí)驗(yàn)中將作為基準(zhǔn)程序與本文方法作對(duì)比。
UCT算法,即上限置信區(qū)間算法,是一種常見(jiàn)的博弈樹(shù)搜索算法,該算法結(jié)合了蒙特卡羅樹(shù)搜索和UCB(upper confidence bound)公式[14],利用UCB公式進(jìn)行選擇。UCB公式來(lái)源于K臂強(qiáng)盜問(wèn)題。K臂強(qiáng)盜問(wèn)題是指一個(gè)具有K個(gè)手臂的強(qiáng)盜,每次用不同的手臂都可以獲得具有不同分布的收益[15]。對(duì)于這個(gè)問(wèn)題,首先把所有手臂嘗試一次,然后根據(jù)式(2):
蒙特卡洛樹(shù)搜索有4個(gè)步驟:選擇、擴(kuò)展、模擬、回溯。UCT算法在選擇階段把蒙特卡羅樹(shù)的每個(gè)節(jié)點(diǎn)看成K臂強(qiáng)盜問(wèn)題中的強(qiáng)盜,把該節(jié)點(diǎn)的子節(jié)點(diǎn)作為強(qiáng)盜的K條手臂[15],使用UCB公式選擇下一個(gè)節(jié)點(diǎn)。
預(yù)期收益策略主要和蒙特卡洛樹(shù)搜索4個(gè)步驟中的模擬結(jié)合,在蒙特卡羅樹(shù)搜索中模擬是讓博弈雙方進(jìn)行隨機(jī)對(duì)弈[9],直到終局狀態(tài)。如UCT策略應(yīng)用在圍棋上時(shí),當(dāng)選擇到一個(gè)葉子節(jié)點(diǎn)時(shí),讓雙方隨機(jī)下棋一直到結(jié)束,獲得一個(gè)勝負(fù)結(jié)果,然后進(jìn)行回溯更新節(jié)點(diǎn)信息。
這種模擬策略對(duì)于德州撲克來(lái)說(shuō)雖然理論上可行,但是存在2個(gè)問(wèn)題:
問(wèn)題1:對(duì)于玩家來(lái)說(shuō)每種動(dòng)作被選擇執(zhí)行的概率不是均等的,牌型越好(即勝率高)的玩家平均下注量越大;反之,則越低。
問(wèn)題2:模擬過(guò)程中缺少對(duì)手每個(gè)階段的勝率信息,無(wú)法直接使用預(yù)期收益策略并且模擬到游戲結(jié)束時(shí),不同于完全信息博弈,非完備信息博弈游戲不能得到一個(gè)精確的反饋值。例如:德州撲克中由于對(duì)方底牌不能確定,因此無(wú)法得到一個(gè)精確的勝負(fù)結(jié)果。
針對(duì)問(wèn)題1,使用預(yù)期收益策略代替隨機(jī)策略進(jìn)行模擬。預(yù)期收益策略具有2個(gè)特點(diǎn):①下注量與勝率正相關(guān);②避免了隨機(jī)策略里每種動(dòng)作被選擇概率都是均等的情況。在對(duì)對(duì)手風(fēng)格、偏好完全不了解的情況下,預(yù)期收益策略完全可以作為一種對(duì)手平均策略模型來(lái)使用。
針對(duì)問(wèn)題2,目前有2種解決方法:
①對(duì)手建模:利用對(duì)手下注信息估算出對(duì)手底牌范圍,得到對(duì)手的勝率和最終的收益值;
②隨機(jī)模擬:隨機(jī)地給對(duì)方發(fā)底牌,得到對(duì)手的平均勝率和一個(gè)平均的收益值。
對(duì)手建模方法能夠較為準(zhǔn)確地預(yù)測(cè)特定對(duì)手的底牌[16-17],但是比較復(fù)雜,本文主要研究了方法②,并對(duì)其做了一些改進(jìn)。
對(duì)于方法②,雖然通過(guò)多次隨機(jī)發(fā)牌能夠計(jì)算出對(duì)方平均勝率并得到一個(gè)己方的平均收益值,但是用這種方法只能計(jì)算出對(duì)手的平均勝率,與實(shí)際情況略有差異。如果對(duì)手底牌較弱,實(shí)際勝率較低,多次隨機(jī)發(fā)牌的方法相當(dāng)于高估了對(duì)方的勝率,使得己方在做決策時(shí)平均下注量偏低,從而導(dǎo)致收益偏低。如果對(duì)手底牌較強(qiáng),多次隨機(jī)發(fā)牌的方法等同于低估了對(duì)方的勝率,容易誤導(dǎo)己方加大下注量從而擴(kuò)大損失。相比高估對(duì)方勝率情況,更需要避免低估對(duì)方勝率的情況,特別是在己方勝率低的情況下,低估對(duì)方勝率帶來(lái)的損失更大。
基于以上分析本文提出了一種新的勝率模擬方法:通過(guò)多次隨機(jī)發(fā)牌得到己方勝率Wself,把1-Wself作為對(duì)方勝率的一個(gè)基礎(chǔ)值,同時(shí)考慮到把預(yù)期收益策略作為對(duì)手初始策略模型使用,因此把對(duì)手當(dāng)前下注量chip與總籌碼量chipsum的比值作為對(duì)方勝率的增量值。即使用式(3)計(jì)算對(duì)方勝率Wopponent:
得到雙方勝率估值之后,可用于預(yù)期收益策略并在結(jié)束時(shí)使用式(4)計(jì)算最終收益。
其中,Ssimluate是模擬到結(jié)束時(shí)的收益。chipbet是下注量。
對(duì)于式(3),考慮2種情況:
1)己方勝率較低。計(jì)算得到的對(duì)方勝率會(huì)一直處于較高水平。所以會(huì)出現(xiàn)狀態(tài)1(己方勝率低,對(duì)方勝率低),此時(shí)會(huì)高估對(duì)方勝率。
2)己方勝率較高。計(jì)算得到的對(duì)方勝率取決于對(duì)方下注量的高低。所以會(huì)出現(xiàn)2種狀態(tài):狀態(tài)2(對(duì)方勝率低,但下注量高);狀態(tài)3(對(duì)方勝率高,但下注量低)。這2種狀態(tài)都會(huì)導(dǎo)致預(yù)測(cè)對(duì)方勝率不準(zhǔn)確的問(wèn)題。
相對(duì)于隨機(jī)發(fā)牌的方法,式(3)在避免了己方勝率低的同時(shí)又低估對(duì)方勝率的情況。
在狀態(tài)1中,己方會(huì)傾向于棄牌或下小注。
在狀態(tài)2中,對(duì)方要想通過(guò)詐唬策略使己方棄牌,必須下注極高的籌碼量,然而在對(duì)方Allin情況下,只有己方勝率低于2/3時(shí)會(huì)認(rèn)為對(duì)方勝率高過(guò)己方,即當(dāng)己方勝率高于2/3時(shí),對(duì)方的詐唬策略作用不大。
在狀態(tài)3中,雙方有較大概率一直進(jìn)行到游戲結(jié)束,通過(guò)比較牌型判斷勝負(fù),這種情況下由于己方勝率較高,在結(jié)果上沒(méi)有明顯劣勢(shì)。綜上所述,公式(3)使得在己方勝率較低(低于2/3)情況下傾向于較為保守的打法,表現(xiàn)為有最高總下注量限制;在勝率較高(高于2/3)情況下傾向于激進(jìn)的打法,表現(xiàn)為無(wú)最高總下注量限制。
對(duì)于無(wú)限注德州撲克,只要下注量在合法范圍內(nèi)都可以下注,如果下注量按照最小單位1來(lái)計(jì)算的話,下注行為會(huì)有很多種,構(gòu)造出來(lái)的博弈樹(shù)將會(huì)非常龐大。
動(dòng)作映射[18]是把多個(gè)下注行為映射為一個(gè)行為,比如:將下注的籌碼數(shù)規(guī)定為100的倍數(shù),那么下注量在100周圍(110、90等)的下注動(dòng)作都可以用下注100代替。本次實(shí)驗(yàn)因算力有限,在確定最小下注量與最大下注量后,規(guī)定最小下注單位為500(僅在己方構(gòu)建博弈樹(shù)時(shí)限制),極大地減少了可選動(dòng)作數(shù)量,從而降低了博弈樹(shù)規(guī)模。
本文的實(shí)驗(yàn)程序使用Python3.7實(shí)現(xiàn),在一臺(tái)AMD epyc 7k62(128核心),內(nèi)存為512 GB,系統(tǒng)為windows server 2019的機(jī)器上運(yùn)行。
德州撲克的規(guī)則按照中國(guó)計(jì)算機(jī)博弈大賽的比賽規(guī)則執(zhí)行。即比賽開(kāi)始時(shí)雙方各有20 000籌碼,每步策略計(jì)算時(shí)間不超過(guò)60 s。每進(jìn)行完一局復(fù)位一次。雙方進(jìn)行100局比賽,累計(jì)每局贏得的籌碼量,最后贏得籌碼量多者獲勝。
為了降低UCT算法構(gòu)建的博弈樹(shù)規(guī)模,在2.3節(jié)已經(jīng)將模擬階段的最小下注單位設(shè)置為500,起始籌碼量為20 000,每種牌局狀態(tài)的下一步動(dòng)作最多為40個(gè)。在UCT算法中,選擇、擴(kuò)展、模擬、回溯是一次完整的搜索過(guò)程,搜索次數(shù)越多得到的結(jié)果越準(zhǔn)確。模擬是一次搜索的子過(guò)程,在傳統(tǒng)的UCT中一般采用隨機(jī)的策略模擬1次得到結(jié)果并回溯。但在本文實(shí)驗(yàn)中,由于模擬過(guò)程中剩余公共牌與對(duì)方底牌(在采用隨機(jī)模擬的UCT算法中存在)具有隨機(jī)性,導(dǎo)致一次模擬得到的勝率隨機(jī)性過(guò)大,所以需要進(jìn)行多次模擬得到一個(gè)穩(wěn)定的結(jié)果,進(jìn)而需要設(shè)置2個(gè)參數(shù):搜索次數(shù)與模擬次數(shù)。參數(shù)設(shè)置得越多,結(jié)果越準(zhǔn)確,但是考慮到計(jì)算力有限,本文在對(duì)結(jié)果準(zhǔn)確性影響不大的情況下盡量降低2個(gè)參數(shù)的值。
從表1結(jié)果分析得出:在計(jì)算勝率時(shí),模擬次數(shù)N為[110,200]和[910,1 000](這個(gè)區(qū)間的模擬次數(shù)最多,結(jié)果作為真實(shí)值參考)時(shí)得到的勝率均值差距較小,說(shuō)明模擬次數(shù)超過(guò)100就可以得到和真實(shí)值接近的勝率。本文實(shí)驗(yàn)為了充分發(fā)揮硬件多核心的優(yōu)勢(shì),將模擬次數(shù)設(shè)置為128(本文實(shí)驗(yàn)硬件的核心數(shù)量)次。當(dāng)模擬次數(shù)設(shè)置為128次后,搜索次數(shù)直接決定程序運(yùn)行時(shí)間,為了滿足每步策略計(jì)算時(shí)間不超過(guò)60 s,將搜索次數(shù)設(shè)置為100次。
本次實(shí)驗(yàn)基準(zhǔn)程序是THPZZ,分別和本文提出的2個(gè)算法進(jìn)行對(duì)比:
算法1:UCT結(jié)合預(yù)期收益策略,采用隨機(jī)模擬方式。
算法2:UCT結(jié)合預(yù)期收益策略,采用勝率模擬方式。
表2是采用勝率模擬與隨機(jī)模擬的程序與THPZZ的比賽結(jié)果。
表2 實(shí)驗(yàn)結(jié)果
從表2中可以看出:算法2的水平高于THPZZ,THPZZ水平高于算法1。圖7是算法2與算法1的比賽局?jǐn)?shù)與累計(jì)贏得籌碼的關(guān)系。
圖7 比賽局?jǐn)?shù)與贏得籌碼量關(guān)系
從圖7可以看出:算法2的策略較為平穩(wěn),隨著比賽總局?jǐn)?shù)增加,贏得的總籌碼量穩(wěn)定增長(zhǎng)。算法1的策略隨著比賽總局?jǐn)?shù)的增長(zhǎng),贏得的總籌碼量多次出現(xiàn)較大的起伏。
圖8顯示了在100局對(duì)弈中2個(gè)算法在不同下注范圍的頻數(shù)分布情況。
圖8 下注范圍頻數(shù)分布
算法2在100次對(duì)局中有99次總下注量低于5 000,僅有1次下注量超過(guò)10 000的情況??傮w策略較為保守。
算法1在100次對(duì)局中有82次總下注量低于5 000,18次總下注量超過(guò)10 000。
由于預(yù)期收益策略是根據(jù)己方勝率做出決策,而下注區(qū)間[10 000,20 000]對(duì)應(yīng)較高的勝率。在與基于此策略的THPZZ的對(duì)比實(shí)驗(yàn)中,算法1由于在估算對(duì)手勝率時(shí)用的是隨機(jī)模擬,因此得到的對(duì)手勝率是一個(gè)均值。由2.2的分析得知這種隨機(jī)模擬在對(duì)手牌較強(qiáng)時(shí)得到的是比實(shí)際偏低的勝率,導(dǎo)致出現(xiàn)了多次盲目跟隨對(duì)方下大注的行為。實(shí)際上在這18次下注量超過(guò)10 000的對(duì)局中,算法1僅有5次獲得勝利。
而算法2采用式(3)估算對(duì)手勝率,由2.2的分析可知:這種估計(jì)方法在對(duì)手下注量較高的情況下估計(jì)到的對(duì)手勝率較高,能夠改善隨機(jī)模擬低估對(duì)手勝率的情況,因此下大注的情況較少,在100次對(duì)局中僅有1次。
本文提出了無(wú)需領(lǐng)域知識(shí)的預(yù)期收益策略,利用蒙特卡羅方法計(jì)算己方勝率,并根據(jù)己方勝率和對(duì)方下注量評(píng)估對(duì)方勝率,然后利用雙方勝率與下注量計(jì)算不同動(dòng)作的預(yù)期收益,最后根據(jù)預(yù)期收益選擇下一步的動(dòng)作,并且把預(yù)期收益策略與UCT算法結(jié)合,取得了較好的效果。
由于沒(méi)有對(duì)手底牌的任何信息,預(yù)期收益策略在計(jì)算己方勝率時(shí)用的蒙特卡羅方法只能求出一個(gè)平均的勝率,在計(jì)算對(duì)手勝率時(shí)也只能根據(jù)己方勝率和對(duì)方下注量進(jìn)行粗略的計(jì)算。因此,想要精確地獲取己方和對(duì)方勝率,還需要結(jié)合對(duì)手建模的方法進(jìn)行深入研究。