IC3Net 开源项目教程
项目介绍
IC3Net 是一个用于多智能体合作与竞争任务的网络,旨在学习在规模化场景中何时进行通信。该项目在 ICLR 2019 被接受,并提供了多种任务的实现,包括 StarCraft BroodWar 探索和战斗场景。IC3Net 通过一个门控机制控制连续通信,并使用每个智能体的个性化奖励来提高性能和可扩展性,同时解决信用分配问题。
项目快速启动
安装
-
克隆仓库:
git clone https://github.com/IC3Net/IC3Net.git cd IC3Net
-
安装环境:
cd ic3net-envs python setup.py develop
-
安装依赖:
pip install -r requirements.txt
运行示例
Predator-Prey 任务(简单版本):
python main.py --env_name predator_prey --nagents 3 --nprocesses 16 --num_epochs 2000 --hid_size 128 --detach_gap
应用案例和最佳实践
案例一:StarCraft BroodWar 探索
IC3Net 在 StarCraft BroodWar 探索任务中表现出色,通过学习何时进行通信,智能体能够更有效地探索地图并发现资源。
案例二:多智能体战斗
在多智能体战斗场景中,IC3Net 通过智能体之间的有效通信,提高了战斗的协同效率,减少了不必要的资源消耗。
最佳实践
- 参数调优:根据具体任务调整
nagents
、nprocesses
和num_epochs
等参数,以达到最佳性能。 - 环境配置:确保环境配置正确,特别是在多核机器上运行时,使用
OMP_NUM_THREADS=1
限制线程数。
典型生态项目
gym-starcraft
gym-starcraft
是一个用于 StarCraft 环境的 Gym 接口,提供了丰富的 StarCraft 任务和场景,与 IC3Net 结合使用可以实现更复杂的多智能体任务。
ic3net-envs
ic3net-envs
包含了 IC3Net 的多种环境实现,如 Predator-Prey 和 Traffic-Junction,为 IC3Net 提供了多样化的测试场景。
通过这些生态项目的结合使用,可以进一步扩展 IC3Net 的应用范围和性能。