Files
lora_route_py/docs/plan/phase3.md

367 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
下面是**下一阶段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 仿真平台
✅ 算法对照实验系统
✅ 自动论文图生成
✅ 可直接写实验章节