0

我正在开发一个游戏(坦克游戏 2D),(例如 -链接)AI 播放器。我的玩家将是其他 5 个玩家之一(也是 AI),他们为获得最大硬币而玩游戏,随机出现在网格的某个地方。(看看上面给出的图片)。玩家也可以互相射击。并且健康包也随机出现在网格中的某个位置。

因此,为了使用最小最大树并找出最聪明的下一步行动,我必须构建一个评估函数。问题出现在这里,我以前没有使用过这种评估功能的经验。我应该遵循任何指导方针还是有一种通用的方法来做到这一点我的意思是我有一些想法,我不确定它是否会做工作。你能建议我应该研究哪个领域吗?我用谷歌搜索了很多东西,但没有合适的教程或类似的东西。谢谢你。

4

1 回答 1

5

基本上,对游戏进行评估的最佳做法是:

  • 玩游戏- 试着看看你试图避免哪些情况,哪些是好的。尝试将这些情况制定为一般评估。
  • 研究——有人可能已经研究过这个或类似的问题,如果是这样的话——也许有一些文章或其他材料暗示了一些启发式函数。

我要做的如下:

  1. 创建一组启发式函数,每个函数都描述游戏的一个方面(与最近敌人的距离、敌人的火线、我的生命值条……)。我会玩这个游戏来尽可能地扩展这个列表,当然也会在网上寻找其他人可能会为这个/类似游戏找到的想法。
  2. 从第一步开始,我们实际上得到了一组函数:h_1(board),h_2(board),...,h_n(board)- 但我们仍然不知道我们的启发式函数是什么
  3. 我会尝试找到一些参数a_1,a_2,...,a_n,并创建我的启发式函数:
    h(board) = a_1 * h_1(board) + a_2 * h_2(board) + ... + a_n * h_n(board
    现在的问题是 - 如何获取这些参数。请注意,现在我们有一个优化问题。
    这个特定问题的一个解决方案是蒙特卡洛学习。

蒙特卡洛学习:

蒙特卡洛学习的想法是创建一个代理列表(AI),每个代理都用一些随机值初始化a_1,...,a_n- 并在它们之间进行比赛。
比赛结束后a_1,...,a_n,根据表现最好的代理更改每个代理的值,然后重新运行比赛。(一种方法类似于遗传算法中的“生成”步骤- 交叉和突变,但还有其他方法)。

最后——蒙特卡洛学习过程应该给你很好的价值a_1,...,a_n——这将为你提供一个很好的启发式功能。

于 2012-11-05T18:32:38.113 回答