我目前正在开发一个简单的人工智能为奥赛罗使用极小和α-β剪枝。
我的问题与董事会的评估职能有关。
我目前希望通过以下几个方面来评估它:
因此,假设根节点是初始博弈状态。第一个动作是AI的动作,第二个动作是对手的动作。
0
/ \ AI's Action
1 1
/ \ \ Opponent's action
2 2 2
在节点一级,我是否评估了我的AI芯片的磁盘计数以及它在完成操作后的时间点可以进行的合法移动的数量?
在节点级别2,我是否评估了对手筹码的盘数,以及在对手完成一项动作之后,它可以采取的合法行动的数量?
意思是AI移动->的对手移动==>在这一点上,我评估对手的光盘计数和数量的合法对手可以作出。
发布于 2012-09-09 04:19:49
在生成游戏树时,除非是叶节点,否则不应该计算节点。也就是说,生成一棵树,直到N级(它对应于在板当前状态之前移动N个棋盘),除非您已经到达对应于游戏结束情况的节点。--只有在这些节点中,才应该使用评估函数来评估棋盘游戏的状态。,这就是minimax算法关于的特点。我所知道的唯一一种情况是,在每个玩家移动后评估一个节点是在迭代深化算法中,这似乎是您没有使用的。
评估职能是负责快速评估某一特定职位的“得分”--换句话说,哪一方获胜,以及胜算多少。它也被称为静态评估函数,因为它只查看特定的板配置。所以,是的,当你达到N级时,你可以计算计算机和用户可能的移动,并对它们进行减除。例如,如果结果是肯定的,它将意味着计算机有优势,如果它是0,它意味着一个平分,它是负的,它将代表用户在移动性方面的不利情况。为一个代表棋盘配置结束的节点打分是很简单的,如果你赢了,就分配一个最大值,如果你输了,就分配一个最小值。
可移动性是大多数棋盘游戏(有价值的棋盘游戏)的评价功能中需要考虑的重要功能之一。为了评估它,您计算每个玩家可能的移动,给出一个静态板的配置,无论谁是下一个回合。即使一名球员最近移动了一步,当同一名玩家做最后一次移动(因此,在相同的条件下得分)并选择得分最高的棋盘时,你也会将分数分配给树的N级板。
你在评估中考虑的特征是非常好的。通常,你想要考虑物质和流动性(你是这样的)在游戏中他们是非常有价值的(虽然,我不知道材料是否总是奥赛罗的一个优势,你应该更好地了解它,因为它是你正在努力的游戏),所以我想你是在正确的道路上。
编辑:小心!在叶节点中,唯一要做的事情就是为板配置分配一个特定的分数。它是在其父节点中返回该分数并与其他分数(对应于其他子节点)进行比较的。为了选择特定玩家可用的最佳移动,请执行以下操作:如果父节点对应于对手的移动,则选择(Min)值最小的。如果这是计算机的轮到移动,选择得分与最高(最大)值,使它代表这个球员的最佳移动。
发布于 2012-09-08 21:51:03
最终博弈评价函数
如果您的搜索达到一个完整的董事会,那么评估应该简单地基于光盘计数,以确定谁获胜。
中博弈评价函数
合法移动的数量在开局和中场很有用,因为大量的移动(对对手来说是低的)通常表示你有一个很好的位置,有很多稳定的圆盘,你的对手无法攻击,而对手的位置很差,他们可能会用尽移动动作,被迫做一个坏动作(例如让你在角落玩)。
为了这个目的,在计算移动的时候,谁该轮到谁并不重要,所以我认为你在正确的道路上。
(请注意,在游戏的早期阶段,它往往是一个有利的人,拥有较少的光盘,因为这通常意味着你的对手没有什么安全的行动。)
随机评价函数
很久以前,我听说,仅仅使用一个随机数作为Othello评估函数(令我惊讶)也是一个完全合理的选择。
逻辑是,拥有最多选择的玩家将能够引导游戏获得最高的随机数,因此这种方法再次意味着AI将支持给它很多选择的移动,而他的对手则很少。
https://stackoverflow.com/questions/12334216
复制相似问题