多智能体MAPPO代码环境配置以及代码讲解

  • MAPPO代码环境配置
    • 代码文件夹内容讲解
    • 配置开始
    • 配置完成后的一些常见问题
    • 小技巧
    • 现在我还在学MAPPO,若还有好技巧会在这篇文章分享,需要MAPPO后期知识的小同学可以关注我哦!

MAPPO代码环境配置

MAPPO是2021年一篇将PPO算法扩展至多智能体的论文,其论文链接地址为:https://arxiv.org/abs/2103.01955
对应的官方代码链接为https://github.com/marlbenchmark/on-policy

代码文件夹内容讲解

所有核心代码都位于 onpolicy 文件夹中。 algorithms/子文件夹包含 MAPPO 的特定于算法的代码。

 envs/ 文件夹包含 MPE、SMAC 和 Hanabi 的环境的实现。用于执行训练部署和策略更新的代码包含在 runner/ 文件夹中 - 每个环境都有一个runner。可以在 scripts/ 文件夹中找到用于使用默认超参数进行训练的可执行脚本。 这些文件按以下方式命名:train_algo_environment.sh。 在每个文件中,映射名称(在 SMAC 和 MPE 的情况下)可以更改。可以在 scripts/train/ 文件夹中找到每个环境的 Python 训练脚本。config.py 文件包含相关的超参数和环境设置。

配置开始

本配置在Ubuntu 16/18/20,可以在CPUGPU上跑程序,本文按照GPU版本配置环境

  1. 创建虚拟环境: conda create -n MAPPO python==3.6.1
  2. 激活环境: conda activate MAPPO
  3. 安装GPU版本的pytorch:torch1.5.1+cuda10.1以及torchision0.6.1+cuda10.1
  4. 下载MAPPO代码后进入on-poilcy文件夹:cd on-policy
  5. 安装本环境:pip install -e
  6. 按照requirement.txt文件选择性安装包,其中tensorboard如果用gpu版本的话:安装tensorboard-gpu2.0.0,然后安装tensorboardX:pip install tensorboardX=2.0.0,若用cpu版本的tensorboard可以pip install tensorboard==1.14
  7. 最后一步:安装seaborn:pip install seaborn
  8. 三步进行运行程序:
  9. cd onpolicy/scripts
  10. chmod +x ./train_mpe.sh
  11. ./train_mpe.sh

配置完成后的一些常见问题

1.出现ImportError: cannot import name ‘get_backend’
解决方法:tensorflow版本问题:sudo pip install tensorflow --upgrade,如果还不行查看:https://stackoverflow.com/questions/54574591/importerror-cannot-import-name-backend以及https://stackoverflow.com/questions/52979322/matplotlib-3-0-0-cannot-import-name-get-backend-from-matplotlib
2.出现TypeError: cannot assign ‘torch.FloatTensor’ as parameter ‘stddev’ (torch.nn.Parameter or None expected)
解决方法:代码的错误,将"onpolicy/algorithms/utils/popart.py"中的 63行代码

self.stddev = (self.mean_sq - self.mean ** 2).sqrt().clamp(min=1e-4)
self.weight = self.weight * old_stddev / self.stddev
self.bias = (old_stddev * self.bias + old_mean - self.mean) / self.stddev

改为:

self.stddev = nn.Parameter((self.mean_sq - self.mean ** 2).sqrt().clamp(min=1e-4))
self.weight = nn.Parameter(self.weight * old_stddev / self.stddev)
self.bias = nn.Parameter((old_stddev * self.bias + old_mean - self.mean) / self.stddev)

最后就可以运行程序了!

小技巧

为了更好的控制代码,能够便利的debug需要对train_mpe.py做些更改:需要在main()中更改

if __name__ == "__main__":if len(sys.argv[1:]) == 0:argv = ['--use_valuenorm', '--use_popart', '--env_name', 'MPE', '--algorithm_name', 'rmappo','--experiment_name', 'check', '--scenario_name', 'simple_spread', '--num_agents', '3','--num_landmarks', '3', '--seed', '1', '--n_training_threads', '1', '--n_rollout_threads','64', '--num_mini_batch', '1', '--episode_length', '25', '--num_env_steps', '2000000','--ppo_epoch', '10', '--use_ReLU', '--gain', '0.01', '--lr', '7e-4', '--critic_lr','7e-4', '--wandb_name', 'zoeyuchao', '--user_name', 'zoeyuchao', '--use_wandb', 'False']else:argv = sys.argv[1:]print(argv)main(argv)

这样就能很好的实现debug了!

现在我还在学MAPPO,若还有好技巧会在这篇文章分享,需要MAPPO后期知识的小同学可以关注我哦!

多智能体MAPPO代码环境配置以及代码讲解相关推荐

  1. Yoshua Bengio团队最新强化学习研究:智能体通过与环境交互,「分离」变化的独立可控因素

    原文来源:arXiv 作者:Valentin Thomas.Emmanuel Bengio∗.William Fedus.Jules Pondard.Philippe Beaudoin.Hugo La ...

  2. (Pytorch)环境配置与代码学习1—边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection

    (Pytorch)环境配置与代码学习1 - 边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection Source code and ...

  3. 多智能体强化学习环境【星际争霸II】SMAC环境配置

    多智能体强化学习这个领域中,很多Paper都使用的一个环境是--星际争多智能体挑战(StarCraft Multi-Agent Challenge, SMAC).最近也配置了这个环境,把中间一些步骤记 ...

  4. 智能体如何应对环境突变:快速感知和自适应

    南栖致力于推动强化学习在现实业务中的落地.在现实场景中,环境往往会不断变化,智能体无法适应变化后的环境,导致其决策失效. 为此,南栖仙策与南京大学团队提出了一种环境敏感的上下文策略学习(environ ...

  5. Android + Appium 自动化测试完整的环境配置及代码详解

    环境的的搭建 参考大神博客:https://www.cnblogs.com/fnng/p/4540731.html 该博客有一套详细的入门教程,奈何时间有点久远有些东西不能用了,但是参考价值还是有滴. ...

  6. 基本的ubunutu命令以及代码环境配置

    0instructions 1.linux 1.1快捷键 1.2进程命令 1.3 find & grep 2.terminal 3.conda 4.jupyter notebook 5.git ...

  7. 【FPN车辆目标检测】数据集获取以及Windows7+TensorFlow+Faster-RCNN+FPN代码环境配置和运行过程实测

    PS 最近在学目标检测想用最新的FPN网络,刚好看到这篇博客https://blog.csdn.net/Angela_qin/article/details/80944604尝试把它复现,说的小白一点 ...

  8. 目标跟踪之LTMU:High-Performance Long-Term Tracking with Meta-Updater环境配置及代码运行

    代码地址:https://github.com/Daikenan/LTMU 论文地址:High-Performance Long-Term Tracking with Meta-Updater LTM ...

  9. Android Studio动态调试smail代码----环境配置

    一.android studio smalidea plugin不能使用 smali语言调试网上都在推荐smalidea这个插件,但是在新版的Android studio 中好像已经不支持了(第一次安 ...

  10. Swim Transformer代码环境配置纪录

    Swim Transformer使用的代码:https://github.com/FZfangzheng/Swin-Transformer-Semantic-Segmentation-Without- ...

最新文章

  1. android H5支付 网络环境未能通过安全验证,请稍后再试
  2. java投票输出票数最高前三名,给你喜欢的作品投票,票数前三名获本平台赠送书一本。|诗花朵朵...
  3. mysql分库分表风险_数据库分库分表存在的问题及解决方案
  4. ei指什么_SCI、EI、SSCI和ISTP的区别!
  5. 锻造「明星产品」的艺术与科学,在于取舍【附乔布斯张小龙的产品设计原则】...
  6. 1.2.1 计算机系统的组成(硬件+软件)
  7. AD20学习笔记4---网表导入及模块化布局设计
  8. 如何在其他类中使用application.properties的属性
  9. 非常实用的Android Studio快捷键
  10. PHP 简体中文繁体互转
  11. 【友元、异常和其他】——C++ Prime Plus CH15
  12. 漫画 | 阿姨,我不想努力了~
  13. 基于微信点餐外卖小程序系统设计与实现 开题报告
  14. 相关性分析和相似度计算
  15. 智能穿戴:致我们触手可及的未来?
  16. ue4导入倾斜摄影_倾斜摄影如何和bim结合?倾斜摄影数据怎么导?我来告诉你!...
  17. luckySheet在线编辑excel及遇到的问题
  18. 2018人工智能商业价值百强企业出炉 中科博宏赫然在列
  19. [软件工具][原创]加减乘除自动出题带答案不重复生成可代替加减法印章使用教程
  20. 求和计算机教案,小学信息技术《自动求和》教案

热门文章

  1. linux 备份文件时加上日期
  2. B2C多用户商城系统源码
  3. 《Java核心技术 卷II》笔记——(12)安全加密
  4. 遗传算法详解及代码实现
  5. 鸟哥的Linux私房菜PDF在线阅读
  6. Java 程序开发设计文档
  7. Linux磁盘分区及文件系统格式化和挂载
  8. ulipad 常用快捷键
  9. java springboot图书借阅管理系统源码
  10. 数字信号处理_实验一_信号、系统及系统响应