2012-09-21 40 views
5

我想了解MCTS算法是如何工作的,以及如何在紙牌遊戲中實現它以改善AI引擎。蒙特卡洛與UCB應用於複雜的紙牌遊戲

我讀過mcts.ai/網站和許多關於它的論文,其中包括一個關於在智能卡牌遊戲中將AI蒙特卡洛搜索與UCB一起應用於AI的成功性的結果,或多或少是什麼我需要這樣做,但是我在嘗試理解一些要點以及如何應用它以解決我需要的問題時遇到了一些麻煩。我在數學方面也沒有那麼多的經驗,所以當論文用複雜的公式解釋所有這些東西時,我就會迷失方向。

這就是我想出迄今:

  1. 鑑於遊戲狀態(在遊戲中用戶的手),確定哪個都可以做出那麼我將可能的法律戲劇創建一個節點列表(一個表示每個玩家)作爲MCTSTree根節點中的一個屬性,並且每個節點的結果(得分值?)

  2. 模擬一個完整的(直到結束)隨機玩家並將結果記錄在每個節點中,無論玩家是贏了還是輸了,以獲得完整的圖片。

這裏就是「我想」蒙特卡洛+ UCB應適用:

  1. 選擇使用UCB遞歸更有前途的播放(節點),並在情況下,其葉,擴大與該節點從它的gameState所有可能的戲劇。

  2. 模擬n從選定節點播放直到達到一定的時間。

    • 在這個階段,我有一些懷疑...說我嘗試隨機播放給出了可能的播放列表...我爲了繼續模擬該第一個結果必須做什麼?我應該讓樹長大嗎?
  3. 如何反向傳播結果?

然後,

  • 念及,由於這是一個複雜的玩牌,我有這麼多的可能的行動......將它有足夠好的性能,有這麼多孩子的在任何節點?

  • 如果每次模擬都基於一個遊戲狀態,並且每次玩家應用移動時遊戲都在改變狀態,那麼我怎麼能知道樹是否真的有用?

我真的很感激任何幫助。

非常感謝!

+0

本調查文件(自2012年3月起)列出了核心MCTS框架,然後討論了許多變體:http://www.doc.ic.ac.uk/~sgc/papers/browne_ieee12.pdf它包含有關計算UCB。 – jspcal

+0

謝謝@ jspcal! – magnoz

回答

6

MCTS只是以下幾點:

enter image description here

我形容它有點不同於圖像顯示什麼,這可能是更上馬。從根節點

  1. 下降(遊戲的當前狀態),使用UCB在每一個步驟,直到你決定在一個非實例節點l。 (選擇)
  2. l添加到您的樹上。 (展開)
  3. l,玩隨機遊戲。 (模擬)
  4. 將路徑上的所有節點從l更新回根節點,並播放結果。
  5. 重複,直到時間用完。

如果您的分支因子很大,正如您所提到的那樣,您可能需要考慮其他策略以選擇降序樹時的後繼,如RAVE。

+0

關於第2點:從葉子的遊戲狀態,我獲得所有可能的遊戲,併爲它們中的每一個玩隨機遊戲,對嗎?這就是我的分支因素有多大。如我錯了請糾正我。謝謝! – magnoz

+0

@magnoz * A)*不,你只玩一個隨機遊戲,這個遊戲恰好經歷了'l'的一個可能的後繼者。這個隨機遊戲的第一步是在'l'下面添加一個新的葉子(對不起,忘了那部分)。然後你再次從1開始。* B)*分支因子是每個狀態下可能移動的次數(通常這是不同的,所以你考慮平均分支因子)。 – ziggystar

+0

好吧,我想我明白了,現在..當你描述過程時,你首先執行模擬,然後執行擴展,對嗎? – magnoz