是否可以将openai的健身房环境用于多智能体游戏?具体来说,我想模拟一个有四个玩家(代理人)的纸牌游戏。得分一回合的玩家开始下一回合。我将如何模拟玩家之间的必要协调(例如下一个轮到谁)?最终,我想在四个相互对抗的代理上使用强化学习。
4 回答
是的,可以将 OpenAI 健身房环境用于多智能体游戏。尽管在 OpenAI gym 社区中没有针对多智能体环境的标准化接口,但构建一个支持这一点的 OpenAI gym 很容易。例如,在 OpenAI最近关于多智能体粒子环境的工作中,他们创建了一个多智能体环境gym.Env
,该环境采用以下形式继承:
class MultiAgentEnv(gym.Env):
def step(self, action_n):
obs_n = list()
reward_n = list()
done_n = list()
info_n = {'n': []}
# ...
return obs_n, reward_n, done_n, info_n
我们可以看到,该step
函数采用一系列操作(每个代理一个)并返回观察列表、奖励列表、完成列表,同时将环境向前推进。这个界面是马尔可夫博弈的代表,所有的智能体同时采取行动,每个人都观察自己的后续观察,奖励。
但是,这种马尔可夫博弈界面可能并不适合所有的多智能体环境。特别是,基于回合的游戏(例如纸牌游戏)可能更好地转换为交替马尔可夫游戏,其中代理一次轮流(即行动)一个。对于这种环境,您可能需要在状态表示中包含轮到哪个代理,然后您的 step 函数将只采取一个动作,并返回一个单一的观察、奖励和完成。
OpenAI 团队已经实现了一种多智能体深度确定性策略梯度 MADDPG 方法。
这里有一个用于强化学习的特定多智能体环境。它支持以任何编程语言编写的任意数量的代理。一个示例游戏已经实现,它恰好是纸牌游戏。
您正在寻找的是PettingZoo,它是一组具有多代理设置的环境,并且它们具有特定的类/合成器来处理多代理环境。
这是一个有趣的库,因为您还可以将它与 ray / rllib 一起使用,以使用已经实现的算法,如 PPO / Q-learning。就像在这个例子中一样。
Rllib也有一个多代理环境的实现。但是您必须深入研究文档才能理解它。