【发布时间】:2012-10-25 15:02:57
【问题描述】:
我正在开发一款游戏(Tank Game 2D),(例如 - link)AI 玩家。我的玩家将是其他 5 个玩家之一(也是 AI),他们为获得最大硬币而玩游戏,随机出现在网格的某个地方。(看看上面给出的图片)。玩家也可以互相射击。并且健康包也随机出现在网格中的某个位置。
因此,为了使用最小最大树并找出最聪明的下一步,我必须构建一个评估函数。问题出现在这里,我以前没有使用过这种评估功能的经验。我应该遵循任何指导方针还是有一种通用的方法来做到这一点我的意思是我有一些想法,我不确定它是否会做工作。你能建议我应该研究哪个领域吗?我用谷歌搜索了很多东西,但没有合适的教程或类似的东西。谢谢。
【问题讨论】:
-
那么,问题是,如何编写评估函数?有很多这样的例子,但它们显然是专门针对其领域的。棋盘评估功能在这里不会对您有太大帮助。告诉我们您的想法。
-
是的,国际象棋评估功能无济于事。我想到了这样的事情。我必须优先考虑玩家的需求。最大的优先级是不应该杀死玩家,所以如果其他玩家向我开枪,我应该立即离开子弹的轨迹。接下来是收集硬币。同样,我可以优先考虑需求并为每个需求分配一个恒定值。评估是这样发生的,它将返回每个需要的乘积之和与相应的常数值。最大优先需求将获得更高价值的常数。
-
听起来不错。似乎您的优先事项应该根据您的健康状况而有所不同。如果您的健康状况非常好,那么追求健康包应该是非常低的优先级。但是,如果你在死亡的门口,那么追求健康包可能比硬币更有价值。
-
你可以做的是通过让 AI 自己玩很多很多次来试验不同的评估功能。最成功的代理人应该提升他们的评估功能。您可以通过扰乱成功的评估函数并将它们与原始函数进行对比来让 AI 进行自我训练。如果新功能胜过旧功能,则提升新功能并降低旧功能。
标签: algorithm artificial-intelligence evaluation minmax