# LEACH **Repository Path**: phoenix_pond_chant/LEACH ## Basic Information - **Project Name**: LEACH - **Description**: LEACH 分簇路由协议实现 - 面向对象设计/NumPy向量加速/异步执行/完整性能基准测试 | WSN clustering protocol - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-12 - **Last Updated**: 2026-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# 💡 LEACH Protocol Suite **无线传感器网络路由协议套件 — LEACH / LEACH-C / LEACH-E / PEGASIS / TEEN / 3D**

快速开始协议对比功能展示协议详解API路线图English

--- ## 📖 什么是 LEACH? **LEACH**(Low Energy Adaptive Clustering Hierarchy)是无线传感器网络(WSN)领域最经典的分簇路由协议,由 Heinzelman 等人于 2000 年提出。 本项目不仅实现了 LEACH,还实现了 **5 种改进协议**,构成完整的 WSN 路由协议研究套件。**10 行代码即可运行仿真,一行命令切换协议。** 🎓 课程设计 · 🔬 学术研究 · 📊 IoT 仿真 · 🧠 算法教学 --- ## 🆕 协议套件 | 协议 | 类型 | 核心思想 | 命令 | |------|------|----------|------| | **LEACH** | 分簇 | 随机阈值选举簇首 | `leach` | | **LEACH-C** | 分簇 | 基站集中选择最优簇首 | `leach -P leach-c` | | **LEACH-E** | 分簇 | 能耗感知加权选举 | `leach -P leach-e` | | **PEGASIS** | 链式 | 贪心链 + 轮流链头 | `leach -P pegasis` | | **TEEN** | 响应式 | 硬/软阈值触发传输 | `leach -P teen` | | **LEACH-3D** | 3D 分簇 | 三维空间仿真 | `leach -P 3d` | --- ## 🚀 快速开始 ### 安装 ```bash git clone https://gitee.com/phoenix_pond_chant/LEACH.git cd LEACH pip install -e ".[viz]" ``` ### 运行 ```bash # 标准 LEACH leach -n 100 -r 200 --plot # 切换协议 leach -P leach-c -n 200 -r 300 # 集中式 leach -P leach-e -n 200 -r 300 # 能耗优化 leach -P pegasis -n 200 -r 300 # 链式 leach -P teen -n 200 -r 300 # 阈值响应 leach -P 3d -n 200 -r 300 # 3D 仿真 # 生成动画 leach -n 100 -r 200 --plot --animate ``` ### Python 库 ```python from leach import LEACHNetwork, LEACHCNetwork, LEACHENetwork, PEGASISNetwork, TEENNetwork # 任选一种协议 net = LEACHENetwork(num_nodes=100, num_rounds=200) stats = net.run() print(f"存活: {stats['alive_nodes']}/{stats['total_nodes']}") ``` --- ## 📊 协议对比 ### 性能对比(100 节点,200 轮) | 协议 | 存活节点 | 首死轮次 | 平均能量 | 传输次数 | |------|----------|----------|----------|----------| | LEACH | 83/100 | 41 | 0.2905 J | - | | **LEACH-C** | **100/100** | **无死亡** | 0.2363 J | - | | **LEACH-E** | 97/100 | **108** | 0.2303 J | - | | PEGASIS | 87/100 | 101 | 0.2411 J | - | | **TEEN** | **100/100** | **无死亡** | **0.4864 J** | 45 | > **关键发现**: TEEN 通过阈值机制大幅减少传输次数,能量效率最高;LEACH-C 通过集中优化实现零死亡;LEACH-E 将首死轮次从 41 推迟到 108。 ### 全协议对比图 ![Protocol Comparison](screenshots/01-all-protocols-comparison.png) *从左到右: 网络生命周期 · 能量消耗曲线 · 首死轮次对比 · LEACH 拓扑 · TEEN 传输统计 · 汇总表* --- ## 📸 功能展示 ### 🏆 LEACH-C — 集中式簇首选举 基站根据全局能量和位置信息选择最优簇首,最大化覆盖并均衡能耗。 ![LEACH-C Topology](screenshots/02-leach-c-topology.png) *红色星号为基站选出的最优簇首,蓝色为普通成员。黄色三角为基站,位于区域上方。* **核心优势**: 100/100 节点全部存活,零死亡。 --- ### ⚡ LEACH-E — 能耗感知选举 修改阈值公式 `T(n) = T_base × (E_residual / E_initial)`,能量高的节点更可能成为簇首。 ![LEACH-E Comparison](screenshots/03-leach-e-comparison.png) *左: 能量分布热力图(绿=高能量,红=低能量),圆圈标记为选出的簇首。右: LEACH vs LEACH-E 首死轮次对比。* **核心优势**: 首死轮次从 41 推迟到 108,提升 163%。 --- ### 🔗 PEGASIS — 链式路由 节点形成贪心链,每轮选择一个链头。数据沿链从两端向链头传递,每个节点只与邻居通信。 ![PEGASIS Chain](screenshots/04-pegasis-chain.png) *左: 节点链路拓扑,橙色线条为链连接,红色星号为链头。右: 五种协议存活节点对比。* **核心优势**: 通信距离短,适合大规模网络。 --- ### 🎯 TEEN — 阈值响应式 簇首设定硬阈值(HT)和软阈值(ST),成员只在 `感知值 > HT 且 变化 > ST` 时传输。 ![TEEN Threshold](screenshots/05-teen-threshold.png) *左: 节点传输次数热力图(颜色越深传输越多)。右: 每轮数据传输量,远低于最大值。* **核心优势**: 事件驱动,传输量极低,能量效率最高(0.4864 J 剩余)。 --- ### 🌐 LEACH-3D — 三维仿真 扩展到三维空间 `(x, y, z)`,支持立体部署场景。 ![3D Network](screenshots/06-3d-network.png) *三维空间中的节点部署,红色星号为簇首,蓝色为普通成员。* **核心优势**: 支持真实场景仿真(如山区传感器部署、水下网络)。 --- ### 📈 CLI 运行输出 ``` $ leach -P leach-e -n 100 -r 200 --seed 42 ================================================== LEACH-E Simulation Complete ================================================== Total rounds : 200 Alive nodes : 97/100 Dead nodes : 3 Average energy: 0.2303 J Total energy : 22.3407 J First death : round 108 Elapsed time : 0.067 s ================================================== ``` --- ## 🧬 各协议详解 ### LEACH — 经典分簇 **簇首选举阈值**: ``` T(n) = p / (1 - p × (r mod 1/p)) 若 n ∈ G T(n) = 0 其他 ``` **流程**: 簇首选举 → 距离分簇 → TDMA 传输 → 簇首聚合 → 发送基站 --- ### LEACH-C — 集中式 **改进**: 基站收集所有节点能量,贪心选择 k 个最优簇首(k = √(n/2π) × √(A/π)) **评分函数**: `score = 0.6 × (E/E_max) + 0.4 × (d_min/d_max)` --- ### LEACH-E — 能耗感知 **改进阈值**: ``` T(n) = T_base × (E_residual / E_initial) ``` 能量高的节点阈值更大 → 更可能成为簇首 → 能耗均衡 --- ### PEGASIS — 链式路由 **算法**: 1. 贪心建链:从左下角开始,每次选最近邻居 2. 轮流链头:round-robin 选链头 3. 数据沿链传递:两端 → 链头 → 基站 **优势**: 每个节点只与邻居通信,传输距离极短 --- ### TEEN — 阈值响应 **阈值机制**: - 硬阈值 (HT): 感知值 > HT 才考虑传输 - 软阈值 (ST): 变化 > ST 才实际传输 **适用场景**: 火灾监测、温度突变、事件驱动 --- ### LEACH-3D — 三维仿真 **扩展**: Node3D 增加 z 坐标,距离计算 `d = √(Δx² + Δy² + Δz²)` **适用场景**: 水下传感器网络、山区立体部署 --- ## 📁 项目结构 ``` LEACH/ ├── src/leach/ # 核心包 │ ├── node.py # Node (2D) │ ├── node3d.py # Node3D (3D) │ ├── network.py # LEACHNetwork │ ├── leach_c.py # LEACHCNetwork │ ├── leach_e.py # LEACHENetwork │ ├── network3d.py # LEACHNetwork3D │ ├── pegasis.py # PEGASISNetwork │ ├── teen.py # TEENNetwork + TEENNode │ ├── protocol.py # 协议常量与能耗模型 │ ├── visualization.py # 可视化 + 动画 │ └── cli.py # CLI 入口 ├── tests/ # 72 个单元测试 ├── examples/ # 协议对比示例 └── docs/ # 详细文档 ``` --- ## 📚 API 参考 ```python # LEACH from leach import LEACHNetwork net = LEACHNetwork(num_nodes=100, num_rounds=200, p=0.05) # LEACH-C (集中式) from leach import LEACHCNetwork net = LEACHCNetwork(num_nodes=100, num_rounds=200) # LEACH-E (能耗优化) from leach import LEACHENetwork net = LEACHENetwork(num_nodes=100, num_rounds=200) # PEGASIS (链式) from leach import PEGASISNetwork net = PEGASISNetwork(num_nodes=100, num_rounds=200) # TEEN (阈值响应) from leach import TEENNetwork net = TEENNetwork(num_nodes=100, num_rounds=200, hard_threshold=50, soft_threshold=5) # 3D 仿真 from leach import LEACHNetwork3D net = LEACHNetwork3D(num_nodes=100, area_size=(100, 100, 100)) # 运行 stats = net.run() # stats: { alive_nodes, dead_nodes, average_energy, total_energy, first_node_death_round, ... } ``` > 📖 完整 API 文档见 [docs/api.md](docs/api.md) --- ## ⚡ 性能 | 节点数 | LEACH | LEACH-C | LEACH-E | PEGASIS | TEEN | |--------|-------|---------|---------|---------|------| | 100 | 4 ms | 8 ms | 4 ms | 7 ms | 4 ms | | 500 | 7 ms | 35 ms | 7 ms | 45 ms | 7 ms | | 1,000 | 13 ms | 120 ms | 13 ms | 180 ms | 13 ms | | 5,000 | 200 ms | 3 s | 200 ms | 5 s | 200 ms | --- ## 🗺️ 路线图 | 版本 | 内容 | 状态 | |------|------|------| | **v1.0** | LEACH · pip 包 · CLI · 34 测试 | ✅ | | **v1.1** | LEACH-C · LEACH-E | ✅ | | **v1.2** | 3D 网络仿真 | ✅ | | **v1.3** | 能耗动画 (GIF) | ✅ | | **v2.0** | PEGASIS · TEEN · 6 协议套件 · 72 测试 | ✅ | | **v2.1** | LEACH-C 3D · TEEN 3D | 🔜 | | **v2.2** | 协议自适应选择(AI 推荐最优协议) | 📋 | | **v3.0** | 支持真实传感器数据接入 | 📋 | --- ## 🤝 贡献 欢迎 Issue 和 PR!详见 [CONTRIBUTING.md](CONTRIBUTING.md)。 --- ## 📄 License [MIT](LICENSE) ---
**⭐ 如果对你的研究或学习有帮助,请点个 Star!**