Files
Large-scale_Agent_Network_S…/deliverables/03_验证与评估实验计划.md
T
2026-08-13 16:17:59 +08:00

21 KiB
Raw Blame History

title, subtitle, author, date, toc, toc-title, number-sections
title subtitle author date toc toc-title number-sections
大规模多智能体网络流量模型 验证与评估实验计划(待执行) 参赛团队:待填写 2026年8月 true 目录 true

本次修订说明

修订日期:2026年8月13日

本版本在实验总体框架中加入了可立即执行的模拟实验方案,主要改动如下:

  • 在“验证总体框架”后新增 1.3 模拟实验设计流程
  • 将模拟过程拆分为场景定义、LLM 行为画像生成、画像校验、结构化日志生成、训练/验证/测试隔离、参数估计、快速实验和结果输出八个环节;
  • 设置简单问答、工具研究和多 Agent 协作分析三类初始任务场景;
  • 规定 LLM 输出固定 JSON 画像,并在缺少 API Key 或请求失败时使用版本化本地画像回退;
  • 明确训练集用于估计参数、验证集用于选择分布和调整参数、测试集只用于最终评估,避免任务级数据泄漏;
  • 增加预测验证、模型基线、到达率压力和超时重试四类快速实验的输入输出说明;
  • 规定保存原始事件 CSV、行为画像 JSON、估计参数 JSON、实验结果 CSV、图表、配置文件和随机种子;
  • 强调最终报告必须把模拟结果标注为“模拟数据”,获得真实日志后使用同一实验管线重新验证。

配套实验工程位于 agent_traffic_experiments/,当前已经能够自动生成数据并输出预测对比图、压力曲线和重试流量放大热力图。

文档说明

本文是验证与评估报告的前置计划,不包含尚未实际获得的准确率、性能或显著性结论。实验执行后,应将本计划中的“预期图表、数据表和验收标准”替换或补充为真实结果,并保留失败实验和误差解释。

实验目标是回答四个问题:

  1. 仿真程序是否正确实现了数学模型?
  2. 模型能否预测真实或半真实 Agent 网络的流量与延迟?
  3. 双层状态机、队列、拓扑和重试模块是否确有必要?
  4. 模型能否在更大规模网络中保持可接受的运行开销与稳定性?

1 验证总体框架

1.1 验证层次

层次 核心问题 主要方法 输出
V1 实现正确性 事件、消息和流量是否算对 手工算例、单元测试、守恒检查 对账表
V2 参数可信度 参数是否由日志稳定估计 分布拟合、Bootstrap、训练/验证/测试划分 参数表与区间
V3 预测准确性 能否预测测试场景 实测或重放对比 误差指标与拟合图
V4 模型有效性 完整模型是否优于简化模型 基线和消融实验 对比表
V5 鲁棒与扩展性 高负载、故障和大规模下表现如何 压力、故障、敏感性和规模实验 容量与性能曲线

1.2 实验原则

  • 所有实验配置、随机种子和软件版本可追踪;
  • 训练数据不得进入测试集;
  • 每个随机场景至少重复多次,并报告均值和 95% 置信区间;
  • 真实数据、合成数据和假设参数必须清楚标注;
  • 不仅报告平均值,还报告 P95、P99 和最差场景;
  • 不删除对模型不利的异常结果,应分析其原因和适用边界。

1.3 模拟实验设计流程

在真实日志尚不足以覆盖全部任务类型、网络规模和故障条件时,先通过受约束的大模型模拟构建实验数据,快速验证模型与代码闭环。流程如下。

任务与场景设计
  ↓
LLM生成行为画像
  ↓
画像合法性校验与默认参数回退
  ↓
本地随机引擎扩展结构化事件日志
  ↓
按任务划分训练集 / 验证集 / 测试集
  ↓
训练集估计状态机参数
  ↓
验证集选择分布和调整参数
  ↓
测试集聚合为模拟实测值
  ↓
完整模型、无上下文模型、静态均值基线对比
  ↓
压力实验与重试放大实验
  ↓
自动输出数据表、参数文件、指标和图表

1.3.1 第一步:定义模拟场景

首轮至少设置三类具有复杂度梯度的任务:

任务类型 主要特点 预期通信行为
简单问答 单节点推理为主 消息少、时延短、很少调用工具
工具研究 需要搜索或数据查询 工具调用率高、响应消息较大
多 Agent 协作分析 任务拆分和结果汇总 子任务多、路径长、队列和重试影响明显

同时定义 Agent 数量、工具数量、并发容量、队列容量、链路带宽和基础时延。

1.3.2 第二步:LLM生成行为画像

大模型不直接输出海量日志,而是为每类任务生成有限的行为参数:工具调用概率、拆分概率、平均子任务数、处理时间、请求/响应大小、超时率和失败率。输出必须采用固定 JSON 字段,并经过范围检查。

若没有 API Key 或模型调用失败,使用版本化的内置画像回退,以保证实验可离线复现;报告中记录本次实际使用的是 LLM 画像还是本地回退画像。

1.3.3 第三步:生成结构化日志

本地程序根据画像运行受约束的随机状态机,为每个任务生成外部到达、Agent 请求、工具请求、工具响应、Agent 返回、超时、重试和最终响应事件。日志必须保留:

  • 任务 ID、消息 ID、父消息 ID、请求响应关联 ID 和发送尝试 ID;
  • 任务类型、任务阶段和消息类型;
  • 来源节点、逻辑目标节点、实际下一跳和状态转移;
  • 时间戳、状态持续时间和队列长度;
  • 消息大小、成功状态和重试次数。

1.3.4 第四步:训练与测试隔离

按完整任务划分训练集、验证集与测试集。训练集只用于估计参数;验证集用于选择持续时间和消息大小分布、调整模型参数;测试集不得用于调参,只按任务聚合得到内部字节数、端到端延迟、消息数、工具调用数、重试数和成功率,作为最终模拟实验的对照值。

1.3.5 第五步:快速实验

实验 自变量 主要输出
预测验证 任务类型 流量、延迟、消息数预测误差
基线对比 模型版本 MAE、RMSE、MAPE
压力实验 外部任务到达率 吞吐量、P95延迟、峰值队列、丢弃率
重试实验 超时概率、重试上限 成功率、平均重试数、流量放大系数

1.3.6 第六步:结果输出与使用边界

程序自动输出原始事件 CSV、行为画像 JSON、估计参数 JSON、实验结果 CSV 和图表。模拟实验主要用于验证模型机制、筛选关键参数和形成比赛报告的初步图表,所有结果必须标注“模拟数据”。获得真实运行日志后,保持相同实验管线,用真实数据重新估参和复验。

2 实验环境与复现规范

2.1 待记录环境

项目 记录内容
硬件 CPU型号、核数、内存、操作系统
软件 Python及依赖版本、仿真器提交版本
配置 拓扑文件、参数文件、任务场景文件
随机性 主随机种子、重复实验种子列表
运行 开始时间、结束时间、预热期、仿真时长
输出 原始事件日志、聚合指标、图表脚本

2.2 目录建议

experiments/
  configs/          # 场景、拓扑和参数
  raw_logs/         # 原始Agent或仿真事件日志
  processed/        # 清洗后的标准数据
  scripts/          # 运行、统计和绘图脚本
  results/          # 每次实验的机器可读结果
  figures/          # 报告图表
  manifests/        # 环境、版本、种子与校验信息

2.3 数据划分

如有真实任务日志,建议按任务而非单条消息划分,避免同一任务的消息同时出现在训练集和测试集。

  • 训练集:60%,用于参数估计;
  • 验证集:20%,用于选择分布和超参数;
  • 测试集:20%,只用于最终评估。

若数据具有明显时间漂移,应采用前段训练、后段测试的时间切分,并额外报告随机切分结果。

3 指标体系

3.1 预测误差

对节点流量、链路流量、吞吐量和平均延迟计算:


MAE=\frac{1}{n}\sum_{i=1}^{n}|\hat y_i-y_i|

RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(\hat y_i-y_i)^2}

MAPE=\frac{100\%}{n}\sum_{i=1}^{n}
\left|\frac{\hat y_i-y_i}{y_i+\varepsilon}\right|

对于真实值接近零的对象,MAPE 不稳定,应同时报告 MAE、SMAPE 或加权 MAPE。

3.2 分布与尾部指标

  • 平均延迟、中位数、P90、P95、P99;
  • 队列长度分布及最大值;
  • 消息大小和状态持续时间分布距离;
  • 可选使用 KS 统计量或 Wasserstein 距离比较分布。

3.3 热点识别

将利用率或流量处于前 k\% 的节点/链路定义为热点,计算 Precision、Recall、F1 和 Top-K 命中率。

3.4 仿真性能

  • 总运行时间;
  • 峰值内存;
  • 每秒处理事件数;
  • 单任务平均事件数;
  • 节点规模增加时的时间与内存增长率。

3.5 稳定性与可靠性

  • 任务成功率和失败率;
  • 超时率和平均重试次数;
  • 流量放大系数;
  • 队列是否在仿真后段持续增长;
  • 故障恢复时间和受影响任务比例。

4 实验E1:三节点手工算例与单元验证

4.1 目的

验证消息生成、状态转换、链路累计、节点收发流量、超时取消和重试计数是否正确。

4.2 场景

外部 → A → B → C → B → A

消息大小依次为 2、3、1、4、2 KB。关闭随机性并固定所有处理时间。分别运行:

  1. 正常工具调用;
  2. 不调用工具直接返回;
  3. 第一次工具调用超时、第二次成功;
  4. 超过最大重试次数并失败;
  5. B 节点无处理资源,消息进入队列。

4.3 检查项

  • 节点 A/B/C 入站和出站消息数;
  • A-B、B-C 链路累计字节数;
  • 消息路径和跳数;
  • destination 与逐跳 next_hop 的一致性;
  • 队列入队、出队和并发资源释放;
  • 节点资源状态 q_v 与各消息处理上下文状态 q_m 的一致性;
  • 响应成功后对应超时事件失效;
  • 任务完成或失败后不存在悬挂请求。

4.4 通过标准

确定性计数应与手工结果完全一致;浮点时间误差应低于预设容差;所有守恒检查通过。

5 实验E2:参数估计与分布拟合

5.1 目的

检验从小规模日志估计转移概率、持续时间、消息大小和失败参数的稳定性。

5.2 步骤

  1. 清洗并按任务还原调用链;
  2. 统计各状态的转移计数和样本量;
  3. 对持续时间和消息大小比较经验分布、对数正态、Gamma 等候选;
  4. 使用验证集选择分布;
  5. 对参数进行 Bootstrap,计算 95% 置信区间;
  6. 检查任务类型、阶段和负载分层后的样本稀疏问题;
  7. 为低样本组启用平滑或上级参数回退。

5.3 输出表

参数 分组条件 样本量 估计值/分布 95%区间 来源 置信度
P(Think→CallTool) 待填写 真实/合成
T_Think 待填写 真实/合成
S_request 待填写 真实/合成
p_timeout 待填写 压测/日志

5.4 判定原则

不预设必须选择某种理论分布。若参数分布拟合较差,正式仿真使用经验抽样,并在报告中说明样本覆盖范围。

6 实验E3:小规模预测准确性

6.1 目的

使用训练集估计参数,在未参与估参的测试任务上预测流量、延迟和调用次数。

6.2 场景建议

  • 节点规模:3、5、10
  • 任务类型:至少 2 类;
  • 任务阶段:简单任务与工具密集任务;
  • 负载:低、中、高三个档位;
  • 每个场景包含足够任务,并运行多次随机仿真。

6.3 比较对象

  • 各节点消息率和字节率;
  • 各链路累计流量;
  • 平均、P95、P99 延迟;
  • 平均工具调用数、下游消息数和重试数;
  • 吞吐量、失败率和平均队列长度。

6.4 预期图表

  1. 预测值—实测值散点图及 y=x 参考线;
  2. 各节点流量误差条形图;
  3. 实测与预测延迟累积分布曲线;
  4. 不同负载下的 MAPE/MAE 对比;
  5. 任务级流量放大系数箱线图。

6.5 初步验收目标

在没有比赛官方阈值时,不应预先承诺固定精度。可使用以下内部目标推动迭代:完整模型在多数主要指标上优于所有基线;测试误差的置信区间稳定;高负载误差上升能够得到合理解释。最终报告填写真实数值。

7 实验E4:基线模型对比

7.1 基线定义

编号 基线 描述
B0 静态平均倍数 外部流量乘以固定放大系数
B1 纯拓扑随机游走 仅按连接和固定路由概率传播
B2 简单排队模型 到达率和服务率驱动,不表达任务状态
B3 单层状态机 节点行为和跨节点传播不分层
M 完整模型 双层状态机、分层参数、队列和重试闭环

7.2 公平性要求

  • 各模型使用相同训练任务和测试任务;
  • 可共享的外部到达率、平均消息大小和节点总处理能力 \mu 保持一致;
  • 不允许完整模型使用测试集参数;
  • 同时比较精度和运行开销,避免只比较预测误差。

7.3 结果表模板

模型 节点流量MAPE 链路流量MAPE 平均延迟误差 P95误差 运行时间
B0
B1
B2
B3
M

8 实验E5:消融实验

8.1 消融项

消融版本 移除内容 要验证的假设
A1 移除任务阶段修正 阶段信息能提升行为预测
A2 移除局部拓扑和邻居负载 拓扑负载影响目标选择与热点
A3 使用固定平均处理时间 长尾分布影响尾延迟
A4 移除节点队列 队列是高负载延迟的关键来源
A5 移除失败与重试 重试影响流量放大与稳定性
A6 固定节点类型替代能力向量 能力表示改善异构节点泛化

8.2 分析方式

比较完整模型与各消融版本在低、中、高负载下的误差变化。若某模块对所有场景几乎没有贡献,应检查参数是否未被正确使用,或重新评估模块复杂度是否值得保留。

9 实验E6:压力与容量拐点

9.1 自变量

逐步提高外部到达率:


\lambda\in\{0.2,0.4,0.6,0.8,1.0,1.2,1.5\}\times C_{baseline}

其中 C_{baseline} 是基准系统的估计处理能力。每个负载档运行足够长的预热期和统计期。

9.2 观测指标

  • 吞吐量;
  • 平均、P95、P99 延迟;
  • 关键节点队列长度;
  • 超时率、失败率和重试率;
  • 节点与链路利用率;
  • 流量放大系数。

9.3 容量拐点定义

可结合以下现象定义容量拐点:吞吐量不再随到达率线性增长;队列在统计期持续增长;P95 延迟突增;失败率超过业务阈值;重试导致内部流量明显非线性增加。

9.4 预期图表

  • 到达率—吞吐量曲线;
  • 到达率—P95/P99 延迟曲线;
  • 时间—队列长度曲线;
  • 到达率—超时率/重试率曲线;
  • 到达率—流量放大系数曲线。

10 实验E7:故障与重试放大

10.1 场景矩阵

因素 建议水平
节点故障比例 0%、1%、5%、10%
链路带宽下降 0%、25%、50%、75%
基础超时概率 0、0.02、0.05、0.10、0.20
最大重试次数 0、1、2、3、5
退避策略 无退避、固定退避、指数退避
目标选择 固定节点、负载感知、故障感知

10.2 关键问题

  1. 哪种重试上限在成功率和额外流量之间更均衡?
  2. 指数退避能否减轻拥塞雪崩?
  3. 负载感知或故障感知路由能否缩小影响范围?
  4. 哪些热点节点故障会造成最大任务失败率?

10.3 结果展示

使用热力图展示“超时概率 × 重试上限”对成功率和流量放大系数的影响;使用拓扑图展示故障前后的热点迁移;使用时间曲线展示拥塞与恢复过程。

11 实验E8:拓扑和调度策略对比

11.1 拓扑

  • 星型:中心协调节点连接所有执行节点;
  • 树型:分层协调和任务拆分;
  • 随机稀疏图:一般协作网络;
  • 小世界:高聚类、少量远程连接;
  • 无标度图:少量枢纽节点拥有高连接度。

11.2 策略

  • 最短跳数;
  • 随机可行邻居;
  • 最短队列;
  • 能力匹配优先;
  • 综合能力、距离、负载和可靠性的加权策略。

11.3 指标

比较平均跳数、流量集中度、最大节点利用率、任务延迟、成功率和重路由次数。重点讨论不同拓扑是否会形成单点瓶颈,以及负载感知策略是否以额外跳数换取更低尾延迟。

12 实验E9:规模扩展与计算性能

12.1 规模设置

10、100、1 000、10 000、100 000 个仿真节点

对每个规模控制平均度数、任务到达率与节点数量的比例,并分别报告低负载和中负载结果。若 100000 节点无法在现有硬件完成,应如实报告达到的最大规模、瓶颈和优化方向。

12.2 测量

  • 初始化时间;
  • 仿真运行时间;
  • 峰值内存;
  • 每秒事件数;
  • 事件总数;
  • 结果聚合时间;
  • 不同规模下的预测指标稳定性。

12.3 对比版本

如实现条件允许,对比:

  1. 固定时间步与离散事件;
  2. 全量节点与同构节点聚合;
  3. 不同优先队列实现;
  4. 单线程与分区并行版本。

13 实验E10:敏感性与不确定性分析

13.1 关键参数

  • 工具调用概率;
  • 下游任务数量;
  • 消息大小均值与方差;
  • 节点处理速度;
  • 链路带宽和时延;
  • 超时概率与重试上限;
  • 外部任务突发程度。

13.2 方法

第一阶段使用单因素局部敏感性分析;第二阶段可使用拉丁超立方抽样或 Sobol 方法分析全局敏感性。对高不确定参数从其估计区间中抽样,输出预测指标的置信区间,而不是只给单点预测。

13.3 输出

  • 参数敏感性排序;
  • 龙卷风图;
  • 参数变化与输出变化曲线;
  • 预测区间随样本量的变化;
  • 最需要补采数据的参数列表。

14 数据质量与守恒检查

每次实验自动执行以下检查:

  • 每条消息有且仅有一个 task_id 和 message_id
  • 除外部输入、最终输出和丢弃外,发送消息数与接收/在途消息数守恒;
  • 节点并发数不超过上限,队列长度不为负;
  • 链路累计字节数等于经过该链路消息大小之和;
  • 已完成请求不会再次触发有效超时;
  • 任务完成后未完成子请求数为零或被明确标记为取消;
  • 聚合指标能够由原始事件日志重新计算。

15 报告图表清单

最终《验证与评估报告》至少包含:

  1. 实验环境与数据集统计表;
  2. 参数估计及置信区间表;
  3. 三节点手工对账表;
  4. 完整模型与基线的误差对比表;
  5. 预测值—实测值散点图;
  6. 延迟 CDF 或分位数对比图;
  7. 消融实验条形图;
  8. 到达率—吞吐量—尾延迟曲线;
  9. 超时率—重试次数—流量放大热力图;
  10. 拓扑热点图;
  11. 节点规模—运行时间/内存曲线;
  12. 敏感性排序图;
  13. 失败案例及误差来源表。

16 执行排期

周期 任务 完成判据
第1阶段 仿真器最小闭环与E1 手工算例全部通过
第2阶段 日志模式、合成数据与E2 参数表可自动生成
第3阶段 E3基准预测与E4基线 获得第一版误差结果
第4阶段 E5消融与E6压力 明确模块贡献和容量拐点
第5阶段 E7故障、E8拓扑 得到重试与路由结论
第6阶段 E9规模、E10敏感性 完成性能和不确定性分析
第7阶段 报告整合与复现检查 图表可一键复现、结论有数据支撑

17 最终报告写作模板

正式报告建议按以下顺序组织:

  1. 验证目标与实验环境;
  2. 数据来源、清洗和参数估计;
  3. 实现正确性验证;
  4. 预测准确性与基线对比;
  5. 消融实验;
  6. 压力、故障和拓扑实验;
  7. 大规模仿真性能;
  8. 敏感性和不确定性;
  9. 失败案例、模型边界与改进;
  10. 结论。

每项结论采用“实验条件—观察数据—结论—适用范围”的格式。例如,不应只写“指数退避更好”,而应写明在哪些负载、超时率和重试次数下改善了哪些指标,以及是否牺牲了任务完成时间。

结论

本实验计划通过实现正确性、参数可信度、预测精度、基线对比、消融、压力、故障、拓扑、规模和敏感性十类实验,形成从代码到结论的完整证据链。执行过程中应优先完成三节点对账和小规模预测,再逐步扩展到高负载及大规模场景;所有结果必须保留参数来源、随机种子和复现配置,确保最终参赛报告可信、透明且可重复。