博客网 >

斗地主机器人AI的数学模型
作者:分类:默认分类标签:
斗地主机器人AI的数学模型
By David.Zhu 2008/05/25


    今天发呆的时候,突然想对斗地主机器人AI系统进行一下数学建模,于是有了点拙见,拿出来跟大家分享下。
    首先,我们定义一下斗地主机器人AI,从数学的角度看斗地主AI应该是一个空间S到另外一个空间D的映射F[S]-->D,其中我们称空间S为状态空间,即空间S的每个元素代表了一次出牌的上下文,对于任意一个元素属于空间S,它应该是一个多维的向量:
E=[x1,...,x28,y1,...y28,z1,...,z28,TokenHolder,c1,...,c28,Lord]
     其中,我们对玩家进行编号,以自己为起始点0,逆时针依次为玩家1,玩家2.TokenHolder表示当前的令牌持有者,Lord代表当前的地主玩家,[x1,...,x28]代表自己手中的牌,[y1,...,y28]代表玩家1手中的牌, [z1,...,z28]代表玩家2手中的牌,[c1,...,c28]代表当前桌面上出的牌。空间D我们称为出牌空间,对于任意一个元素属于空间D,它应该是一个多维的向量: E=[x1,...,x28]。

AI知识库的大小
    如果用二进制表示每个空间S上的元素需要116个二进制位,用二进制表示每个空间D上的元素需要28个二进制位。于是F对每个状态空间S中的自变量的映射可以用144个二进制位(即18个字节)来表示。一个粗粒度的估算,斗地主AI的存储上限为18*2116个字节,当然加上向量内部和之间存在的一些限制条件,实际的状态空间的容量应该远小于2116

如何机器人AI的训练
    训练的目的就是不断增加智能,即不断的为状态空间S上的元素建立到空间D的映射的过程。我们可以找三个有经验的老手进行游戏,然后在服务器端根据他们的出牌信息,生成一个状态的映射并添加到AI知识库中。为了加快训练的速度,可以并发的进行多个这样的训练然后将各自的AI知识库进行整理合并。

非特权的机器人AI
    上面讲到的机器人AI实际上是机器人作弊了的,它在决策时上可以看到另外两家手中的牌即[y1,...,y28]和 [z1,...,z28],由于机器人运行在服务器端,所以服务器可以偷偷的把另外两家手中的牌信息传递给机器人以增加机器人的利害程度。呵呵,当然如果要是机器人也当一个合法公民,上述的AI映射只需稍做下修改就可以了,将[y1,...,y28]和[z1,...,z28]合并为一个向量[y'1,...,y'28],表示其它两家当前手中的牌的总和。

知识库的内存组织
     还没想好,不过应该是采用树结构。

留待解决的问题
     知识库过大了内存装不下怎么办?一个状态在知识库中找不到相应的映射呢?如果映射出现了一对多的映射?
<< NewSkin V0.2 发布 / QQ界面引擎技术:NewSkin >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

David.Zhu

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档