news 2026/10/22 12:24:26

MAgent2 Tiger_Deer环境深度剖析:121个智能体的捕猎博弈如何训练协同攻击与逃跑策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MAgent2 Tiger_Deer环境深度剖析:121个智能体的捕猎博弈如何训练协同攻击与逃跑策略

【免费下载链接】MAgent2

An engine for high performance multi-agent environments with very large numbers of agents, along with a set of reference environments

项目地址:https://gitcode.com/gh_mirrors/ma/MAgent2
点击查看免费下载

🐯 MAgent2 是一款面向大规模多智能体强化学习的高性能网格世界(GridWorld)环境引擎,其内置的Tiger_Deer 环境用 101 只鹿(deer)与 20 只虎(tiger)共121 个智能体,上演一场"围猎 vs 逃生"的持续博弈。本文带你从零看懂这套环境的规则设计、奖励机制与空间结构,理解它为什么是训练协同攻击与逃跑策略的经典基准。

一、Tiger_Deer 环境是什么?

Tiger_Deer 是 MAgent2 提供的六套参考环境之一(源码位于 magent2/environments/tiger_deer/tiger_deer.py),它的核心设定只有一句话:

老虎必须两人同时攻击同一只鹿才能获得奖励,否则只能慢慢"饿死";鹿则必须躲开老虎的围猎。

这套设定看似简单,却同时逼出两类高阶行为:

阵营数量生存压力要学到的能力
🐯 虎(tiger)20每回合 −0.1 HP,不捕猎会饿死组队、包抄、协同攻击
🦌 鹿(deer)101被攻击 −0.1 HP,阵亡 −1感知威胁、持续逃跑

对新手来说,它是"多智能体协作学习"的理想入门场景:规则少、地图小、反馈直接,训练几个小时就能看到智能体自发涌现出包抄战术。

二、地图与规模:map_size 决定了 121 个智能体

智能体数量由map_size(默认45)推导,见源码中的 generate_map:

  • 🗺️ 地图为 45×45 的正方形网格,随机放置4% 面积的墙体(wall)作为障碍物
  • 🦌 鹿:45 × 45 × 0.05 ≈ 101个
  • 🐯 虎:45 × 45 × 0.01 ≈ 20个
  • ⏱️ 单局最多运行max_cycles回合(默认 300 步)

调大map_size就能按比例放大博弈规模,这也是 MAgent2"支持海量智能体"这一卖点的直观体现。MAgent2 引擎中其他环境(如 Gather)甚至能容纳2000+ 个智能体同场运算:

三、规则拆解:血量、视野与"双人同帧攻击"

完整规则定义在 get_config 函数中,核心参数一览:

属性🦌 鹿🐯 虎
初始 HP510
每回合回血+0.2−0.1(tiger_step_recover,即饥饿惩罚)
视野范围1 格4 格
攻击范围无(不能攻击)1 格
击杀/攻击回报阵亡 −1 HP吃到鹿+8 HP
动作空间5 个(原地/四向移动)9 个(原地/四向移动/四向攻击)

三个设计细节是精髓所在:

  1. 饥饿机制(starvation):虎每回合固定掉 0.1 HP,只有成功捕猎才能回血 +8。这给协作注入了"时间压力"——散漫的单兵虎必然饿死,团队必须高效运作。
  2. 协同攻击奖励(cooperative attack reward):两只虎在同一回合攻击同一只鹿时,各得 0.5 奖励(合计 1 分,源码中做了平分处理)。这是整个环境最关键的信号,它让"靠近同伴、对齐攻击时机"成为唯一正收益路径。
  3. 视野不对称:虎的视野是鹿的 4 倍。鹿只能在威胁逼近时反应,因此逃跑必须提前、持续,而不是临阵决策——这正适合训练长时程的逃避策略。

四、观察空间:智能体"看到"的世界

每个智能体并非获得全局地图,而是以自身为中心的局部视图,共 5 个基础通道:

  • obstacle:障碍/地图边界
  • my_team_presence/my_team_hp:友军位置与血量
  • other_team_presence/other_team_hp:敌军位置与血量

视野不同导致视图尺寸不同:鹿为 3×3×5,虎为 9×9×5;全局状态(state)为 45×45×5。开启extra_features=True后还会追加 agent 二进制 ID、动作 one-hot、上一回合奖励等通道,minimap_mode=True则把视图替换为包含全图密度信息的小地图 + 绝对坐标——两者都是研究"信息量如何影响策略"的常用开关。

五、奖励设计如何"教出"协作与逃跑 🎯

把奖励表摊开看,策略的"最优解"就藏在里面:

事件奖励
两只虎同帧攻击同一只鹿虎各 +0.5
鹿被攻击鹿 −0.1(deer_attacked)
鹿阵亡鹿 −1
虎存活(隐性)避免 −0.1/回合的持续失血
  • 🐯 对虎而言:单独扑鹿没有直接奖励,与同伴协同是唯一收益来源——强化学习算法会自然收敛到"寻找队友→合围→同步攻击"的策略族。
  • 🦌 对鹿而言:被攻击即扣血,而自身又能缓慢回血,因此最优策略是最大化生存时间——远离老虎群、利用墙体走位、避免孤立。

一攻一逃两侧的策略博弈,构成了典型的**多智能体对抗协作(multi-agent cooperative-competitive)**训练场景。

六、快速上手:3 步运行 Tiger_Deer 环境

安装后(pip install magent2)即可使用,环境遵循 PettingZoo API,提供env(并行)、raw_env(AEC)、parallel_env三种入口:

from magent2.environments import tiger_deer_v4 from pettingzoo.utils import random_demo # 并行 API + 人类可视化,随机策略演示 env = tiger_deer_v4.env(render_mode="human") random_demo(env, render=True, episodes=1)

常用可调参数(详见文档字符串 tiger_deer.py):

参数默认值作用
map_size45地图边长,≥10,同时决定智能体数量
max_cycles300单局最大回合数
tiger_step_recover−0.1虎每回合血量变化(饥饿强度)
deer_attacked−0.1鹿被攻击的惩罚
minimap_modeFalse启用全局小地图观察
extra_featuresFalse追加 ID/动作/奖励等特征通道

💡 调参建议:调大tiger_step_recover的绝对值可显著放大协作压力,是研究"饥饿感如何塑造协作行为"的杠杆;minimap_mode适合对比"局部感知 vs 全局感知"下的策略差异。更多入门工作流见 docs/introduction/basic_usage.md。

七、源码导读与二次开发思路 🔧

想深入或定制环境,按这条路径阅读代码即可:

  1. magent2/environments/tiger_deer/tiger_deer.py —— 规则、奖励与地图生成全部在此,约 250 行即可读完
  2. magent2/environments/magent_env.py —— PettingZoo 并行环境基类,负责观察/奖励空间的封装
  3. magent2/gridworld.py 与 docs/API/gridworld.md —— 底层 GridWorld 引擎 API,支持自定义智能体类型、范围(CircleRange)与事件奖励规则
  4. src/gridworld/ —— C++ 高性能实现(GridWorld.cc、RewardEngine.cc等),这是 MAgent2 能驱动数百乃至上千智能体实时演化的关键

🛠️ 二次开发思路举例:修改get_config中的view_range、damage、奖励规则(add_reward_rule支持"事件组合"匹配),几分钟内就能孵化出"三虎合围才有奖励""鹿拥有反击能力"等变体,用于研究协作阈值与策略的对应关系。

八、版本历史与延伸阅读

  • v0:MAgent2 0.3.0 首次发布,当前主线为tiger_deer_v4模块(历史版本名tiger_deer_v3仍可通过 magent2/environments/tiger_deer_v4.py 兼容导入)。

小结:Tiger_Deer 用 121 个智能体、十余行奖励规则,构建了一个压力清晰、反馈直接的博弈场——饥饿驱动协作,视野差催生逃跑。它是新手进入大规模多智能体强化学习训练最平滑的起点,也是研究群体智能涌现的高性价比基准。

【免费下载链接】MAgent2

An engine for high performance multi-agent environments with very large numbers of agents, along with a set of reference environments

项目地址:https://gitcode.com/gh_mirrors/ma/MAgent2
点击查看免费下载

相关推荐

上一篇:为新的数据库编写 Quartz.NET Driver Delegate:方言驱动委托完整指南
下一篇:【亲测免费】 Django Admin Interface 使用教程

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 12:20:51

PJ85718DM+STM32F100ZE双通道测温在暖通控制中的应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 12:20:50

2FSK键控法调制解调:相位不连续与相干解调的MATLAB仿真

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 12:20:50

嵌入式温控系统高精度可信度设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 12:19:21

HVAC控制器双通道测温方案:PJ85718DM与STM32L031从硬件到固件实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 12:19:02

OFDM-SFBC在MIMO中的原理、Python实现与仿真避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 12:18:48

基于STM32与PJ85718DM的双通道数字温度监测方案详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华