Artificial intelligence 基于树搜索的游戏AI:如何避免AI';流浪'/';拖延症';报酬很少?

Artificial intelligence 基于树搜索的游戏AI:如何避免AI';流浪'/';拖延症';报酬很少?,artificial-intelligence,minimax,game-ai,monte-carlo-tree-search,Artificial Intelligence,Minimax,Game Ai,Monte Carlo Tree Search,我的游戏AI使用了一种算法,根据我能做出的动作搜索所有可能的未来状态(极小极大/蒙特卡罗式)。它使用评分系统对这些状态进行评估,选择得分最高的最终状态并进行跟踪 这在大多数情况下效果很好,但在奖励很少的情况下效果很差。例如:在我的右边有一个3块瓷砖的理想收藏品。自然的解决办法是向右->向右->向右 但是,我的算法搜索6转深。它将找到许多最终收集物体的路径,包括需要3圈以上的路径。例如,它可能会找到一条路径:向上->向右->向下->向右->向右->向下,在转弯5时收集对象 因为在这两种情况下,最终

我的游戏AI使用了一种算法,根据我能做出的动作搜索所有可能的未来状态(极小极大/蒙特卡罗式)。它使用评分系统对这些状态进行评估,选择得分最高的最终状态并进行跟踪

这在大多数情况下效果很好,但在奖励很少的情况下效果很差。例如:在我的右边有一个3块瓷砖的理想收藏品。自然的解决办法是向右->向右->向右

但是,我的算法搜索6转深。它将找到许多最终收集物体的路径,包括需要3圈以上的路径。例如,它可能会找到一条路径:向上->向右->向下->向右->向右->向下,在转弯5时收集对象

因为在这两种情况下,最终叶节点都会检测到收集的对象,所以它自然不会选择其中一个。所以,不是在第一个转弯处向右转,而是向上、向下或向左。这种行为将在下一个回合中完全重复,因此它基本上会在可收集对象面前随机跳舞,只有运气会让它踩到它

这显然是次优的,我想解决它,但我已经没有办法恰当地处理这个问题了。有没有解决这个问题的办法,或者有没有处理这个问题的理论工作

我尝试过的解决方案:

  • 在前面的回合中,使其更重视对象集合。虽然这是可行的,但为了克服评估器的“噪音”,转弯之间的差异必须相当大。回合1的等级必须高于2,回合2的等级必须高于3,等等。回合1和回合6之间的差异必须如此之大,以至于最终使行为变得极其贪婪,这在大多数情况下是不可取的。在一个有多个对象的环境中,它可能最终选择在转弯1抓取对象的路径,而不是在转弯5和6抓取对象的更好路径

  • 将对象指定为目标,并为其指定距离值。如果不是轮流进行,则原始问题仍然存在。如果在轮换的基础上进行,则每轮换所需的重要性差异再次使其过于贪婪。这种方法还降低了灵活性并导致其他问题。目标选择并不是一件琐碎的事情,它破坏了极大极小型算法的优点

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

  • 对上一轮制定的计划给予额外的重视。如果它至少能沿着次优路径前进,那么问题就不会那么严重了。不幸的是,这又是一个非常强大的影响,它才能可靠地工作,使它在所有场景中都遵循次优路径,从而影响整体性能


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

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

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