用于多代理游戏的 Openai 健身房环境

Openai gym environment for multi-agent games

多代理游戏可以使用openai's gym environments吗?具体来说,我想模拟一个有四个玩家(代理人)的纸牌游戏。得分的玩家开始下一回合。我将如何模拟玩家之间必要的协调(例如,下一个轮到谁)?最终,我想在四个相互对抗的智能体上使用强化学习。

OpenAI 团队已经实现了多智能体深度确定性策略梯度 MADDPG 方法。

这是开始的回购协议。 https://github.com/openai/multiagent-particle-envs

强化学习有一个特定的多智能体环境here。它支持以任何编程语言编写的任意数量的代理。示例游戏已经实现,恰好是纸牌游戏。

是的,可以将 OpenAI 健身房环境用于多代理游戏。尽管在继承自 gym.Env 的 OpenAI gym 社区 there is no standardized interface for multi-agent environments, it is easy enough to build an OpenAI gym that supports this. For instance, in OpenAI's recent work on multi-agent particle environments they make a multi-agent environment 中采用以下形式:

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 函数采用一系列动作(每个智能体一个)和 returns 观察列表、奖励列表、完成列表,同时步进环境转发。这个接口代表Markov Game,其中所有agent同时采取行动并且各自观察自己的后续观察,奖励。

但是,这种马尔可夫博弈接口可能并不适合所有的多智能体环境。特别是,回合制游戏(例如纸牌游戏)可能更适合作为 交替 马尔可夫游戏,其中代理人 轮流 (即动作)一次一个。对于这种环境,您可能需要在状态表示中包括轮到哪个代理,然后您的步进函数将只采取一个动作,return 一个观察、奖励和完成。

您正在寻找的是 PettingZoo,它是一组具有多代理设置的环境,并且它们具有特定的 class / synthax 来处理多代理环境。

这是一个有趣的库,因为您还可以将它与 ray / rllib 一起使用,以使用已经实现的算法,如 PPO / Q-learning。像这样 exemple.

Rllib 也有针对多代理环境的实现。但是您必须深入研究文档才能理解它。