我的游戏 AI 使用了一种算法,该算法根据我可以做出的动作搜索所有可能的未来状态(minimax / monte carlo esque)。它使用评分系统评估这些状态,选择得分最高的最终状态并遵循它。
这在大多数情况下都很有效,但在奖励稀少的情况下效果很差。例如:在我右侧 3 格处有一个理想的收藏品。自然的解决方案是向右->向右->向右。
但是,我的算法搜索 6 转深。它会找到许多最终收集对象的路径,包括需要超过 3 圈的路径。例如,它可能会找到一条路径:上->右->下->右->右->下,而不是在第 5 回合收集对象。
由于在这两种情况下,最终的叶节点都将对象检测为已收集,因此它自然不会偏爱其中一个。因此,不是在第 1 弯向右走,而是向上、向下或向左走。这种行为会在下一回合准确地重复,所以它基本上会在可收集的物体前随机跳舞,只有运气才会让它踩到它。
这显然不是最理想的,我想修复它,但是已经没有如何正确处理这个问题的想法了。这个问题是否有任何解决方案,或者是否有任何理论工作来处理这个问题?
我尝试过的解决方案:
使其在较早的回合中更重视对象收集。虽然这有效,但要击败评估者的“噪音”,转弯之间的差异必须相当大。回合 1 的评级必须高于 2,回合 2 的评级必须高于 3,等等。回合 1 和 6 之间的差异必须如此之大,以至于最终导致行为极度贪婪,这在大多数情况下是不可取的。在具有多个对象的环境中,它最终可能会选择在第 1 回合抓取对象的路径,而不是在第 5 回合和第 6 回合抓取对象的更好路径。
将对象指定为目标并为其指定距离。如果不逐个进行,原始问题仍然存在。如果在轮到轮的基础上完成,每轮所需的重要性差异再次使其过于贪婪。这种方法也会降低灵活性并导致其他问题。目标选择不是微不足道的,并且有点破坏了极小极大风格算法的要点
在我的搜索中进行更深入的搜索,以便它总能找到第二个对象。这将花费如此多的计算能力,以至于我不得不做出让步,比如更积极地修剪路径。如果我这样做,我会回到同样的问题,因为我不知道如何让它更喜欢修剪 5 回合版本而不是 3 回合版本。
为上一回合制定的计划提供额外的价值。如果它至少可以遵循次优路径,那么就不会有那么大的问题。不幸的是,这再次必须是一个非常强大的效果,它才能可靠地工作,使其在所有场景中都遵循次优路径,从而损害整体性能。