【发布时间】:2013-05-16 12:11:08
【问题描述】:
我有一个关于我正在创建的棋盘游戏的问题。我计划使用 MiniMax 和 AlphaBeta 修剪为游戏制作人工玩家,但我不确定如何评估玩家是否擅长游戏。由于这是一款新游戏,因此我无法找到一个很好的玩家来提供反馈。所以我想知道是否有任何技术可以客观地确定人造球员是否真的很好。 提前谢谢你。
【问题讨论】:
标签: artificial-intelligence evaluation minimax
我有一个关于我正在创建的棋盘游戏的问题。我计划使用 MiniMax 和 AlphaBeta 修剪为游戏制作人工玩家,但我不确定如何评估玩家是否擅长游戏。由于这是一款新游戏,因此我无法找到一个很好的玩家来提供反馈。所以我想知道是否有任何技术可以客观地确定人造球员是否真的很好。 提前谢谢你。
【问题讨论】:
标签: artificial-intelligence evaluation minimax
对 AI 的质量进行适当的自动化测试是很困难的,因为您必须拥有与 AI 一样好的或更好的东西(至少在某些位置上 - 有时会发现明显的愚蠢动作,而手动操作并不难),所以,你必须编写比你的 AI 更好的 AI,你必须通过编写更好的 AI 来测试它,你必须测试它......好吧,至少可以说,这显然不会效果不太好。
测试 AI 质量的选项是(据我所知):
手动 - 精通游戏并要求自己提供反馈。玩完整的游戏和/或从特定位置开始,并确保它不会做非常愚蠢的事情。
基本检查 - 与其他更基本的人工玩家进行测试,以确保它几乎始终获胜。对于更成熟的游戏,您应该能够找到其他人编写的相当不错的 AI。
针对数据进行测试 - 并不真正适用,但可以适用于游戏 - 查找专家玩过的知名游戏实例,并检查您的 AI 是否与专家针对给定的大量动作相匹配位置。
暴力破解 - 检查给定游戏状态(接近尾声)的所有可能性,并客观地确定最佳动作,并将其与您的 AI 所做的进行比较。此外,无论哪种方式,您的代码都应该在最终版本中具有此功能,但您最初不需要此功能,因此您可以执行此检查。这基本上是 mini-max 已经做的,所以它并没有真正的帮助。
人工智能冲刺! - 编写一堆不同的 AI 机器人,它们都使用不同的方法并进行一场巨大的摊牌。
所以,总结一下(针对您的场景),我建议:
自己测试一下。
编写一些非常基本的人工玩家,它们甚至可以随机移动并研究你的 AI 输掉的任何游戏以找出任何缺陷。
特定于 mini-max:
这不是正确 AI(至少在我看来),你只是在探索一些状态并找到最好的状态(所以上面仍然适用,但在很大程度上不是)。您主要担心的是:
(前 3 个是相当标准的 AI 问题)
我的代码正确吗?如果不是这种情况,您应该能够从少数游戏中看到 AI 的愚蠢举动。
我的评估功能是否正确/足够好?这总是可以调整的,但你也可以玩一些游戏来看看它是否可以。
我的 AI 没用 - 我的代码或评估函数有误吗?假设一个体面的实现,如果它总是做出糟糕的举动,那可能是你的代码。如果它做出了一些好的和一些坏的举动,这可能是你的评估功能。但它真的可能是。请记住,评估函数可能比您的所有代码要检查的要少得多。
是否足够快或者我可以更深入地探索?检查需要多长时间。如果是瞬间,您可能可以负担得起将探索深度增加一倍。如果需要几分钟,您可能需要减少探索深度。
【讨论】: