目录
一、总体架构设计
1.1 系统定位与目标
1.2 总体结构
1.3 核心能力矩阵
二、各模块详细设计
2.1 场景配置管理器(SceneConfigurator)
2.2 雷达信号生成器(RadarSignalGenerator)
2.3 通信信道模拟器(CommChannelSimulator)
2.4 MEC资源虚拟化引擎(MECVirtualizer)
2.5 卸载决策引擎(OffloadingEngine)
2.6 联合波束成形优化器(BeamformingOptimizer)
2.7 低时延感知闭环调度器(ClosedLoopScheduler)
2.8 NOMA与AirComp传输模块(NOMAAirCompModule)
2.9 边缘信号处理流水线(EdgeSignalProcessor)
2.10 联邦边缘聚合器(FederatedEdgeAggregator)
2.11 性能评估分析器(PerformanceAnalyzer)
2.12 可视化仪表盘(VisualizationDashboard)
三、协同设计与数据流
3.1 主循环数据流
3.2 模块间接口规范
3.3 并发与同步机制
四、测试标准与验收标准
4.1 功能测试项
4.2 性能验收标准
4.3 对比实验设计
五、脚本体系与使用方式
5.1 脚本清单与职责
5.2 典型使用流程
5.3 输出文件结构
六、系统部署与扩展架构
6.1 单机部署模式
6.2 分布式扩展模式
七、风险预案与调试支持
7.1 常见异常处理
7.2 调试模式
一、总体架构设计
1.1 系统定位与目标
本仿真实验系统面向6G通感算一体化(ISCC)网络,构建MEC辅助雷达信号处理的全链路数字孪生环境。系统支持多用户雷达感知、动态任务卸载、联合波束成形、深度强化学习自适应决策及空口计算(AirComp)分布式处理的闭环验证,具备端到端时延分析、感知精度评估与能效优化能力。
1.2 总体结构
系统采用分层模块化架构,自上而下分为应用编排层、算法决策层、网络仿真层与物理模拟层四个层级,共包含12个核心功能模块。
Mermaid
1.3 核心能力矩阵
表格
| 能力域 | 支持功能 | 输出指标 |
|---|---|---|
| 感知能力 | 多目标检测、距离/速度/方位估计 | 检测概率、RMSE、CRLB差距 |
| 通信能力 | 上行数据卸载、下行控制反馈 | 吞吐量、SINR、频谱效率 |
| 计算能力 | 本地处理、边缘卸载、联邦聚合 | 任务完成时延、队列长度 |
| 智能决策 | 交替优化、PPO-DRL、博弈均衡 | 收敛轮数、奖励值、策略稳定性 |
| 闭环控制 | 波形自适应、资源重配置 | 端到端时延、控制超调量 |
二、各模块详细设计
2.1 场景配置管理器(SceneConfigurator)
功能定位:实验顶层入口,负责参数注入、随机种子管理与场景快照保存。
输入接口:
实验配置文件(JSON/YAML格式):包含小区拓扑、UE数量、载波频段、带宽、天线规模、MEC算力、任务到达率、目标运动模型等
随机种子:保证实验可复现
输出接口:
结构化场景对象:包含所有实体初始化状态
伪代码逻辑:
函数 初始化场景(config_path): 读取配置文件 验证参数合法性(带宽>0, UE数量>0, 算力上限>算力下限) 实例化基站对象(位置、天线阵列、MEC服务器) 循环i从1到UE数量: 实例化UE对象(随机位置、本地算力、雷达体制、任务生成器) 绑定UE运动模型(匀速/匀加速/转向模型) 实例化目标对象(RCS、初始位置、速度矢量) 设置全局时钟与仿真步长 返回场景实例使用方式:
python main.py --config configs/dense_urban_100ghz.yaml --seed 42 --episodes 10002.2 雷达信号生成器(RadarSignalGenerator)
功能定位:模拟UE侧雷达发射与回波接收全过程,生成基带IQ数据流。
处理流程:
根据波形参数(FMCW斜率、脉冲宽度、PRF、带宽)生成发射基带信号
依据目标相对距离与速度引入时延与多普勒频移
叠加路径损耗、RCS调制与高斯白噪声
模拟阵列流形与波束成形权重作用
输出ADC量化后的数字IQ样本
伪代码逻辑:
函数 生成回波信号(UE, 目标列表, 时隙n): 发射信号 = 生成FMCW波形(UE.带宽, UE.时宽, UE.PRF) 对于每个目标: 传播时延 = 2 * 目标.距离 / 光速 多普勒频移 = 2 * 目标.速度 * UE.载频 / 光速 路径损耗 = 基于自由空间模型(距离, 载频) RCS调制 = 目标.RCS * 随机衰落因子 回波分量 = 发射信号 * exp(j*2*pi*多普勒频移*时间) * RCS调制 / 路径损耗 回波分量 = 延迟(回波分量, 传播时延) 总回波 = 所有回波分量求和 + 高斯噪声(UE.噪声功率) 总回波 = 阵列响应矩阵 * 总回波 总回波 = 波束成形权重^H * 总回波 数字信号 = ADC量化(总回波, UE.量化位数) 返回 数字信号, 信噪比估计值2.3 通信信道模拟器(CommChannelSimulator)
功能定位:模拟UE与BS之间的毫米波/太赫兹通信链路,支持多径、阻塞与干扰建模。
处理流程:
基于3GPP扩展模型计算路径损耗与阴影衰落
生成MIMO信道矩阵(考虑角度扩展与簇稀疏性)
叠加雷达回波对通信的互耦干扰
计算各UE等效SINR与可达传输速率
伪代码逻辑:
plain
复制
函数 计算上行信道(UE列表, BS, 时隙n): 对于每个UE: 距离 = 计算距离(UE.位置, BS.位置) 路径损耗 = 28GHz路径损耗公式(距离) + 对数正态阴影 信道向量 = 生成簇稀疏MIMO信道(UE.天线数, BS.天线数, 角度出发, 角度到达) 如果 存在LOS: 信道向量 += LOS分量 * Rician因子 对于每个UE: 信号功率 = UE.发射功率 * |BS.通信波束^H * 信道向量|^2 干扰功率 = 0 对于其他每个UE: 干扰功率 += 其他UE.发射功率 * |BS.通信波束^H * 其他信道向量|^2 雷达干扰 = 耦合系数 * |BS.通信波束^H * 雷达信道 * UE.雷达波束|^2 噪声功率 = 噪声谱密度 * 带宽 SINR = 信号功率 / (干扰功率 + 雷达干扰 + 噪声功率) 速率 = 带宽 * log2(1 + SINR) 返回 信道矩阵, SINR列表, 速率列表2.4 MEC资源虚拟化引擎(MECVirtualizer)
功能定位:模拟边缘服务器的容器化资源调度,维护任务队列与计算资源切片。
核心状态:
任务队列:FIFO/优先级队列
CPU/GPU/FPGA资源池:以虚拟计算单元(VCU)度量
容器生命周期:创建、运行、销毁
伪代码逻辑:
类 MEC服务器: 初始化: 总VCU = 配置.MEC算力 可用VCU = 总VCU 任务队列 = 空 运行中任务 = 空 函数 接收任务(任务, 分配VCU): 任务.分配VCU = min(分配VCU, 可用VCU) 可用VCU -= 任务.分配VCU 任务.预计完成时间 = 任务.计算量 / 任务.分配VCU 如果 任务.优先级 == 紧急: 插入队列头部(任务) 否则: 插入队列尾部(任务) 返回 任务.预计完成时间 函数 时钟推进(时间步长): 对于运行中任务: 任务.剩余计算量 -= 任务.分配VCU * 时间步长 如果 任务.剩余计算量 <= 0: 标记完成 可用VCU += 任务.分配VCU 从队列取出任务填充空闲VCU 返回 完成事件列表2.5 卸载决策引擎(OffloadingEngine)
功能定位:实现本地处理、完全卸载、部分卸载与自适应决策四种模式,支持交替优化(AO)与PPO-DRL两种算法。
子模块:
静态策略模块:固定比例卸载、全本地、全卸载
AO优化模块:交替优化雷达波束、通信波束与计算资源
PPO-DRL模块:基于状态观测实时输出卸载比例与资源请求
状态空间定义:
状态向量 = [ 信道增益向量, // 各UE通信信道质量 雷达信道状态, // 感知链路质量 MEC队列长度, // 边缘负载 UE本地队列长度, // 本地负载 任务计算量, // 当前任务复杂度 任务数据量, // 待传输比特数 剩余截止时间, // 时延约束余量 上一时隙卸载比例 // 动作历史 ]动作空间定义:
动作向量 = [ 卸载比例, // [0, 1] 连续值 请求边缘VCU, // [0, MEC剩余] 归一化 发射功率等级, // [0, 1] 相对于最大功率 波束角度索引 // 离散化角度码本 ]PPO伪代码逻辑:
类 PPO智能体: 初始化: 策略网络 = 神经网络(输入=状态维度, 输出=动作均值/方差) 价值网络 = 神经网络(输入=状态维度, 输出=状态价值) 经验回放缓冲 = 空 函数 选择动作(状态): 均值, 方差 = 策略网络.前向传播(状态) 动作 = 从高斯分布采样(均值, 方差) 动作 = 动作掩码处理(动作, 约束条件) // 映射到可行域 价值 = 价值网络.前向传播(状态) 存储(状态, 动作, 价值, 对数概率) 返回 动作 函数 计算奖励(时延, 感知误差, 能耗, 约束违反): 奖励 = -权重时延*时延 - 权重误差*感知误差 - 权重能耗*能耗 对于每个约束: 如果 违反: 奖励 -= 惩罚系数 * 违反程度 返回 奖励 函数 训练更新(批次数据): 计算广义优势估计(GAE) 计算裁剪后的策略损失 计算价值网络均方误差损失 联合反向传播更新策略网络与价值网络 清空经验回放缓冲2.6 联合波束成形优化器(BeamformingOptimizer)
功能定位:求解雷达发射波束、通信接收波束与功率分配的联合配置。
求解策略:
雷达波束子问题:半定松弛(SDR)转化为凸优化
通信波束子问题:WMMSE迭代算法
功率分配子问题:拉格朗日对偶注水算法
伪代码逻辑:
函数 交替优化波束与功率(初始值, 最大迭代数): 对于迭代从1到最大迭代数: // 步骤1: 固定通信波束与功率, 优化雷达波束 对于每个UE: 等效噪声 = 热噪声 + 多用户雷达互干扰 构造半定规划问题: 目标: 最小化雷达发射功率 约束: 接收功率 >= 最小检测门限 * 等效噪声 约束: 发射功率 <= UE雷达功率上限 调用SDP求解器得到雷达波束矩阵 如果 解的秩 > 1: 执行高斯随机化提取近似波束向量 // 步骤2: 固定雷达波束, 优化通信波束与功率 初始化WMMSE辅助变量 重复直到收敛: 更新MMSE接收机权重 更新发射波束成形向量 更新发射功率(注水算法) // 步骤3: 计算当前总时延 当前目标值 = 加权总时延 // 收敛判断 如果 |当前目标值 - 上一轮目标值| / 上一轮目标值 < 阈值: 跳出循环 返回 最优波束配置, 最优功率分配, 最优卸载比例2.7 低时延感知闭环调度器(ClosedLoopScheduler)
功能定位:实现事件驱动与周期驱动混合调度,管理感知-传输-处理-决策-执行五阶段流水线。
状态机设计:
周期态:按固定间隔触发常规感知任务
事件态:检测到目标状态突变时触发紧急任务
反馈态:接收边缘处理结果后更新波形参数
伪代码逻辑:
类 闭环调度器: 初始化: 周期计数器 = 0 周期间隔 = 配置.常规感知周期 上一感知状态 = 空 函数 时隙调度(时隙n, UE列表, 目标状态): 触发列表 = 空 // 周期驱动检查 如果 周期计数器 >= 周期间隔: 对于每个UE: 添加常规感知任务到触发列表 周期计数器 = 0 // 事件驱动检查 如果 上一感知状态不为空: 状态变化量 = 计算欧氏距离(当前目标状态, 上一感知状态) 如果 状态变化量 > 触发阈值: 对于每个UE: 添加紧急感知任务到触发列表 标记任务优先级为紧急 // 执行触发 对于触发列表中每个任务: 调用卸载决策引擎获取动作 调用MEC资源虚拟化引擎分配资源 启动五阶段流水线: 阶段1: 雷达发射与回波采集 阶段2: 数据压缩与上行传输 阶段3: 边缘信号处理 阶段4: 目标状态估计与决策生成 阶段5: 波形参数反馈与执行器驱动 // 状态更新 上一感知状态 = 当前目标状态 周期计数器 += 1 返回 流水线事件追踪器2.8 NOMA与AirComp传输模块(NOMAAirCompModule)
功能定位:模拟非正交多址接入卸载与空口计算分布式聚合。
NOMA模式:多UE在同一资源块叠加发射,BS侧SIC解码。AirComp模式:多UE预编码后同步发射,BS侧直接获得加权叠加结果。
函数 NOMA上行传输(UE列表, BS, 资源块): 按信道增益降序排序UE 对于每个UE: 如果 模式 == NOMA: 发射信号 = 功率分配 * 数据符号 / 信道增益预补偿 否则如果 模式 == AirComp: 预编码系数 = 聚合权重 / 信道增益 发射信号 = 预编码系数 * 本地计算结果 叠加信号 = 所有UE发射信号求和 接收信号 = 信道矩阵 * 叠加信号 + 噪声 如果 模式 == NOMA: 对于排序后每个UE(从强到弱): 解码当前UE信号 从接收信号中减去当前UE贡献 存储解码数据 返回 解码数据列表, 各UE等效SINR 否则如果 模式 == AirComp: 全局聚合结果 = 接收信号 // 自然叠加 聚合误差 = 估计相位失配影响 返回 全局聚合结果, 聚合误差2.9 边缘信号处理流水线(EdgeSignalProcessor)
功能定位:在MEC侧执行雷达信号处理算法,包括脉冲压缩、CFAR检测、目标跟踪与成像。
处理阶段:
脉冲压缩:匹配滤波或频域相乘
距离-多普勒处理:二维FFT生成RD图
恒虚警检测:单元平均CFAR或有序统计CFAR
参数估计:峰值插值或超分辨率谱估计(MUSIC)
目标跟踪:卡尔曼滤波或多假设跟踪(MHT)
伪代码逻辑:
函数 边缘雷达处理(原始数据, 处理配置, 分配VCU): 如果 处理级别 == 原始IQ: 脉冲压缩结果 = 频域匹配滤波(原始数据, 参考波形) RD图 = 二维FFT(脉冲压缩结果) 检测图 = OS-CFAR(RD图, 参考窗长度, 保护窗长度, 虚警概率) 峰值列表 = 寻找局部极大值(检测图, 门限) 对于每个峰值: 距离 = 峰值.距离单元 * 距离分辨率 速度 = 峰值.多普勒单元 * 速度分辨率 信噪比 = 峰值.幅度 / 噪声基底 目标点迹 = [距离, 速度, 信噪比] 否则如果 处理级别 == 特征级: 目标点迹 = 解码接收数据 // UE已完成预处理 如果 启用跟踪: 对于现有航迹: 预测状态 = 卡尔曼滤波.预测(时间步长) 对于新点迹: 关联代价 = 马氏距离(预测状态, 新点迹) 执行全局最近邻关联 更新状态 = 卡尔曼滤波.更新(关联点迹) 航迹列表 = 更新后航迹 返回 感知结果, 处理耗时2.10 联邦边缘聚合器(FederatedEdgeAggregator)
功能定位:支持多小区MEC节点间的联邦模型聚合,实现分布式感知算法协同。
伪代码逻辑:
类 联邦聚合器: 初始化: 全局模型 = 初始化神经网络权重 节点列表 = 相邻MEC节点 函数 本地训练(MEC节点, 本地感知数据): 子模型 = 复制全局模型 对于每个训练轮次: 批次 = 从本地数据采样 损失 = 前向传播计算损失(子模型, 批次) 反向传播更新梯度 返回 本地模型权重, 本地数据量 函数 全局聚合(本地权重列表, 本地数据量列表): 总数据量 = 所有本地数据量求和 全局权重 = 0 对于每个节点: 权重系数 = 节点数据量 / 总数据量 全局权重 += 权重系数 * 节点本地权重 全局模型.加载权重(全局权重) 广播全局模型到所有节点 返回 全局模型2.11 性能评估分析器(PerformanceAnalyzer)
功能定位:采集全链路日志,计算时延、精度、能效与稳定性指标。
评估维度:
时延分析:端到端时延、传输时延、排队时延、处理时延的CDF与PDF
精度分析:距离/速度/方位RMSE、CRLB比值、检测概率曲线
能效分析:每比特能耗、每任务能耗、能量效率趋势
学习分析:PPO奖励曲线、策略熵、价值函数收敛性
伪代码逻辑:
类 性能评估器: 初始化: 时延日志 = 空列表 精度日志 = 空列表 能耗日志 = 空列表 奖励日志 = 空列表 函数 记录时隙数据(时隙n, 各UE状态, 决策动作, 结果): 对于每个UE: 追加(时延日志, UE.端到端时延) 追加(精度日志, UE.估计误差) 追加(能耗日志, UE.总能耗) 如果 存在DRL决策: 追加(奖励日志, 当前奖励) 函数 生成统计报告(): 时延统计 = 计算分位数(时延日志, [50, 95, 99]) 精度统计 = 计算均值与标准差(精度日志) 能效统计 = 计算能量效率(总能耗, 总有效计算量) 收敛分析 = 检测奖励日志平稳点 帕累托前沿 = 提取时延精度非支配解集 返回 结构化报告字典2.12 可视化仪表盘(VisualizationDashboard)
功能定位:基于Matplotlib/Plotly的实时与离线可视化,支持动画回放。
视图设计:
网络拓扑视图:UE、BS、目标的空间位置与运动轨迹
时频资源视图:雷达与通信的时频资源占用热力图
时延瀑布图:各阶段时延的堆叠柱状图随时间演化
感知精度视图:估计值与真值的对比散点图、RMSE收敛曲线
DRL训练视图:奖励曲线、策略分布、状态-动作热力图
资源利用率视图:MEC CPU/GPU利用率、队列长度动态曲线
伪代码逻辑:
类 可视化仪表盘: 初始化: 创建图形窗口(2行3列布局) 初始化各子图句柄 函数 更新实时视图(时隙n, 场景状态): 子图1(拓扑): 绘制BS位置、UE位置、目标位置 绘制运动轨迹尾迹 绘制波束指向扇形 子图2(时延): 绘制最近100个时隙的端到端时延曲线 绘制时延阈值参考线 子图3(资源): 绘制MEC VCU利用率柱状图 绘制各UE分配VCU饼图 子图4(精度): 绘制估计距离与真实距离对比 绘制误差直方图 子图5(DRL): 如果 存在训练数据: 绘制累计奖励曲线 绘制策略熵变化 子图6(频谱): 绘制通信与感知功率谱密度 刷新显示 函数 生成实验动画(日志文件, 输出路径): 逐帧读取日志 对于每个关键时隙: 调用更新实时视图 保存帧到图像序列 合成为GIF/MP4动画三、协同设计与数据流
3.1 主循环数据流
Mermaid
3.2 模块间接口规范
表格
| 接口名称 | 发送方 | 接收方 | 数据内容 | 更新频率 |
|---|---|---|---|---|
ChannelState | PHY/NET | ALG | 信道矩阵、SINR、速率 | 每时隙 |
RadarEcho | PHY | NET/MEC | IQ样本、SNR、数据量 | 每感知周期 |
OffloadDecision | ALG | NET/MEC | 卸载比例、目标MEC、功率 | 每任务 |
ResourceGrant | MEC | ALG | 分配VCU、预计完成时间 | 每任务 |
ProcessingResult | MEC | ALG | 目标点迹、航迹、耗时 | 每任务完成 |
WaveformFeedback | ALG | PHY | PRF、带宽、波束角、功率 | 每决策周期 |
PerformanceLog | 全部 | VIZ | 时延、精度、能耗、奖励 | 每时隙 |
3.3 并发与同步机制
时间推进:全局离散事件时钟,步长1 ms,支持事件插队
流水线并行:传输与计算在时隙内流水线化,允许部分重叠
数据一致性:状态向量采用快照隔离,避免读写冲突
随机数同步:全局随机种子,各模块子种子派生,保证可复现
四、测试标准与验收标准
4.1 功能测试项
| 测试ID | 测试项 | 测试方法 | 通过标准 |
|---|---|---|---|
| FT-01 | 场景初始化 | 加载5种不同配置文件 | 无异常,参数正确映射 |
| FT-02 | 雷达信号生成 | 单目标场景,已知距离/速度 | 回波峰值位置误差<1个单元 |
| FT-03 | 通信信道建模 | 对比3GPP参考值 | 路径损耗偏差<2 dB |
| FT-04 | MEC队列调度 | 注入1000个随机任务 | 无任务丢失,VCU不超分 |
| FT-05 | AO联合优化 | 两用户场景,固定信道 | 目标函数单调非增,收敛<20轮 |
| FT-06 | PPO-DRL训练 | 单智能体简单场景 | 1000回合内奖励单调上升 |
| FT-07 | 闭环调度 | 事件触发与周期触发混合 | 紧急任务响应<3个时隙 |
| FT-08 | NOMA解码 | 两UE叠加,完美SIC | 解码误码率<1e-3 |
| FT-09 | AirComp聚合 | 三UE均值聚合 | 聚合误差<理论失配上界 |
| FT-10 | 可视化输出 | 完成100时隙仿真 | 生成6张子图+动画文件 |
4.2 性能验收标准
| 验收指标 | 低密度场景 | 高密度场景 | 测试方法 |
|---|---|---|---|
| 端到端时延 | < 10 ms (95分位) | < 30 ms (95分位) | 1000时隙统计 |
| 距离估计RMSE | < 0.3 m | < 0.6 m | 对比真值 |
| 检测概率 | > 95% @ SNR>0 dB | > 90% @ SNR>0 dB | ROC曲线 |
| 频谱效率 | > 5 bps/Hz/UE | > 3 bps/Hz/UE | 吞吐量/带宽 |
| 能量效率 | > 1 Gcycles/J | > 0.5 Gcycles/J | 有效计算/能耗 |
| DRL收敛 | < 500回合 | < 2000回合 | 奖励方差<1% |
| 系统稳定性 | 时延抖动<20% | 时延抖动<30% | 标准差/均值 |
4.3 对比实验设计
实验组设置:
基准组:全本地处理,无MEC辅助
全卸载组:全部任务卸载,无智能决策
AO优化组:第5.2.4节交替优化
PPO-DRL组:第5.2.5节深度强化学习
NOMA增强组:基于NOMA的多用户接入
AirComp组:基于空口计算的分布式聚合
对比维度:
端到端时延累积分布函数(CDF)
感知精度随信噪比变化曲线
系统能耗随任务到达率变化曲线
DRL训练收敛曲线对比(奖励、时延、违反率)
五、脚本体系与使用方式
5.1 脚本清单与职责
| 脚本文件 | 职责描述 | 调用方式 |
|---|---|---|
main.py | 实验主入口,解析参数,初始化场景,驱动主循环 | python main.py --config xxx.yaml |
scene_builder.py | 场景配置器,实体实例化,参数合法性校验 | 被main.py调用 |
radar_generator.py | 雷达信号生成器,FMCW/脉冲体制模拟 | 被main.py调用 |
comm_channel.py | 通信信道模拟器,MIMO信道与干扰计算 | 被main.py调用 |
mec_virtualizer.py | MEC资源虚拟化,容器化调度与队列管理 | 被main.py调用 |
offload_engine.py | 卸载决策引擎,AO与PPO-DRL实现 | 被main.py调用 |
beamforming_opt.py | 波束成形优化器,SDP与WMMSE求解 | 被offload_engine.py调用 |
closed_loop.py | 闭环调度器,事件/周期混合驱动 | 被main.py调用 |
noma_aircomp.py | NOMA与AirComp传输模块 | 被comm_channel.py调用 |
edge_processor.py | 边缘信号处理流水线 | 被mec_virtualizer.py调用 |
federated_agg.py | 联邦边缘聚合器 | 被edge_processor.py调用 |
analyzer.py | 性能评估分析器 | 被main.py调用 |
dashboard.py | 可视化仪表盘,实时与离线渲染 | 被main.py调用 |
utils/logger.py | 结构化日志记录与序列化 | 被全部模块调用 |
utils/metrics.py | 统计指标计算(CDF、RMSE、帕累托) | 被analyzer.py调用 |
5.2 典型使用流程
步骤一:配置实验场景编辑configs/urban_28ghz.yaml,设定UE数量、MEC算力、任务到达率、载波频率等。
步骤二:运行单次仿真
python main.py \ --config configs/urban_28ghz.yaml \ --mode simulation \ --episodes 1000 \ --algorithm ppo \ --seed 42 \ --output results/exp_01/步骤三:批量对比实验
for alg in local full_offload ao ppo nooma aircomp; do python main.py \ --config configs/urban_28ghz.yaml \ --algorithm $alg \ --episodes 1000 \ --output results/compare_${alg}/ done python tools/batch_analyzer.py --inputs results/compare_*/ --plot comparison.png步骤四:实时可视化监控
python main.py \ --config configs/urban_28ghz.yaml \ --mode visualization \ --realtime \ --refresh_interval 100ms步骤五:生成实验报告
python tools/report_generator.py \ --input results/exp_01/ \ --template templates/tech_report.md \ --output reports/exp_01_report.pdf5.3 输出文件结构
results/exp_01/ ├── config_snapshot.yaml # 实验配置快照 ├── event_log.jsonl # 逐时隙结构化日志 ├── metrics/ │ ├── latency_cdf.png # 时延累积分布 │ ├── latency_waterfall.gif # 时延瀑布动画 │ ├── rmse_convergence.png # 精度收敛曲线 │ ├── energy_efficiency.png # 能效趋势图 │ └── pareto_frontier.png # 时延精度帕累托前沿 ├── drl/ │ ├── reward_curve.png # DRL奖励曲线 │ ├── policy_entropy.png # 策略熵变化 │ └── value_function.png # 价值函数收敛 ├── network/ │ ├── topology_animation.mp4 # 网络拓扑动态演示 │ ├── spectrum_occupancy.png # 频谱占用热力图 │ └── beam_pattern.png # 波束方向图 └── report/ ├── summary.json # 关键指标汇总 └── detailed_stats.csv # 逐UE统计表格六、系统部署与扩展架构
6.1 单机部署模式
适用于算法验证与小规模场景(UE<10,时隙<10000)。所有模块运行在同一Python进程,通过内存队列交换数据。可视化采用Matplotlib非阻塞模式。
6.2 分布式扩展模式
适用于大规模多小区仿真。各模块可拆分为独立微服务:
Mermaid
扩展接口:模块间通信通过gRPC/ZeroMQ替换本地函数调用,状态数据通过Redis共享,日志通过Kafka汇聚至时序数据库。
七、风险预案与调试支持
7.1 常见异常处理
表格
| 异常场景 | 检测机制 | 自动恢复策略 |
|---|---|---|
| MEC队列溢出 | 队列长度监控 | 触发任务丢弃策略,优先保留紧急任务 |
| 信道矩阵奇异 | 条件数检查 | 注入微小正则化项,避免求逆失败 |
| DRL梯度爆炸 | 梯度范数监控 | 触发梯度裁剪,回退至上回合策略 |
| 波束优化不收敛 | 迭代轮数上限 | 返回上一轮可行解,记录警告日志 |
| 数值溢出 | 张量值域检查 | 截断至浮点上限,标记数据异常 |
7.2 调试模式
启用--debug参数后,系统进入逐时隙断点模式:
每个时隙结束暂停,输出关键状态摘要
支持交互式检查任意模块内部变量
生成详细的调用链与数据流追踪图