0

我的游戏 AI 使用了一种算法,该算法根据我可以做出的动作搜索所有可能的未来状态(minimax / monte carlo esque)。它使用评分系统评估这些状态,选择得分最高的最终状态并遵循它。

这在大多数情况下都很有效,但在奖励稀少的情况下效果很差。例如:在我右侧 3 格处有一个理想的收藏品。自然的解决方案是向右->向右->向右。

但是,我的算法搜索 6 转深。它会找到许多最终收集对象的路径,包括需要超过 3 圈的路径。例如,它可能会找到一条路径:上->右->下->右->右->下,而不是在第 5 回合收集对象。

由于在这两种情况下,最终的叶节点都将对象检测为已收集,因此它自然不会偏爱其中一个。因此,不是在第 1 弯向右走,而是向上、向下或向左走。这种行为会在下一回合准确地重复,所以它基本上会在可收集的物体前随机跳舞,只有运气才会让它踩到它。

这显然不是最理想的,我想修复它,但是已经没有如何正确处理这个问题的想法了。这个问题是否有任何解决方案,或者是否有任何理论工作来处理这个问题?

我尝试过的解决方案:

  • 使其在较早的回合中更重视对象收集。虽然这有效,但要击败评估者的“噪音”,转弯之间的差异必须相当大。回合 1 的评级必须高于 2,回合 2 的评级必须高于 3,等等。回合 1 和 6 之间的差异必须如此之大,以至于最终导致行为极度贪婪,这在大多数情况下是不可取的。在具有多个对象的环境中,它最终可能会选择在第 1 回合抓取对象的路径,而不是在第 5 回合和第 6 回合抓取对象的更好路径。

  • 将对象指定为目标并为其指定距离。如果不逐个进行,原始问题仍然存在。如果在轮到轮的基础上完成,每轮所需的重要性差异再次使其过于贪婪。这种方法也会降低灵活性并导致其他问题。目标选择不是微不足道的,并且有点破坏了极小极大风格算法的要点

  • 在我的搜索中进行更深入的搜索,以便它总能找到第二个对象。这将花费如此多的计算能力,以至于我不得不做出让步,比如更积极地修剪路径。如果我这样做,我会回到同样的问题,因为我不知道如何让它更喜欢修剪 5 回合版本而不是 3 回合版本。

  • 为上一回合制定的计划提供额外的价值。如果它至少可以遵循次优路径,那么就不会有那么大的问题。不幸的是,这再次必须是一个非常强大的效果,它才能可靠地工作,使其在所有场景中都遵循次优路径,从而损害整体性能。

4

1 回答 1

1

在对移动的最后一步的结果进行加权时,您是否计算了拾取物体所需的移动次数?

我想,您正在量化移动动作的每一步,如果该步骤导致拾取物体,则给出 +1。这意味着在 3 个步骤中,我可以使用您上面的示例拾取对象,并获得游戏场的 +1 状态,但我也可以用 4-5-6-x 步骤执行此操作,获得相同的 +1状态。如果在您搜索的深度内只能到达一个对象,您的算法可能会选择随机 +1 状态之一,从而为您提供上述行为。

这可以通过用负分量化人工智能必须做出的每一个动作来解决。因此,在 3 次移动中获取对象将导致 -2,但在 6 次移动中获取对象将导致 -5。这样,AI 将清楚地知道,最好以最少的移动量(即 3 次)获得对象。

于 2019-01-08T00:28:25.760 回答