江西赣州最新疫情昆明seo推广外包
文章目录
- 一、待解决问题
- 1.1 问题描述
- 1.2 解决方法
- 二、方法详述
- 2.1 必要说明
- 2.2 应用步骤
- 2.2.1 下载light_mappo 源码
- 2.2.2 light_mappo 代码解析
- 三、疑问
- 四、总结
一、待解决问题
1.1 问题描述
由于有自建环境的需求,但想使用MAPPO的算法,但MAPPO benchmark没有可以直接应用的框架,因此在网上参考学习。
1.2 解决方法
(1)下载light_mappo 源码
(2)light_mappo 代码解析
二、方法详述
2.1 必要说明
MAPPO 框架讲解参考链接:多智能体强化学习(二) MAPPO算法详解
MAPPO 框架讲解(视频)参考链接:MAPPO的代码框架解析
light_mappo 源码链接: github/ tinyzqh /light_mappo
2.2 应用步骤
2.2.1 下载light_mappo 源码
根据源码链接下载对应源码,得到目录如下:
首先查看对应
README_CN.md
说明
## 背景MAPPO原版代码对于环境的封装过于复杂,本项目直接将环境封装抽取出来。更加方便将MAPPO代码移植到自己的项目上。## 安装直接将代码下载下来,创建一个Conda环境,然后运行代码,缺啥补啥包。具体什么包以后再添加。## 用法- 环境部分是一个空的的实现,文件`light_mappo/envs/env_core.py`里面环境部分的实现:[Code](https://github.com/tinyzqh/light_mappo/blob/main/envs/env_core.py)import numpy as np
class EnvCore(object):"""# 环境中的智能体"""def __init__(self):self.agent_num = 2 # 设置智能体(小飞机)的个数,这里设置为两个self.obs_dim = 14 # 设置智能体的观测维度self.action_dim = 5 # 设置智能体的动作维度,这里假定为一个五个维度的def reset(self):"""# self.agent_num设定为2个智能体时,返回值为一个list,每个list里面为一个shape = (self.obs_dim, )的观测数据"""sub_agent_obs = []for i in range(self.agent_num):sub_obs = np.random.random(size=(14, ))sub_agent_obs.append(sub_obs)return sub_agent_obsdef step(self, actions):"""# self.agent_num设定为2个智能体时,actions的输入为一个2纬的list,每个list里面为一个shape = (self.action_dim, )的动作数据# 默认参数情况下,输入为一个list,里面含有两个元素,因为动作维度为5,所里每个元素shape = (5, )"""sub_agent_obs = []sub_agent_reward = []sub_agent_done = []sub_agent_info = []for i in range(self.agent_num):sub_agent_obs.append(np.random.random(size=(14,)))sub_agent_reward.append([np.random.rand()])sub_agent_done.append(False)sub_agent_info.append({})return [sub_agent_obs, sub_agent_reward, sub_agent_done, sub_agent_info]只需要编写这一部分的代码,就可以无缝衔接MAPPO。在env_core.py之后,单独提出来了两个文件env_discrete.py和env_continuous.py这两个文件用于封装处理动作空间和离散动作空间。在algorithms/utils/act.py中elif self.continuous_action:这个判断逻辑也是用来处理连续动作空间的。和runner/shared/env_runner.py部分的# TODO 这里改造成自己环境需要的形式即可都是用来处理连续动作空间的。在train.py文件里面,选择注释连续环境,或者离散环境进行demo环境的切换。
核心点总结:
(1)直接下载源码后,创建conda虚拟环境,并运行
light_mappo-main/train/train.py
可直接调用mappo算法,缺少什么包安装什么依赖;
(2)该框架已经把mappo benchmark中的env环境
的代码抽离了出来,可以在light_mappo/envs/env_core.py
源码上修改为自己的env环境
。
2.2.2 light_mappo 代码解析
(后续补充)
三、疑问
暂无。
四、总结
(后续补充)