PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning 代码解析
目录
- 1. 准备工作
- 1.1 配置环境:
- 1.2 调试代码
- 1.3 linux环境安装boost:
- 2.代码解析:
- 2.1 setup.py
- 2.2 A3C_RNN.py
- 2.3 ACNet.py
- 2.4 mapf_gym环境
- 2.4.1 mapf_gym与mapf_gym_cap区别
- 2.4.2 搭建环境
- 2.5 mapgenerator.py
- 2.6 primal_testing.py
- 2.7 unittest
- GroupLock.py
- 3.报错合集:
论文名称:PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning
论文地址:https://arxiv.org/abs/1809.03531
代码地址:https://github.com/gsartoretti/PRIMAL
相关链接:无人驾驶动态避障策略调研 | 机器人动态避障策略 | 行人轨迹预测 | 机器人导航,三篇强化学习用于多智能体路径规划的论文
1. 准备工作
1.1 配置环境:
- 先新建一个环境:
conda create --name PRIMAL python=3.6
- 新建一个
requirements.txt
文件,把要安装的包都放进去,再运行pip install -r requirements
安装包:
Cython==0.28.4
gym==0.9.4
Tensorflow==1.13.0
numpy==1.16.0
matplotlib
imageio
tk
networkx
注:源代码中是python3.4 + tf 1.3 + numpy 1.13,但是因为我的pycharm版本较高,不能兼容低版本python,因此我配的是python 3.6;py3.6无法兼容1.3版本的tensorflow,因此我又换成了1.13版本的tf。
3. 如果安装失败,也可以一个一个安装(我采用的方法)
注:直接pip或者conda安装不了gym时,可以尝试以下两种方法:conda install -c conda-forge gym=0.9.4
或者 pip install gym -i https://pypi.tuna.tsinghua.edu.cn/simple
安装tensorflow出问题时,可以执行以下两句 conda install cudatoolkit=10.0
conda install tensorflow==1.13.1
4. 安装完成后,可以使用conda list
命令检查是否都安装上了:
1.2 调试代码
安装
readme
文件中的步骤一步一步来:
① 命令行窗口进入cd od_mstar3
文件夹,python setup.py build_ext --inplace
;报错了error: Unable to find vcvarsall.bat
网上搜了一下,发现是需要安装Visual Studio,并且在安装时需要勾选 C++组件。如果安装时没有勾选,应当在工具栏中重新安装,之后重启就有vcvarsall模块了。参考文章:已安装vs2017 仍然报错Unable to find vcvarsall.bat然而,装了之后还是报错 o(╥﹏╥)o,参照:关于error: Unable to find vcvarsall.bat,我将
msvc9compiler.py
文件中的find_vcvarsall
函数return改成return r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat"
其他参考文章:Unable to find vcvarsall.bat?改好
vcvarsall.bat
的bug后,又有了一个新bug:fatal error C1083: 无法打开包括文件: “boost/graph/graph_traits.hpp”: No such file or directory
。 网上查了一下,这是C++里的BGL库,需要自己下载安装。寻路时会用到它。Boost C++ Libraries 编译安装,oost下载安装编译配置使用指南(含Windows和Linux)
① 在官网中下载了boost_1_53_.zip
,解压运行bootstrap.bat
的时候报错了 boost 编译时出错处理:Failed to build Boost.Build engine。查阅了很多资料,还是没解决,于是决定下载最新版本的boost工具包。
安装时再次报错,fatal error C1083: 无法打开包括文件: “corecrt.h
,Windows 原生 cmd 窗口下编译 C++(cl命令)出现的问题及解决方法② 朋友安装的Visual Studio 2022,能够顺利装上boost,因此我也重新安装了vs2022。啊!终于可以啦!!
boost工具安装教程,官方安装教程。
1.3 linux环境安装boost:
!!!!linux环境直接使用sudo apt-get install boost
命令就可以安装了! https://stackoverflow.com/questions/12578499/how-to-install-boost-on-ubuntu
2.代码解析:
2.1 setup.py
按照作者的要求,应该先运行这个文件~
setup.py
是调用cpython
,用 Python 的语法混合编写 Python 和 C/C++ 代码,提升 Python 速度
调用 C/C++ 代码 教程,Cython 基本用法 。
本代码中是运行cpython_od_matar.pyx
这个文件,其中的find_path(world, init_pos, goals, inflation, time_limit)
函数是使用ODrM算法进行探索。ODrM相当于专家,generate a high-quality paths。
输入输出:
world - matrix specifying obstacles, 1 for obstacle, 0 for freeinit_pos - [[x, y], ...] specifying start position for each robotgoals - [[x, y], ...] specifying goal position for each robotinflation - inflation factor for heuristictime_limit - time until failure in secondsreturns:[[[x1, y1], ...], [[x2, y2], ...], ...] path in the jointconfiguration space
2.2 A3C_RNN.py
因为pycharm在服务器运行jupyter文件有点麻烦,我将DRLMAPF_A3C_RNN.ipynb
文件改成了A3C_RNN.py
文件。这部分负责训练模型
2.3 ACNet.py
ACNet.py
中的_build_net()
函数对应着论文中的网络结构:
2.4 mapf_gym环境
2.4.1 mapf_gym与mapf_gym_cap区别
继承了gym
库,用于搭建环境
奇怪的是,它与mapf_gym_cap.py
中代码几乎一样,只是_observe()
函数不太一样:
mapf_gym
中限制了mag
(agent距离goal的位置)的大小,应该就是视野受限吧:
github中对这两个文件的解释是:
mapf_gym
:Multi-agent path planning gym environment, in which agents learn collective path planning
mapf_gym_cap.py
:Multi-agent path planning gym environment, with capped goal distance state value for validation in larger environments
看了一下代码,训练的时候调用的是mapf_gym
,测试的时候是mapf_gym_cap.py
直接运行这两个代码会报错NameError: name 'coordinationRatio' is not defined
,没查到coordinationRatio这个函数是干什么的,我就把对应的代码print(coordinationRatio(env))
注释掉了。
2.4.2 搭建环境
A3C_RNN.py
中创建环境:gym=mapf_gym.MAPFEnv(num_agents=n, world0=world[0],goals0=world[1])
2.5 mapgenerator.py
利用tk()
库,生成环境,即手动设置obstacle,agent的位置
2.6 primal_testing.py
加载模型,进行测试,报错[Errno 2] No such file or directory: 'saved_environments/4_agents_10_size_0_density_id_0_environment.npy'
,没找到哪里会生成这个文件呀。
2.7 unittest
报错:pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"
,网上说直接在终端跑就行了
But,在终端跑,也报错your graphic drives do not support OpenGL 2.0
,网上查了一下,得有GPU才行。
① 试试这个方法:用虚拟形式的图像渲染方式在server端启动虚拟化的图形渲染;没有用。。。
② 再试试这个pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to “None” ,装了一半发现也需要GPU才行
重新看了看代码,发现作者一开始是注释掉了from gym.envs.classic_control import rendering
这个包,于是我也注释掉了。。。 可是注释掉之后,就看不见图形化界面了啊。
GroupLock.py
负责多线程:
Python多线程编程(一):threading 模块 Thread 类的用法详解
Python 多线程编程(二):threading 模块中 Lock 类的用法详解
【python】详解threading模块:Condition类的使用(三)
3.报错合集:
- 报错 Connection to Python debugger failed: Socket operation on nonsocket: configureBlocking
ImportError: DLL load failed: 找不到指定的模块。
解决办法:重新安装numpy和tensorflow- 运行
mapgenerator.py
代码时报错:TclError: no display name and no $DISPLAY environment variable
,解决办法 手动指定显示设备: ① 终端输入printenv grep DISPLAY
,查看版本,我这边输出是localhost:10.0
;② 再将root = Tk()
改成root = Tk(screenName = ':10.0')
③ import的部分加上import matplotlib
,matplotlib.use('Agg')
PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning 代码解析相关推荐
- php 获取agent,PHP代码 解析HTTP_USER_AGENT 获取客户端操作系统
** * 获取客户端操作系统信息包括win10 * @param null * @author Jea杨 * @return string */ function GetOS(){ $agent ...
- 多智能体强化学习Multi agent,多任务强化学习Multi task以及多智能体多任务强化学习Multi agent Multi task概述
概述 在我之前的工作中,我自己总结了一些多智能体强化学习的算法和通俗的理解. 首先,关于题目中提到的这三个家伙,大家首先想到的就是强化学习的五件套: 状态:s 奖励:r 动作值:Q 状态值:V 策略: ...
- 【论文笔记】Reinforcement and Imitation Learning for Diverse Visuomotor Skills
目录 Abstract Introduction Related Work Model A. Background: GAIL and PPO 1. 行为克隆(Behavior Cloning) 2. ...
- Multi task learning多任务学习背景简介
2020-06-16 23:22:33 本篇文章将介绍在机器学习中效果比较好的一种模式,多任务学习(Multi task Learning,MTL).已经有一篇机器之心翻译的很好的博文介绍多任务学习了 ...
- professor‘s great paper in multi agent system
http://people.csail.mit.edu/brooks/papers/AIM-864.pdf
- multi agent system university of liverpool professional presentation
https://cgi.csc.liv.ac.uk/~trp/COMP310.html
- Multi Task Learning在工业界如何更胜一筹
摘要: 本文主要介绍多任务学习和单任务学习的对比优势以及在工业界的一些使用.如何从单任务学习转变为多任务学习?怎样使AUC和预估的准确率达到最佳?如何对实时性要求较高的在线应用更加友好?本文将以淘宝实 ...
- 多示例学习(Multi Instance Learning)和 弱监督学习(Weakly Supervised Learning)
目录 弱监督: 多示例学习: 弱监督: 1. 弱在缺标签:标签是不完全的,有的有标签,有的无标签 2. 弱在标签不准确:有的标签正确,有的标签错误 3. 弱在标签不精准: 标签不是在样本上,而是在更高 ...
- 三篇强化学习用于多智能体路径规划的论文
Multi-Robot Path Planning Method Using Reinforcement Learning 期刊:applied science MDPI 总结:使用VGG进行特征提取 ...
最新文章
- netbeans7.4_NetBeans 7.1:创建自定义提示
- 分布式锁(基于redis和zookeeper)详解
- html 鼠标图标做成动画效果,纯css3实现的鼠标悬停动画按钮
- 转:关掉Archlinux中烦人的响铃
- ftk学习记(image显示篇)
- Linux系统下强制踢掉登录用户
- 在vue中使用axios发送post请求,参数方式
- sublime编辑器修改默认的Tab缩进风格
- 图片保存为YUV格式
- 实验七matlab数值计算,数学应用软件实验报告---MATLAB的数值计算
- SecureCRT 过期
- 体脂率在线计算机,在线体脂率计算器 男性15%~18%若体脂率过
- Langlands纲领介绍
- iOS 警告 Local declaration of 'XXX' hides instance
- 青龙面板跑爱企查脚本 兑换爱奇艺月卡 百度网盘会员等
- 鸿蒙系统magic4.0,Magic UI 4.0正式版
- slave是什么意思详细介绍
- 计算机的电子表格英文,Excel电子表格规范的实用方法(中英文对照).pdf
- 投资理财——量化交易角度理解宏观概念
- 【Joy of Cryptography 读书笔记】Chapter 1 一次性密码本(one-time pad)Kerckhoffs原则
热门文章
- 大白菜制作多系统启动U盘(win+ubuntu+PE)
- 贾跃亭败诉,法拉第未来还有多少未来? | 一点财经
- Java| eclipse控制台不见了怎么办
- 安捷影音播放器 v16.0.3 官方版
- 最佳iOS设备管理器imazing 2.16.9官网Mac/Windows下载电脑版怎么下载安装
- 正经科普 | PAPI灯是啥玩意儿
- 《人月神话》(The Mythical Man-Month)5画蛇添足(The Second-System Effect)
- consul的kv使用
- 汽修管理系统c语言,汽车维修人员请进
- BCT8933 、QFN3x3-20L 主要替换艾为的AW8733