一个具备科研可验证性的 LoRa 多跳算法评估基线。

This commit is contained in:
sinlatansen
2026-02-25 20:14:45 +08:00
parent 8537331c6f
commit 5ee1a16574
18 changed files with 1704 additions and 47 deletions

366
docs/plan/phase3.md Normal file
View File

@@ -0,0 +1,366 @@
下面是**下一阶段Phase-3明确执行清单**。
目标不是继续“修代码”,而是把当前仿真从 **能运行的系统** 升级为 **可发表 / 可证明算法价值的实验平台**
你可以直接把下面内容作为 `next_phase.md` 交给执行 AI。
---
# `next_phase.md`
```markdown
# LoRa Route Py — Phase-3 任务清单
## 目标
当前系统已经:
- ✅ 完整仿真框架
- ✅ 多跳路由工作
- ✅ 业务数据成功传输
- ✅ 指标统计完善
下一阶段目标:
> 将仿真升级为 **算法评估平台Algorithm Evaluation Platform**
核心思想:
不再证明“能跑”
→ 而是证明“比别人好”
---
# Phase-3 总览
新增三大能力:
1. Baseline 对照算法
2. 可重复实验框架Experiment Runner
3. 自动论文级结果输出
---
# TASK 1 — Baseline Routing最高优先级
## 目的
当前只有 Gradient Routing。
必须加入对照组,否则结果没有科研意义。
---
## 1.1 新建目录
```
sim/routing/
├── gradient_routing.py
├── flooding.py ← NEW
├── random_forward.py ← NEW
└── shortest_path.py ← NEW可选
```
---
## 1.2 Flooding Routing必须实现
### 行为
收到 DATA
```
if packet_id 未见过:
转发给所有邻居
````
需要:
- seen_packet_cache (TTL)
- 防止无限广播
---
### 接口保持一致
```python
class FloodingRouting(BaseRouting):
def next_hop(self, packet):
return BROADCAST
````
Node 不需要修改。
---
## 1.3 Random Forward必须
用于验证:
> gradient 是否优于随机策略
逻辑:
```
随机选择一个邻居转发
```
---
## 验收标准
新增测试:
```
test_baseline_runs.py
```
要求:
* flooding 能运行
* random 能运行
* 无死循环
---
# TASK 2 — Experiment Runner核心
## 目标
自动跑:
```
节点数 × 区域大小 × 算法
```
而不是手动运行。
---
## 2.1 新建
```
sim/experiments/
runner.py
```
---
## API
```python
run_experiment(
routing="gradient",
node_count=12,
area_size=500,
sim_time=500
)
```
返回:
```python
{
"pdr": float,
"avg_latency": float,
"avg_hop": float,
"collision_rate": float,
}
```
---
## 2.2 参数扫描
自动执行:
```
nodes = [6, 9, 12, 15]
area = [300, 500, 800]
routing = ["gradient", "flooding", "random"]
```
总实验:
```
4 × 3 × 3 = 36 runs
```
---
# TASK 3 — 固定随机种子(重要)
否则实验不可复现。
---
修改:
```
config.py
```
加入:
```python
RANDOM_SEED = 42
```
在 main 初始化:
```python
random.seed(Config.RANDOM_SEED)
np.random.seed(Config.RANDOM_SEED)
```
---
验收:
同参数运行两次结果一致。
---
# TASK 4 — 新指标Metrics v2
扩展 metrics.py
---
## 必须新增
### 4.1 End-to-End Latency
```
receive_time - create_time
```
输出:
```
avg_latency
p95_latency
```
---
### 4.2 Forwarding Overhead
```
total_tx / successful_packets
```
衡量能量效率。
---
### 4.3 Network Load
```
total_airtime / sim_time
```
---
# TASK 5 — 自动结果导出
新增:
```
analysis_tools/export.py
```
---
## 输出 CSV
```
results.csv
```
格式:
| routing | nodes | area | pdr | latency | hop |
| ------- | ----- | ---- | --- | ------- | --- |
---
# TASK 6 — 自动绘图(必须)
使用 matplotlib
生成:
```
results/
├── pdr_vs_nodes.png
├── latency_vs_nodes.png
├── overhead_compare.png
```
---
图要求:
* 每条 routing 一条曲线
* 自动 legend
---
# TASK 7 — Regression Tests防退化
新增:
```
test_algorithm_compare.py
```
要求:
```
gradient.pdr >= random.pdr
```
(允许 small tolerance
---
# TASK 8 — 自动实验入口
新增:
```
python run_experiments.py
```
执行后:
```
✔ 运行全部实验
✔ 输出CSV
✔ 生成图表
```
---
# Phase-3 验收标准
必须全部满足:
* [ ] 至少 2 个 baseline 算法
* [ ] 自动实验 runner
* [ ] 固定随机种子
* [ ] CSV 自动生成
* [ ] 自动绘图
* [ ] gradient 与 baseline 可比较
* [ ] 一键运行实验
---
# 完成后系统能力
完成 Phase-3 后,你将拥有:
✅ LoRa mesh 仿真平台
✅ 算法对照实验系统
✅ 自动论文图生成
✅ 可直接写实验章节