【问题标题】:Openai gym environment for multi-agent games用于多智能体游戏的 Openai 健身房环境
【发布时间】:2017-11-06 06:51:32
【问题描述】:

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

【问题讨论】:

  • 我也在尝试,希望使用 keras-rl。
  • 一段时间后回到我的问题,看起来ray.readthedocs.io/en/latest/rllib.html 是一个相当有趣的库,可以使用 Openai 健身房环境进行多智能体强化学习

标签: reinforcement-learning openai-gym


【解决方案1】:

您正在寻找的是PettingZoo,它是一组具有多代理设置的环境,它们有一个特定的类/合成器来处理多代理环境。

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

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

【讨论】:

    【解决方案2】:

    是的,可以将 OpenAI 健身房环境用于多智能体游戏。尽管在 OpenAI 健身房社区 there is no standardized interface 中用于多智能体环境,但构建一个支持此功能的 OpenAI 健身房很容易。例如,在 OpenAI 的多智能体粒子环境 they make a multi-agent environment 上的 recent work 中,它继承自 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 函数接受一个动作列表(每个代理一个)并返回一个观察列表、奖励列表、完成列表,同时推动环境向前发展。这个接口代表Markov Game,其中所有代理同时采取行动,每个人都观察自己的后续观察,奖励。

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

    【讨论】:

    • 回合制阶梯函数是否适用于奖励不是“零和”的游戏?也许这更多地与代理的设计有关,而不是与环境有关。似乎在非零和游戏中,代理可以学会相互勾结,人为地给对方更高的分数,通过环境泄露勾结信息。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-30
        • 2017-12-17
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        相关资源
        最近更新 更多