为了处理无限循环,我应该在 alpha-beta 修剪中更深入地搜索具有相同值的最佳移动吗?

人工智能 游戏-ai 搜索 极小极大 α-β-修剪 跳棋
2021-11-08 04:32:23

我已经实现了带有 alpha-beta 修剪的 minimax 来玩跳棋。作为我的价值启发式,无论位置如何,我都只使用板上物质价值的总和。

我的主要问题在于实际完成游戏。深度为 14 的搜索与深度为 3 的搜索相匹配,因为该算法陷入了一个循环中,在一个角落里来回移动国王。深度 14 的玩家有四个国王和一个棋子对抗一个国王,具有显着的物质优势,但是,它只移动一个棋子。

我从同等价值的移动列表中随机选择了一个移动,这会导致更有趣的游戏(从而防止循环)。然而,无论哪个玩家使用了这种随机策略,结果都会变得更糟。

我不太确定如何解决这个问题。我应该更深入地搜索具有相同值的最佳动作吗?还是启发式有错?如果是这样,你会建议什么改变?

到目前为止,我已经尝试了一种简单的遗传生成算法,该算法优化了线性评分函数(占位置)。然而,随着算法的优化,它只导致了平局和相同的国王循环。

非常欢迎任何有关如何停止此国王循环的建议!

1个回答

我认为这个问题源于您没有考虑立场这一事实。我认为这是因为随着游戏的进行,导致棋子被取走的移动次数越来越少,尤其是当只剩下几颗棋子并且在取走棋子之前必须进行相当多的“追逐”时,可能比 14 的深度允许更多的追逐。

为了解决这个问题,您可以在游戏结束时将每个友方棋子与其他棋子的总距离的倒数添加到状态值中,这样代理将尝试向其他棋子移动并最小化此距离. 如果你为这个启发式找到了合适的尺度,只有当它找不到任何导致拿一块的移动时,代理才会优先移动到敌人的块上,帮助它打破这个循环。