487 lines
5.8 KiB
Markdown
487 lines
5.8 KiB
Markdown
下面是可直接交给执行 AI 的 **`update.md`**。
|
||
它不是重新设计系统,而是**进入 Phase-2:协议验证与优化阶段**的明确任务分解。
|
||
|
||
目标非常明确:
|
||
|
||
> **让仿真从“能运行”升级为“可解释 + 可优化 + 可移植 STM32WL”。**
|
||
|
||
---
|
||
|
||
# `update.md`
|
||
|
||
---
|
||
|
||
# LoRa Gradient Routing 仿真工程
|
||
|
||
## Phase-2 更新任务(Validation & Optimization)
|
||
|
||
---
|
||
|
||
# 0. 当前状态
|
||
|
||
项目已完成:
|
||
|
||
* 仿真框架 ✅
|
||
* 协议运行 ✅
|
||
* 自动测试 ✅
|
||
* 基础统计 ✅
|
||
|
||
当前问题:
|
||
|
||
```
|
||
PDR 偏低
|
||
大量节点直连 Sink
|
||
信道竞争严重
|
||
```
|
||
|
||
说明:
|
||
|
||
```text
|
||
系统功能正确,但协议行为尚未被验证与解释。
|
||
```
|
||
|
||
---
|
||
|
||
# 1. Phase-2 目标
|
||
|
||
执行 AI 必须将项目升级为:
|
||
|
||
```
|
||
Self-Explaining Simulation
|
||
```
|
||
|
||
即:
|
||
|
||
* 能解释性能来源
|
||
* 能定位瓶颈
|
||
* 能指导参数优化
|
||
* 能评估 STM32 可移植风险
|
||
|
||
---
|
||
|
||
# 2. 新增目录结构
|
||
|
||
必须新增:
|
||
|
||
```
|
||
sim/
|
||
├── analysis/
|
||
│ ├── validation_report.md
|
||
│ ├── topology_export.json
|
||
│ ├── timeseries.csv
|
||
│ └── plots/
|
||
│
|
||
├── analysis_tools/
|
||
│ ├── topology.py
|
||
│ ├── convergence.py
|
||
│ ├── channel_analysis.py
|
||
│ └── reliability_analysis.py
|
||
```
|
||
|
||
---
|
||
|
||
# 3. 必须新增的 Metrics(核心)
|
||
|
||
扩展 `metrics.py`。
|
||
|
||
---
|
||
|
||
## 3.1 路由稳定性指标
|
||
|
||
新增统计:
|
||
|
||
```python
|
||
route_changes[node_id]
|
||
parent_history[node_id]
|
||
cost_history[node_id]
|
||
```
|
||
|
||
计算:
|
||
|
||
```
|
||
route_change_rate =
|
||
total_parent_changes / sim_time
|
||
```
|
||
|
||
验收标准:
|
||
|
||
```
|
||
收敛后 ≈ 0
|
||
```
|
||
|
||
---
|
||
|
||
## 3.2 Hop 分布
|
||
|
||
统计:
|
||
|
||
```
|
||
hop_count_per_packet
|
||
```
|
||
|
||
输出:
|
||
|
||
```
|
||
hop_histogram
|
||
```
|
||
|
||
必须证明:
|
||
|
||
```
|
||
存在 hop ≥ 2
|
||
```
|
||
|
||
否则判定:
|
||
|
||
```
|
||
多跳未形成
|
||
```
|
||
|
||
---
|
||
|
||
## 3.3 信道利用率(必须)
|
||
|
||
Channel 记录:
|
||
|
||
```
|
||
busy_time
|
||
idle_time
|
||
collision_time
|
||
```
|
||
|
||
计算:
|
||
|
||
```
|
||
channel_utilization =
|
||
busy_time / total_time
|
||
```
|
||
|
||
输出:
|
||
|
||
| 利用率 | 判断 |
|
||
| ------ | --- |
|
||
| <30% | 健康 |
|
||
| 30–60% | 可接受 |
|
||
| >70% | 拥塞 |
|
||
|
||
---
|
||
|
||
## 3.4 丢包原因分解(非常重要)
|
||
|
||
新增 loss 分类:
|
||
|
||
```
|
||
LOSS_COLLISION
|
||
LOSS_NO_ROUTE
|
||
LOSS_RETRY_EXCEEDED
|
||
LOSS_CHANNEL_BUSY
|
||
```
|
||
|
||
输出比例。
|
||
|
||
---
|
||
|
||
# 4. 拓扑导出功能
|
||
|
||
新增:
|
||
|
||
```
|
||
analysis/topology_export.json
|
||
```
|
||
|
||
格式:
|
||
|
||
```json
|
||
{
|
||
"nodes":[
|
||
{"id":1,"x":10,"y":22,"cost":3,"parent":0}
|
||
]
|
||
}
|
||
```
|
||
|
||
用于:
|
||
|
||
* 外部绘图
|
||
* 拓扑检查
|
||
* 论文图生成
|
||
|
||
---
|
||
|
||
# 5. 时间序列记录
|
||
|
||
生成:
|
||
|
||
```
|
||
analysis/timeseries.csv
|
||
```
|
||
|
||
字段:
|
||
|
||
```
|
||
time,
|
||
avg_cost,
|
||
route_changes,
|
||
channel_utilization,
|
||
pdr_window
|
||
```
|
||
|
||
采样周期:
|
||
|
||
```
|
||
1s
|
||
```
|
||
|
||
---
|
||
|
||
# 6. 自动生成验证报告
|
||
|
||
必须自动生成:
|
||
|
||
```
|
||
analysis/validation_report.md
|
||
```
|
||
|
||
包含以下章节。
|
||
|
||
---
|
||
|
||
## 6.1 Topology Analysis
|
||
|
||
输出:
|
||
|
||
* parent tree
|
||
* hop distribution
|
||
* unreachable nodes
|
||
|
||
结论字段:
|
||
|
||
```
|
||
MULTIHOP_FORMED = TRUE/FALSE
|
||
```
|
||
|
||
---
|
||
|
||
## 6.2 Convergence Analysis
|
||
|
||
绘制:
|
||
|
||
```
|
||
time vs avg_cost
|
||
time vs route_changes
|
||
```
|
||
|
||
计算:
|
||
|
||
```
|
||
convergence_time
|
||
```
|
||
|
||
定义:
|
||
|
||
```
|
||
route_changes < threshold 持续30s
|
||
```
|
||
|
||
---
|
||
|
||
## 6.3 Channel Analysis
|
||
|
||
输出:
|
||
|
||
```
|
||
collision_rate
|
||
channel_utilization
|
||
tx_attempt_distribution
|
||
```
|
||
|
||
判断:
|
||
|
||
```
|
||
NETWORK_STATE:
|
||
LIGHT_LOAD
|
||
SATURATED
|
||
```
|
||
|
||
---
|
||
|
||
## 6.4 Reliability Breakdown
|
||
|
||
表格:
|
||
|
||
| 原因 | 比例 |
|
||
| -------------- | -- |
|
||
| collision | |
|
||
| retry_exceeded | |
|
||
| no_route | |
|
||
|
||
---
|
||
|
||
## 6.5 STM32 Transfer Risk
|
||
|
||
自动生成:
|
||
|
||
| 项 | Risk |
|
||
| ----------------------- | ------------ |
|
||
| airtime realism | LOW/MED/HIGH |
|
||
| ACK timeout safety | |
|
||
| channel saturation risk | |
|
||
|
||
---
|
||
|
||
# 7. 参数扫描系统(新增)
|
||
|
||
新增:
|
||
|
||
```
|
||
analysis_tools/parameter_sweep.py
|
||
```
|
||
|
||
扫描参数:
|
||
|
||
```
|
||
HELLO_PERIOD ∈ [5,10,20]
|
||
DATA_PERIOD ∈ [20,40,60]
|
||
BACKOFF_MAX ∈ [1,2,4]
|
||
```
|
||
|
||
输出:
|
||
|
||
```
|
||
sweep_results.csv
|
||
```
|
||
|
||
包含:
|
||
|
||
```
|
||
PDR
|
||
avg_delay
|
||
collision_rate
|
||
utilization
|
||
```
|
||
|
||
---
|
||
|
||
# 8. 新测试(必须新增)
|
||
|
||
---
|
||
|
||
## test_multihop_exists.py
|
||
|
||
断言:
|
||
|
||
```python
|
||
assert max_hop >= 2
|
||
```
|
||
|
||
---
|
||
|
||
## test_route_stability.py
|
||
|
||
断言:
|
||
|
||
```
|
||
route_change_rate < threshold
|
||
```
|
||
|
||
---
|
||
|
||
## test_channel_not_saturated.py
|
||
|
||
断言:
|
||
|
||
```
|
||
utilization < 0.7
|
||
```
|
||
|
||
---
|
||
|
||
# 9. 禁止事项
|
||
|
||
执行 AI 禁止:
|
||
|
||
```
|
||
❌ 修改 routing 算法
|
||
❌ 修改 cost 函数
|
||
❌ 引入新协议
|
||
```
|
||
|
||
当前阶段只允许:
|
||
|
||
```
|
||
观察 + 测量 + 分析
|
||
```
|
||
|
||
---
|
||
|
||
# 10. Phase-2 验收标准
|
||
|
||
全部满足:
|
||
|
||
* [ ] 自动生成 validation_report.md
|
||
* [ ] 网络形成多跳
|
||
* [ ] 收敛时间可测量
|
||
* [ ] 信道利用率可计算
|
||
* [ ] 丢包原因可分解
|
||
* [ ] 新 tests 全通过
|
||
|
||
---
|
||
|
||
# 11. 完成后提交内容
|
||
|
||
执行 AI 必须输出:
|
||
|
||
```
|
||
analysis/
|
||
├── validation_report.md
|
||
├── topology_export.json
|
||
├── timeseries.csv
|
||
└── plots/*.png
|
||
```
|
||
|
||
---
|
||
|
||
# 12. Phase-2 完成意义
|
||
|
||
完成后将获得:
|
||
|
||
```
|
||
协议行为模型(Behavior Model)
|
||
```
|
||
|
||
这一步完成后才允许进入:
|
||
|
||
```
|
||
STM32WL 移植阶段
|
||
```
|
||
|
||
---
|
||
|
||
# 13. 下一阶段(仅说明)
|
||
|
||
Phase-3 将进行:
|
||
|
||
```
|
||
MAC 优化
|
||
负载感知 routing
|
||
参数自动推导
|
||
```
|
||
|
||
但当前禁止提前实施。
|
||
|
||
---
|
||
|
||
**执行优先级(严格顺序):**
|
||
|
||
```
|
||
1 metrics扩展
|
||
2 topology导出
|
||
3 timeseries记录
|
||
4 validation_report生成
|
||
5 新测试
|
||
6 参数扫描
|
||
```
|
||
|
||
---
|
||
|
||
完成 Phase-2 后,将仿真结果提交用于协议级评估。
|