我正在为可能有两到四名玩家的游戏构建AI。在该领域进行一些研究,看起来没有任何标准的极小极大方法可行,除非你建立一个“偏执的”AI,假设所有玩家都得到它,并且可以有效地被视为一个更大的对手需要更多转。
游戏的部分问题在于棋盘非常大,并且在任何给定的回合中通常有数百个可用于任何玩家的动作。此外,某些动作可能允许玩家再次移动。这使得任何广度优先搜索都非常昂贵,除非你积极地修剪。
就上下文而言,游戏大致类似于跳棋,但在棋盘上的玩法大约是棋盘游戏的4倍。
是否有适合此类游戏的算法?或者,在没有任何移动树搜索的情况下使用启发式算法是我最好的选择?
答案 0 :(得分:1)
这里有很多问题。
简单的问题是,“我如何处理这个巨大的移动空间?”一个很好的答案是,使用电路板评估启发式搜索树。基本概念是因为搜索空间太大而无法直接处理,所以您可以尽可能地向前搜索,并在最后使用您对游戏本身的知识来评估哪些叶子是最佳的。
例如,在国际象棋中有一个粗略的规则,棋子价值1,主教和骑士价值3,车票价值5,皇后价值9,所以在搜索过程结束时,你可以使用棋盘评估函数,计算双方的点数之和,并将其用作评估函数。 (警告:特定的评估功能非常粗糙。良好的功能将取决于各个部分的位置,正在检查等。董事会评估功能并非易事。)
难题是“我如何处理超过两名球员?”这是一个非常难的问题。处理它的一种方法是假设每个玩家都严格要赢得游戏,并相应地调整搜索算法。这与不完全相同,假设所有对立的球员都在合作和协调。我相信Russell和Norvig在关于对抗性搜索的章节中有几页专门讨论AIMA的想法。然而,AIMA在这个主题上所拥有的只是朝着多人AI的方向发出的姿态。
多人游戏 - 也就是说,多智能体 - 人工智能是一种比单一智能体AI更难的努力。