我的游戏AI使用的算法,搜索所有可能的未来状态,基于我可以采取的行动(极小/蒙特卡罗)。它使用评分系统对这些状态进行评估,选择得分最高的最终状态并遵循它。
在大多数情况下,这种方法效果很好,但当奖励很少时,效果却非常糟糕。例如:有一个理想的收藏对象,那就是我右边的3块瓷砖。自然的解决办法是右-右。
但是,我的算法搜索6转深。它将找到许多最终收集物体的路径,包括花费超过3圈的路径。例如,它可能会找到一条路径:向上->右->向下->右->右->向下,而是在第5圈收集对象。
因为在这两种情况下,最终的叶节点都会检测到所收集的对象,所以它自然不喜欢其中的一个。所以,与其在第一个拐弯处右转,倒不如往上、下、左。这一行为将在下一个回合中被重复,这样它基本上会在可收集的物体面前随意跳舞,只有运气才能让它踩到它。
这显然不是最优的,我想修复它,但是已经没有足够的想法来恰当地处理这个问题了。是否有解决这个问题的办法,或者是否有任何理论工作来处理这个问题?
我尝试过的解决方案:
发布于 2019-01-08 00:28:25
当对移动的最后一步的结果进行加权时,您是否在计算拾取对象所需的移动次数?
我猜想,你是在量化你的移动动作的每一步,如果这一步导致了一个物体的拾取,则给出一个+1。这意味着,在三个步骤中,我可以用上面的例子来获取对象,得到一个游戏场的+1状态,但是我也可以用4-5-6-x步骤来完成,得到相同的+1状态。如果在搜索的深度中只有一个对象是可到达的,那么算法很可能会从随机+1状态中选择一个,从而给出上述行为。
这是可以解决的,通过量化一个负的分数,每一个移动人工智能必须。因此,在3次移动中获得对象,将导致a-2,而在6次移动中获得对象,则将导致-5。这样,AI就会清楚地知道,最好是以最少的移动量得到目标,即3。
https://stackoverflow.com/questions/53280469
复制相似问题