文章目录

  • 概述
  • 游戏环境
  • 安装 PettingZoo
  • 导入包
  • 初始化环境
  • 与环境交互

概述

PettingZoo1 类似于 Gym 的多智能体版本。Gym2是 OpenAI 开发的一个著名的强化学习库,它为环境提供了标准的 API,可以轻松地使用不同的强化学习代码库进行学习。

文档:https://www.pettingzoo.ml
代码:https://github.com/Farama-Foundation/PettingZoo

但是当前大多数单智能体环境库存在一些问题。

  1. 基于POSG(partially observable stochastic game)的环境库,例如Gym,所有的智能体一起行动、一起观察、一起得到奖励。但是这种库对回合制游戏支持不好,且无法更改智能体的数量。这类库由于难以处理智能体回合顺序、智能体死亡和创建这类数量上的变化,难以扩展到超过两个智能体的范畴。
  2. 基于扩展式博弈(EFG)的环境库,由于模型复杂、当前应用面不广。当前基于EFG的库只有OpenSpiel API3,这个库的局限性在于无法处理连续动作。且EFG游戏结束时才有奖励,而强化学习通常需要频繁的奖励。

因此,为了解决上述问题,PettingZoo引入了AEG(Agent Environment Cycle games)作为PettingZoo API的基础。在AEG模型中,智能体依次看到他们的观察结果、采取行动,从其他智能体发出奖励,并选择下一个要采取行动的智能体。这实际上是POSG模型的一个顺序步进形式


按顺序步进形式建模多智能体环境有许多好处:

  • 可以更清楚地将奖励归因到不同的来源,并允许各种学习改进
  • 可以防止开发人员添加混乱和竞争条件
  • 可以在每一步之后获得奖励,而这是EFG模型通常不具备的
  • 更改智能体死亡或创建的数量更容易,学习代码不需要考虑到不断变化的列表大小
  • 同时步进需要有无操作选项,如果不是所有的智能体都可以行动,这是非常难以处理的,而顺序步进可以同时操作并且排队处理它们的操作

PettingZoo的设计还考虑了以下原则:

  1. 尽可能重用Gym的设计,并且使API成为标准化
  2. 具有大量智能体的环境
  3. 具有智能体死亡和创建的环境
  4. 不同的智能体可以选择参与每个episode
  5. 学习方法需要访问低级别特征学习方法

游戏环境

当前PettingZoo支持的多智能体游戏环境如下表所示。

游戏环境 示例图
Atari: Multi-player Atari 2600 games (包含合作、竞争、混合环境)
pip install pettingzoo[sisl]
Butterfly: 合作式游戏
pip install pettingzoo[butterfly]
Classic: 经典游戏,比如棋牌、卡牌游戏等。
pip install pettingzoo[classic]
MAgent: 网格世界中的大量像素智能体,在战斗或其他竞争场景中进行交互。4
pip install pettingzoo[magent]
MPE: 一组面向通信的粒子环境,粒子可以移动、通信、互相看到、互相推动,并与固定的地标交互。5
pip install pettingzoo[mpe]
SISL: 3个合作环境 6
pip install pettingzoo[sisl]

安装 PettingZoo

配置虚拟环境7

# create venv
python3 -m venv marl-env
# active venv
source marl-env/bin/activate
# upgrade really old pip version on my system
pip install --upgrade pip

安装pettingzoo包:

# install packages
pip install pettingzoo[classic]
pip install spyder-notebook
pip install dill

导入包

import random
import numpy as np
from collections import defaultdict
import dill

初始化环境

from pettingzoo.classic import tictactoe_v3
env = tictactoe_v3.env()

有的环境可以在初始化时进行参数配置:

cooperative_pong.env(ball_speed=18, left_paddle_speed=25,
right_paddle_speed=25, is_cake_paddle=True, max_cycles=900, bounce_randomness=False)

与环境交互

env.reset()
for agent in env.agent_iter():observation, reward, done, info = env.last()action = policy(observation, agent)env.step(action)

这段代码中,agent_iter(max_iter=2**63)返回一个迭代器,它产生环境的当前智能体。max_iter它在环境中的所有代理都完成或(已执行步骤)时终止。

last(observe=True) 返回 observation, reward, done, info,代表当前能够行动的代理。返回的奖励是代理自上次行动以来收到的累积奖励。如果 observe 设置为False,则不会计算观测值,并将None在其位置返回。请注意,完成单个代理并不意味着环境已完成。

reset() 重置环境,并在第一次调用时设置它以供使用。只有在调用此函数后,对象才会agents变得可用。

step(action)在环境中采取并执行代理的动作,自动将控制权切换到下一个代理。

agent_selection 显示当前选择的代理。

agents 列出所有可用的代理。

完整 API 文档:
https://www.pettingzoo.ml/api


  1. https://arxiv.org/abs/2009.14471 ↩︎

  2. https://github.com/openai/gym ↩︎

  3. https://www.deepmind.com/open-source/openspiel ↩︎

  4. https://github.com/geek-ai/MAgent ↩︎

  5. https://github.com/openai/multiagent-particle-envs ↩︎

  6. https://github.com/sisl/MADRL ↩︎

  7. https://www.pettingzoo.ml/tutorials ↩︎

PettingZoo:多智能体游戏环境库入门相关推荐

  1. “弱肉强食,月半者为王” | OpenDILab推出多智能体博弈环境Go-Bigger

    关注公众号,发现CV技术之美 多智能体对抗作为决策AI中重要的部分,也是强化学习领域的难题之一. 为丰富多智能体对抗环境,OpenDILab(开源决策智能平台)开源了一款趣味多智能体对抗竞技游戏环境- ...

  2. 强化学习基础1.1 | 智能体与环境交互过程

    强化学习的过程是agent与环境不断交互的过程,从环境得到反馈,然后来改变自己的行动. 智能体首先接受环境的状态S0 智能体在S0的环境下采取行动A0 环境收到智能体的行动后从S0 变化到S1 环境对 ...

  3. 【清华伯克利】提出全新算法RPG,通过奖励随机化发现多智能体游戏中多样性策略行为。

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 作者:本文转载自机器之心 编辑.排版:DeepRL ...

  4. 通过图注意力神经网络进行多智能体游戏抽象_[读论文] AttnPath: 将图注意力机制融入基于深度强化学习的知识图谱推理中...

    论文原文:Incorporating Graph Attention Mechanism into Knowledge Graph Reasoning Based on Deep Reinforcem ...

  5. 多智能体仿真环境NetLogo介绍之导入外部数据

    NetLogo Nw Extension 首先我们需要理解的是,为了使用network extension,如何告诉extension要使用哪个network.先考虑下面例子中的情形: breed [ ...

  6. Retro-用于强化学习智能体训练的各种有趣的游戏环境集合

    目录 步骤 安装 测试 查看游戏列表 issue 一.单智能体环境 90后大概都玩过的游戏环境 冒险岛系列 忍者神龟 二.多智能体环境 https://openai.com/blog/gym-retr ...

  7. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  8. 五分钟教你在Go-Bigger中设计自己的游戏AI智能体

    多智能体对抗作为决策AI中重要的部分,也是强化学习领域的难题之一. 为丰富多智能体对抗环境,OpenDILab(开源决策智能平台)开源了一款趣味多智能体对抗竞技游戏环境--Go-Bigger.同时,G ...

  9. 基于通用学习环境和多智能体深度强化学习的列车运行图

    ‍ 1. 文章信息 <Train timetabling with the general learning environment and multi-agent deep reinforce ...

最新文章

  1. eclipse中运行tomcat提示端口被占的4种解决方案
  2. 中业科技机器人价格_协作机器人售价持续走低 本土厂商该如何发力
  3. 什么是XSS攻击XSS攻击应用场景
  4. day24 01 初识继承
  5. 踩坑日记(二):记一次线上业务—Redis 的缓存雪崩
  6. Linux时间操作(time、gettimeofday)
  7. CGAL几何库配置教程
  8. 使用C++编写卷积神经网络(一)
  9. chrome浏览器的跨域问题解决
  10. 微信小程序前四周内容总结
  11. 实用化工计算机模拟-matlab在化学工程中的应用的光盘程序_这150款化工常用软件,你会用多少?...
  12. 《统计学习方法(第二版)》学习笔记 第五章 决策树
  13. 多元函数微分学小结(2):从反函数定理到隐函数存在定理
  14. 怎么用c语言编辑出天依蓝,我天依蓝
  15. 人类数据总量_人类已产生五十亿GB数据 X一代贡献的数据总量最大
  16. 手把手带你YOLOv5 (v6.1)添加注意力机制(二)(在C3模块中加入注意力机制)
  17. 微信不会把关注取消事件推送给服务器,微信公众平台开发关注及取消关注事件的方法...
  18. java bmp 变色_java将图片(jpg/bmp/png)转16位bmp(RBG565)
  19. 全新 App Store 发布!全新设计、每日推荐、游戏独立
  20. Esxi 6.7使用 OVF Tool 导出 ova

热门文章

  1. 线上AI僚机,告诉你对方喜好,手把手教你如何正确约会
  2. 微软手环2服务器,数据狂的最爱 微软手环2评测
  3. 2020我也当了面试官-java面试题之一
  4. 第13天 缓冲、转换、对象(序列化)和打印流
  5. 二叉树的简介、特点及二叉树存储结构’
  6. bad_pool_caller蓝屏故障分析
  7. V部落-微信小程序版博客
  8. Windows下LATEX排版论文攻略—CTeX、JabRef使用心得, 包括 IEEEtran.bst
  9. torch基本功能介绍
  10. TLV2333IDR的工作原理?