我有一个关于我正在制作的棋盘游戏的问题。我计划使用带有AlphaBeta的MiniMax为游戏制作一个人工玩家,但是我不确定如何评估玩家是否擅长游戏。由于它是一款新游戏,我无法让一个善于提供反馈的玩家。因此,我想知道是否有任何技术可以客观地确定人工玩家是否真的好。 提前谢谢。
答案 0 :(得分:3)
适当的自动化测试AI的质量很困难,因为你必须拥有与AI相比更好或更好的东西(至少在某些位置 - 有时候会出现明显的愚蠢动作,这并不难以手动完成),所以,你必须写出比你的人工智能更好的人工智能,你必须通过编写更好的人工智能来测试,你必须测试......好吧,至少可以说,这显然是赢了“工作得很好。
测试AI质量的选项是(据我所知):
手动 - 擅长游戏,并要求自己提供反馈。玩完整的游戏和/或从特定的位置开始,并确保它不会做真正愚蠢的事情。
基本检查 - 针对其他更基本的人工玩家进行测试,以确保它几乎始终获胜。对于更成熟的游戏,你应该能够找到其他人写的相当不错的AI。
对数据进行测试 - 不是真的适用,但可以在游戏中使用 - 查找专家玩过的众所周知的游戏实例,并检查您的AI是否符合专家对给定的大量动作位置。
蛮力 - 检查给定游戏状态的所有可能性(接近结束)并客观地确定最佳移动,将其与您的AI进行比较。此外,您的代码应该在最终版本中以这种方式进行,但您最初不需要这样,因此您可以执行此检查。这基本上就是mini-max的功能,所以它并没有真正帮助。
AI急! - 写一堆不同的AI机器人,都使用不同的方法,并有一个巨大的显示。
所以,总结一下(对于你的场景),我建议:
自己测试一下。
写一些非常基本的人工玩家,甚至可以随意移动并研究你的AI失去的任何游戏以找到任何缺陷。
特定于mini-max:
这不是正确的 AI(至少在我看来),你只是在探索一些状态并找到最好的状态(所以上面仍然适用,但不是很大程度上)。您主要担心的是:
(前3个是相当标准的AI问题)
我的代码是对的吗?如果情况并非如此,你应该能够从少数几个游戏中看到人工智能的愚蠢行为。
我的评估功能是否正确/足够好?这可以随时调整,但你也可以玩一些游戏来确定它是否正常。
我的AI没用 - 我的代码或我的评估函数是错误的吗?假设一个不错的实现,如果它一直在做坏事,那可能是你的代码。如果它做了一些好的和一些不好的动作,它可能是你的评价功能。但它确实可能是。请记住,评估函数可能比您的所有代码要少得多。
它足够快还是我可以深入探索?检查需要多长时间。如果它是瞬间,您可以将探索深度增加一个。如果需要几分钟,您可能希望减少探索深度。