如何定义 Agar.io 状态和动作空间?

人工智能 神经网络 强化学习 深度学习 游戏-ai
2021-11-12 04:24:46

我正在尝试使用深度神经网络为我的 Agar.io 克隆实现 AI 机器人。
但是,我正在为 AI 机器人的状态和动作空间而苦苦挣扎。
因为机器人可以用实数表示位置和速度,我可以说状态空间是连续的吗?
对于动作空间,我在想类似的东西(velocityX,velocityY,“split to half”,“eject mass”)。
我的神经网络的输入层中输入节点的数量应该是多少?这些输入是什么(观察、奖励)?
随着玩家数量和 AI 机器人数量的变化,如何训练一个输入节点数量变化的动态网络?
对于输出,我怎样才能获得像速度这样的连续动作输出?

作为参考,您可以从这个简短的 youtube 视频中了解游戏规则:
琼脂的 20 条规则和游戏机制(如何玩 Agar.io)

1个回答

状态空间当然是连续的,假设你能以某种方式为 AI 提供精确坐标。如果您无法访问此信息,您可能不得不求助于 CNN。对于动作空间,您应该考虑游戏的实际运行方式。由于您使用鼠标来简单地显示方向,因此您可以使用鼠标的 (x,y) 位置作为动作,甚至只是角度θ鼠标光标在代理周围一圈。如果您在网站上玩,那么您的观察必须来自CNN,应该可以将分数用作您的奖励,以及吃东西的可能性或与更大或更小的对手的距离作为中间奖励。网络中的节点数量是你必须通过实验找到的东西,你可能想研究其他人在这个领域使用了什么样的架构。您不需要考虑不同数量的玩家。不需要做任何特别的事情来让单个节点给出一个连续的输出来表示角度θ,或者两个代表 x 和 y 的节点。然后,您可以使用 tanh 或 sigmoid 来限制弹出和拆分操作的输出节点值。