OpenAI MPE&MADDPG 配置和运行
一、Multi-Agent Particle Environment(MPE)
1. 介绍
Multi-Agent Particle Environment(MPE)是由OpenAI开源的一款多智能体强化学习实验平台,以OpenAI的gym为基础,使用Python编写而成。它创造了一个简单的多智能体粒子世界,粒子们可以进行连续的观察和离散的动作。
2. 安装配置
- 实验环境
Python 3.6.4
Windows 10
OpenAI gym 0.10.5
Numpy
Pyglet 1.2.0
- 配置步骤
cd
至根目录下,执行pip install -e .
安装环境。- 执行
pip uninstall pyglet
卸载pyglet1.3.6
- 执行
pip install pyglet==1.2.0
安装pyglet1.2.0
运行程序
python bin/interactive.py --scenario simple.py
3. Demo运行
- 环境说明
二、Multi-Agent Deep Deterministic Policy Gradient (MADDPG)
1. 介绍
Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments提出的MADDPG算法(混合合作-竞争环境下的多智能体Actor-Critic)的代码。必须在Multi-Agent Particle Environments (MPE)的环境运行。
2. 安装配置
- 实验环境
Python 3.6.4
Windows 10
OpenAI gym 0.10.5
Numpy
Tensorflow
Pyglet 1.2.0
- 配置步骤
cd
至根目录下,执行pip install -e .
,安装环境。- 安装
multiagent-particle-envs
,并确保将其添加到PYTHONPATH
环境变量中。 cd
至experiments
目录下,运行程序python train.py --scenario simple
3. 命令参数说明
环境选项
--scenario
: MPE中的环境 (默认:"simple"
)--max-episode-len
环境的每个周期的长度 (默认:25
)--num-episodes
训练周期总数 (默认:60000
)--num-adversaries
: 环境中的adversary数量 (默认:0
)--good-policy
: 环境中good policy算法(默认:"maddpg"
; 选项: {"maddpg"
,"ddpg"
})--adv-policy
: 环境中adversary policy算法(默认:"maddpg"
; 选项: {"maddpg"
,"ddpg"
})
核心训练参数
--lr
: 学习速率 (默认:1e-2
)--gamma
: 损失因子(discount factor) (默认:0.95
)--batch-size
: Batch大小 (默认:1024
)--num-units
: 多层神经网络层数 (默认:64
)
保存
--exp-name
: 实验的名称,用以保存结果。 (默认:None
)--save-dir
: 保存训练结果和模型的位置 (默认:"/tmp/policy/"
)--save-rate
: 模型将会以这个周期频率进行保存 (默认:1000
)--load-dir
: 载入训练结果和模型的位置 (默认:""
)
评估
--restore
: 恢复在load-dir
的训练结果, 并且继续训练 (默认:False
)--display
: 展示训练结果, 但不继续训练 (默认:False
)--benchmark
: 对训练结果进行基准评估, 保存结果到benchmark-dir
文件夹 (默认:False
)--benchmark-iters
: 执行基准评估的训练周期 (默认:100000
)--benchmark-dir
: 存放基准数据的目录 (默认:"./benchmark_files/"
)--plots-dir
: 存放训练曲线的目录 (默认:"./learning_curves/"
)
4. Demo运行
进行训练
python train.py --scenario simple_push --num-episodes 1000000 --exp-name exp1 --save-dir push_dir
训练结果可视化
python train.py --scenario simple_push --load-dir push_dir --display
继续训练
python train.py --scenario simple_push --load-dir push_dir --restore --num-episodes 80000