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