针对需要平衡的计算机对手的计分方法


16

这个问题是关于我创建的计算机对手的一种方法,该方法目前正在或计划在几种计算机游戏中使用。

背景

去年,试图改善一个名为“扫雷舰国旗”游戏中的电脑对手时(简短描述:扫雷的回合制多人游戏版本,你必须采取比对手更多的地雷),我强烈地改变了我的算法的工作方式。我没有使用if-else-if-else这样的方法,而是使用一组具有指定权重的“得分手”来确定最佳动作。

您可能会认为对于Minesweeper Flags这样的游戏,仅是举手投足可以最大程度地夺取地雷,但这并不是那么简单。计算机将采取哪种动作通常取决于当前游戏状态下该特定动作的几个功能。功能示例:

  • 这个举动得分的概率是多少?
  • 在这里向我的对手透露任何信息的可能性是多少?

系统说明

系统基本上是这样的:

  1. “预得分者”:对当前游戏状态进行了一些预分析(就扫雷标志而言,通常是:计算所有概率)
  2. “得分手”:要求一组普通的得分手为每个可能的动作确定得分,每个得分手根据自己的标准应用得分。计分员可以检查进行的预分析的结果。
  3. 将上述步骤中计算出的分数相加,并设置为移动分数。
  4. 这些移动将根据其得分进行排序和排名,以便所有具有相同得分的移动都获得相同的排名。
  5. “后记分员”:以上结果可以发送到“后记分员”,后者可以根据后记分员自己的规则以所需的任何方式修改任何字段的分数。

当结合一堆前得分手,得分手(及其权重)和后得分手时,这就是我所说的得分配置

结果示例

这是分数被应用于扫雷旗帜的一个例子。这是得分的地图:

得分的扫雷旗地图

这是实际分数配置的输出。它显示了可能移动的等级,其中1是最佳等级,并以白色突出显示:

评分方法的示例输出

由于编写了高度灵活的代码,这种针对AI的方法也可以插入其他游戏中。

的优点和缺点

以下是我可以想到的该系统的一些优点和缺点

优点

  • 为AI创建很多不同的配置非常容易。
  • 可以与遗传算法一起使用:每个计分员都有一个相关的权重,该权重可以成为基因。
  • 使用某些工具,可以检查为什么做出特定动作,以及哪些得分手对该动作负责
  • 使用工具,可以创建可能动作的总体得分/等级的地图(如上面的屏幕截图)
  • 通过将分数应用于人类的演奏方式,可以创建一个“ #AI_Mirror”,尝试做出人们认为会做出的动作

缺点

  • 要“正确地”调整乐谱配置以使AI尽可能发挥出色,将非常困难。

问题

  • 我在这里构建的系统在AI世界中广为人知吗?真正的AI术语又叫什么?

  • 这种方法有意义吗?或者您会推荐其他方法吗?

  • 有哪些方法可以使调整分数配置的过程变得更容易?

关于最后一个问题,我知道使用遗传算法的可能性,也对SARSA有所了解(我确实认为我的评分员类似于该站点对具有权重的特征的描述,但根据我的理解,这并不是我所创建的这里)。我认为SARSA的问题在于,直到游戏结束,您才知道奖励,最好的举动通常是根本不给予奖励(地雷)的举动。您当前获胜的机会取决于当前比分(您和您的对手选了多少枚地雷)以及当前地图的外观。


这个问题最初发布在现已停产的人工智能网站上
用于此方法的(Java)代码现已发布在Code Review上

Answers:


7

它只是一个专家系统(例如模糊逻辑)。由于您没有运行算法来基于输出对决策参数执行反馈,因此它并不是真正的学习。但是,执行反馈不是唯一的心律是否为AI的指标。有人可能会争辩说,如果它以一种看起来很聪明的方式行事,那就很重要-尤其是当游戏是由人类对手玩的时候。

您指定的算法类型实际上是一个参数化方程式,您可以在保险计算中找到该算法。每次移动后,输入空间都会发生变化,但是算法不需要存储先前状态,因此它将每次移动视为新的独立板。

使用遗传算法

遗传算法有两个明确的选择:

  • 使用基因组的参数(按照您的建议)。您将优化所拥有的规则,但仍然需要一个专家系统。
  • 使用学习分类系统(LCS)为您选择规则。LCS是一种遗传算法,您可以在其中编码规则和参数。它们需要更长的时间才能收敛,并且对健身功能敏感。我认为由此产生的游戏方式可能对此更有趣。

模拟退火

解决该问题的另一种方法是使用模拟退火(SA)。您的问题是有界的输入空间,您可以分析性地编写一个函数,该函数找到在任何给定情况下可以选择的最佳平方。使用模拟退火将为您的参数找到全局最优值。

关于使其太好

我知道您希望算法是最好的算法,但不要忘记有人在与之对抗。有一种战术上完美的方式可以玩这类确定性游戏,如果AI玩家接手,纯粹是靠运气就意味着玩家获胜。


您的回答使我学习了很多东西,非常感谢!虽然我不敢肯定我赞同这个特定的游戏归类为“确定性” ..
西蒙·福斯贝里

我之所以说它是确定性的,是因为任何给定游戏的可能性都是有限的,尽管人类玩家似乎做出的选择是随机的,但他们却在如此确定的确定性空间内这样做。一条经验法则是,如果您在任何地方使用随机数生成器(或不受您控制的外部因素),那么它是随机的。如果不是,那是确定性的。
罗伯·

好吧,我想说的 Minesweeper 随机的,因为在采取行动揭示该字段之前,您不知道该字段的内容。
西蒙·福斯伯格

1
恕我直言,这不是随机的。如果满足以下条件,这将是随机的:给定相同的起始条件(隐藏的木板),每次单击该正方形时结果可能都不同。
Rob Lang博士2014年

2
随机/确定性和完全可观察/部分可观察是严格不同的正交属性。根据定义(例如,Russel / Norvig“如果环境的下一个状态完全由当前状态确定,并且由代理执行的操作...”),Minesweeper是确定性的,尽管不能完全观察到。
Peteris 2014年

0

是的,基于位置的某些方面分配分数的技术是编写AI玩游戏的标准方法。例如,几乎所有国际象棋程序都通过最大程度地根据可用棋子来对位置进行评分,并根据其位置来获得较小的奖励(例如,相互保护的棋子)来工作。然后,他们尝试使用对抗搜索算法(例如alpha-beta)来计算最佳的可用举动。

由于分支因数较大,在这里进行对抗性搜索可能很困难-在任何位置,合法举动都是标记或揭示任何未知的正方形。另一方面,您可能会通过启发式方法大大降低分支因子。例如,标记或显示您一无所知的正方形很少是最好的举动。相反,如果您知道一些未标记的地雷的位置,则在大多数情况下标记其中之一可能是最好的举动。维护换位表也可能会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.