HATT / MACF · 工程与研究交接
v3.4 方法基准 · 2026-09-08 · 代码 / 数据 / 来源

环境、信息条件与 baseline

本章以 v3.4 已完成训练的冻结配置和当前 DelivCoal 代码为依据。配置中的研究字段已抽取为 research_settings.csv;环境接口尺寸通过实际构造核对。核对记录

DelivCoal 的物理对象

对象 v3.4 实际设置与工作方式 代码依据
地图 连续二维正方形,边长 1000;任务和机器人位置随机采样 初始化
智能体 总数 12;配置 num_uav=4、num_ugv=8 相加得到总数,Agent 构造时随机采样 Drone/Vehicle 类型 Agent、生成
异构能力 四个 [0,1) 随机分量分别决定感知半径、移动速度、载荷上限和电量 能力映射
配送任务 10 个,位置固定于本回合;初始需求为整数 100–499,初始隐藏 任务生成
任务价值 priority∈[0.5,1),deadline fraction∈[0.45,0.95);通过奖励影响任务服务价值 生成、奖励
危险区 10 个随机圆心;本轮默认半径 1.0,路径安全余量 0.5 地图、绕行函数
补给站 原点 (0,0),抵达后恢复个体载荷和电量上限 补给任务、补给

若能力向量为 u_i,实际感知半径为 50u_i[0],每步移动距离为 10+10u_i[1],初始载荷为 30+floor(70u_i[2]),初始电量为 500+floor(500u_i[3])。存活机器人每个物理步耗电 1。类型标记进入观测,当前这些物理公式由能力分量决定。配置中的 UAV/UGV 感知区间字段被保留,实际发现检查使用上述 agent.perception。Agent 与 discover_along_segment

机器人沿已规划路径移动。路径规划器读取全部危险圆位置,尝试直线连接,并在圆形危险区附近插入绕行点;actor 读取的状态通过下文的观测接口提供。探测沿实际移动线段检查目标到线段的距离,减少高速移动时漏检目标的情况。路径与探测

任务如何完成与联盟如何形成

每名机器人保存当前任务编号 coalition。选择同一 Deliver 槽的存活机器人构成当前配送联盟。机器人抵达任务位置后,一次交付 min(当前载荷, 剩余需求);交付后任务需求下降,需求降至零时标记完成,并向同联盟成员发出完成事件。不同成员可以先后抵达、分次供货;补给后可再次服务任务。step 配送分支

DelivCoal 的任务 req_vec 被设为 [priority,0,0,0],四维机器人能力用于感知、移动、携带和续航,任务完成按上述标量交付过程判断。deadline 是软时间要求:它用于紧迫度成本与及时完成奖励;超期任务继续保留到完成或回合结束。生成与 shaped reward

这一设定适合研究资源承诺、分次配送与任务服务顺序。多技能同时到达的联合服务要求属于 CFM 原环境的另一种物理设定,参见 CFM 原文。

高层动作与执行过程

动作槽 数量 / ID 环境执行
Deliver 10,0–9 选择对应任务并沿路径前往配送
Explore 8,10–17 以当前机器人为起点,选择八个方向之一;标称步长 200,方向扰动参数 0.1,目标裁剪到地图边界
Idle 1,18 原地等待,仍参与时间与电量推进
Resupply 1,19 前往原点补给

动作合法性由 available_actions[12,20] 表示。已发现且尚未完成的配送任务可选;Idle/Resupply 通常可选;过短的边界探索方向被逐机器人屏蔽。动作掩码

训练使用 event 重决策:新任务发现或任意任务完成会让存活机器人重新获得任务选择机会;个体动作完成也触发该个体重决策;全体停住时激活存活机器人。其余时间继续执行已有动作。这里的环境事件日程与网络中的 AA sigmoid 权重分别作用于“何时决策”和“如何编码关系”。事件条件、key_event

一个 episode 的流程

full_random reset:重采样地图、任务、机器人 → 全部机器人获得首次决策机会
      ↓
构造共享已发现任务、队友状态、各自探索候选 → actor 输出合法任务动作
      ↓
更新联盟归属 → 按需规划路径 → 移动、探测、耗电
      ↓
抵达后的交付 / 补给 → 更新任务需求和完成事件
      ↓
计算个体 shaped reward、下一步观测、active mask、终止/截断标志
      ↓
未结束时进入下一物理步;结束后向量环境自动 reset

所有配送任务完成、所有机器人死亡或达到 750 步时结束。自然结束与时间截断通过 bad_mask 区分,供训练回报处理使用。初始配送任务在 reset 时生成,普通回合中的“新任务”指它被发现;优先级专项实验通过事件注入控制任务揭示时刻。reset、终止处理

Actor 观测与 critic 状态

每个机器人 actor 使用以下 Dict。全部机器人一起推理时,在每个形状前增加一个大小为 12 的 observer 维。

字段 单个 observer 的形状 有效字段
ego [11] 位置/1000 两维、四维能力、当前联盟编号/19、当前任务类型/3、load/init_load、已发现任务比例、battery/1000
others [12,11] 队友位置、四维能力、载荷比、电量、联盟编号、机器人类型、生存标记;observer 自身那一行置零
tasks [20,6] 每个动作槽的类型条件化特征;隐藏和已完成配送任务置零
available_actions [20],独立输入 当前可选任务掩码

配送槽六列为 [x/1000,y/1000,demand/500,剩余deadline比例,priority,type/3]。开启 coverage 后,探索槽六列为 [目标x/1000,目标y/1000,候选新增覆盖比例,移动段长度/200,全局未探索比例,type/3]。Idle、Resupply 使用相同槽宽,类型列说明其语义。任务矩阵因此有 observer 特定的探索行,v3.4 设置 hatt_shared_task_obs=false。观测构造

覆盖信息由 20×20 网格中心点近似。移动线段的感知带更新共享覆盖图,候选探索方向估计沿该方向新增的覆盖比例。它是环境维护的探索历史摘要。coverage

集中式 critic 使用 agents[12,11]、tasks[20,8]、global[1]、focal[12,1],展平后 305 维。任务状态含全部配送任务及发现/完成标记;global 保存归一化时间;focal 是当前机器人 one-hot。它是环境提供的集中状态特征,完整模拟快照还保存路径、覆盖位图、随机数状态等内部量。全局状态、focal 构造

通信与信息共享假设

DelivCoal 的 actor 可以读取团队所有机器人的状态;任何机器人发现的配送任务进入共享任务状态;覆盖图由团队共同维护。这对应理想的团队信息共享条件。当前 DelivCoal 动作是任务选择,AA 消息在网络前向中计算,观测接口直接提供共享信息。真实通信距离、传输时延和带宽可作为后续环境变量。GymRT2A 使用自己的局部观察与路径意图共享接口,其参数见下一节。DelivCoal 观测代码、GymRT2A 适配器

奖励与评价

v3.4 调用 shaped 奖励。每个机器人获得自己的奖励,包含发现、配送、补给与联盟完成事件,以及共享配送进展、剩余需求和时间成本。代表项为:个体正交付 0.04×交付量;共享进展 25×本步总交付/初始总需求;联盟完成 8×priority+8×及时完成项;剩余需求/紧迫度持续成本;回合全部完成奖励 15,结束时扣除剩余需求及未完成任务成本。该分支的系数直接定义于环境函数。完整奖励实现

Success 表示整个 episode 的配送任务全部完成;任务完成率为完成任务数/10;配送比例为总交付/初始总需求;episode length 是实际物理步数。联盟变化数和 response time 为行为诊断,前者统计归属变化,后者记录任务发现到首次有存活机器人加入的时间。诊断与记录、评估 runner

补充环境与迁移方式

环境组 实际设置 已完成工作与对应证据
CapCoal 中规模 30 个机器人、25 任务、1500 步、nearest 探索、legacy 重决策、random_demand 四维任务需求特征、原 CapCoal 奖励;训练 5000 episodes HATT v2.0 与 MAPPO64 各 3 seed,独立 128 场景旧 selector 评估,见 E08
GymRT2A 原环境 网格地图、不同等级目标、局部视野、邻居通信范围、路径意图共享、A* 运动控制;已复现实验采用 20×20 地图、10 个机器人、100 步回合 官方 MARL-MRT2A 5 seed;HATT 空间候选适配 2 seed,见 E09
CFM 官方环境 异构技能、任务技能要求、任务持续时间、联合到达与调度,原始 RALTestSet 官方 checkpoint 50 场景验证及小规模重新训练,见 E10

CapCoal 的 random_demand 将随机四维任务向量与标量 demand 相关联,实际交付仍按载荷扣减需求。nearest 探索的底层控制器读取最近未发现任务位置。此组与 DelivCoal 的 sector 搜索分开统计。模型在各环境分别训练;GymRT2A 通过专用空间候选 actor 接口迁移。CapCoal 代码、GymRT2A 网络

Baseline 选取与比较角色

方法 实际实现 比较角色与固定条件
MAPPO64 展平相同 Dict 输入的 MLP actor,共享 PPO 与集中式 critic 同训练框架、观测、动作、奖励与 event 日程的结构对照
MAPPO288 加宽 actor 的 MAPPO 对 v2.0 的参数规模控制;v2.0 actor 262,341 参数,MAPPO288 250,530 参数
HATT v2.0 独立实体编码、AA 上下文、任务联盟聚合与共享解码 有完整五 seed 数据的历史关系模型参照
PCFA-DelivCoal 优先级/紧迫度排序、载荷承诺、规则联盟组建、探索和补给 任务分布一致的确定性规则参照;当前记录为一个 RNG 流顺序生成 128 回合
QMIX / VDN 共享 recurrent individual-Q,分别采用单调 mixer / utility 求和,团队均值奖励 同一批次比较值分解方式;奖励归并与 PPO 个体信用设置分别注明
CFM-DelivCoal 官方 AttentionNet + pointer、序贯分配、REINFORCE/POMO 训练适配 比较序贯分配机制;POMO 副本计入训练交互预算
MARL-MRT2A-DelivCoal 官方 CNN actor/critic、MAPPO learner、目标修正;任务映射到21×21网格 比较空间策略表示;legacy20 和 full27 输入布局按实验分组

来源:PPO、MAPPO、QMIX、VDN、CFM、MARL-MRT2A,本地对应文件均在 代码索引。PCFA 的 DelivCoal 版本按本项目任务过程适配,规则细节以复制的 pcfa.py 为准。