MPE环境代码解读(MAA2C)

1.代码架构

1.1环境ENV和World对象

make_env.py:包含将多智能体环境作为OpenAI gym类对象导入的代码

方法:def make_env(scenario_name, benchmark=False)

在这里插入图片描述

core.py:包含在整个代码中使用的各种对象(Entities, Landmarks, Agents等)的类。
类:
1.class EntityState(object)#所有实体的物理状态
物理位置p_pos和物理速度p_vel
2.class AgentState(EntityState)#agent状态(包括沟通和内部/精神状态)
通信信息c
3.class Action(object)# agent的动作
物理动作u和通信动作c
4.class Entity(object)# 物理世界实体的属性和状态
移动、碰撞、颜色、速度
5.class Landmark(Entity)# 地标实体的属性
6.class Agent(Entity)# Agent实体的属性
7.class World(object)#多agent世界
rendering.py: 用于在屏幕上显示agent的行为
policy.py: 包含基于键盘输入的交互策略的代码
scenario.py:包含为所有场景扩展的基本场景对象

在这里插入图片描述

World(object)类的world对象相当于环境模拟器,该对象是对特定场景下真实环境的模拟,通过scenario.make_world()方法构造。world对象由一系列不同角色的entities对象组成,这些entites对象分为以下两大类:
Landmark类,属于该类的entites对象属性不会发生变化,相当于物理世界中的静物,例如地标landmark对象,草grass对象,食物food对象等等;
Agent类,属于该类的entites对象属性会不断发生变化,相当于物理世界中的动物,在这里也即关注的智能体agent对象
agent对象还分为两类:
policy_agent:动作由强化学习算法所控制的智能体;
scripted_agent:动作由自定义脚本所控制的智能体

在这里插入图片描述

environment.py:py:包含环境模拟的代码(交互物理,_step()函数等)
env对象由env.world对象与env.agents对象组成,这里的world对象就是上面所介绍的环境模拟器,而agents对象是world中由强化学习所控制的所有智能体world.policy_agents。

在这里插入图片描述

env对象最为关键的三个方法是:
def reset(self):重置环境模拟器world;
def step(self, action_n):更新环境模拟器world;
def render(self, mode='human'):渲染,显示当前环境模拟器状态
可以调用以下方法来获取单个智能体的观测、奖励、info和done:
def _get_obs(self, agent);
def _get_reward(self, agent);
def _get_done(self, agent);
def _get_info(self, agent)。

1.2scenario对象

MPE提供了一系列不同的粒子场景,这些场景全部被放置在scearios文件夹下:
simple、simple_adversary、simple_crypto、simple_push、simple_reference、simple_speaker_listener、simple_spread、simple_tag、simple_world_comm

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值