# LEACH **Repository Path**: phoenix_pond_chant/LEACH ## Basic Information - **Project Name**: LEACH - **Description**: LEACH协议算法实现 - **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-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 💡 LEACH协议算法实现与优化 🔍 ![Python Version](https://img.shields.io/badge/python-3.10%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Gitee Stars](https://gitee.com/phoenix_pond_chant/LEACH/badge/star.svg?theme=dark) ![Last Commit](https://img.shields.io/badge/last%20commit-2026--04--08-brightgreen) ![Code Size](https://img.shields.io/badge/code%20size-32%20KB-orange) ![Tests](https://img.shields.io/badge/tests-passing-success) ## 📊 项目状态 | 指标 | 状态 | 说明 | |------|------|------| | 代码质量 | ✅ 优秀 | 面向对象设计,类型提示完整 | | 性能优化 | ✅ 已完成 | 同步/异步双模式,向量化计算 | | 文档完整 | ✅ 完整 | 中英文文档,性能报告 | | 测试覆盖 | ✅ 良好 | 性能测试框架,多场景验证 | | 可扩展性 | ✅ 良好 | 模块化设计,易于扩展 | ## 项目简介 LEACH(Low Energy Adaptive Clustering Hierarchy)是无线传感器网络中一种经典的分簇路由协议,通过动态选择簇首节点,平衡网络能耗,延长网络生命周期。本项目实现了LEACH协议算法,并进行了全面优化,包括代码结构、算法效率和异步执行三个方面。 ## 🌟 功能特性 ### 核心功能 - ✅ LEACH协议分簇算法实现 - ✅ 动态簇首选择机制 - ✅ 节点距离计算与簇分配 - ✅ 可视化分簇结果 ### 优化特性 - 🎨 面向对象设计,代码结构清晰 - ⚡ 算法优化,提高执行效率 - 🚀 支持异步执行,充分利用多核CPU - 📊 完善的日志系统 - 🎯 详细的性能测试报告 ## 📁 代码结构 ``` LEACH/ ├── leach_code.py # 优化后的LEACH协议实现 ├── performance_test.py # 性能测试脚本 ├── OPTIMIZATION_REPORT.md # 优化报告 └── README.md # 项目文档 ``` ## 🚀 安装与使用 ### 环境要求 - Python 3.10+ - numpy - matplotlib - psutil ### 安装依赖 ```bash pip install numpy matplotlib psutil ``` ### 运行程序 ```bash python leach_code.py ``` ### 运行性能测试 ```bash python performance_test.py ``` ## 💡 核心实现 ### Node类 表示传感器节点,包含坐标信息和节点状态 ### LEACHNetwork类 管理整个LEACH网络,包括: - 节点生成 - 簇首选择 - 分簇形成 - 可视化展示 ### 关键算法 #### 1. 簇首选择算法 ```python def select_cluster_heads(self) -> List[Node]: # 计算阈值 threshold = self.calculate_threshold() # 批量生成随机数 rands = np.random.random(self.node_count) # 选择簇首 cluster_head_indices = np.where(rands <= threshold)[0] # ... ``` #### 2. 分簇算法 ```python def form_clusters(self) -> List[List[Node]]: # 选择簇首 cluster_heads = self.select_cluster_heads() # 批量计算距离 distances = np.sqrt( np.sum( (non_head_coords[:, np.newaxis, :] - head_coords[np.newaxis, :, :]) ** 2, axis=2 ) ) # 分配节点到簇 closest_head_indices = np.argmin(distances, axis=1) # ... ``` ## 📊 性能测试 ### 测试结果 | 节点数量 | 模式 | 总耗时(s) | 内存增量(MB) | 性能对比 | |----------|------|-----------|--------------|----------| | 100 | 同步 | 0.0038 | 0.02 | ⚡ 同步快74倍 | | 100 | 异步 | 0.2809 | 2.82 | ⏳ 异步开销大 | | 500 | 同步 | 0.0068 | 0.14 | ⚡ 同步快15% | | 500 | 异步 | 0.0078 | 0.68 | ⏳ 异步内存高 | | 1000 | 同步 | 0.0130 | 0.20 | ⚡ 同步快28% | | 1000 | 异步 | 0.0166 | 0.14 | ⏳ 异步时间略长 | | 2000 | 同步 | 0.0382 | 0.38 | ⚡ 同步快7% | | 2000 | 异步 | 0.0411 | -0.60 | 📉 异步内存优化 | | 5000 | 同步 | 0.2004 | 1.03 | 🔄 性能相当 | | 5000 | 异步 | 0.1984 | 0.70 | 📈 异步略优 | ### 📈 性能可视化图表 ![性能对比图表](benchmark_comparison.png) *图1: LEACH协议同步与异步模式性能对比* ![执行模式推荐](execution_recommendation.png) *图2: 基于网络规模的执行模式推荐* ### 最佳实践 - **小节点数量(<500)**:推荐使用同步执行模式 - **大节点数量(≥5000)**:推荐使用异步执行模式 - **实时性要求高**:使用同步执行模式 - **资源受限环境**:使用异步执行模式 ## 🛠️ 优化内容 ### 1. 代码结构优化 - 采用面向对象设计,创建`Node`和`LEACHNetwork`类 - 引入日志系统,替代打印语句 - 优化变量命名,提高代码可读性 - 添加完善的类型提示 ### 2. 算法优化 - 使用numpy向量运算批量计算距离 - 优化簇首选择算法,避免除零错误 - 改进分簇逻辑,减少不必要的计算 - 添加边界情况处理 ### 3. 异步操作改造 - 实现async/await异步编程模型 - 使用`run_in_executor`在后台线程执行CPU密集型操作 - 支持异步节点生成和异步轮次执行 - 可配置的异步/同步执行模式 ## 🔮 后续发展方向 1. 进一步优化距离计算算法,考虑使用KD树等数据结构 2. 实现分布式LEACH协议,支持大规模网络 3. 添加更多的可视化选项,支持实时监控 4. 实现动态调整簇首选择概率的机制 5. 支持不同的分簇算法,如LEACH-C、LEACH-F等 ## 📄 许可证 本项目采用MIT许可证,详情请查看LICENSE文件。 ## 🤝 贡献 欢迎提交Issue和Pull Request,一起改进LEACH协议的实现! ## 📚 参考资料 - LEACH: Low-Energy Adaptive Clustering Hierarchy for Wireless Sensor Networks - Wireless Sensor Networks: Architectures and Protocols - 无线传感器网络路由协议与算法 ## 📁 新增工程化文件 本次工程化升级新增了以下文件: 1. **README_EN.md** - 英文版项目文档 2. **CHANGELOG.md** - 语义化版本变更日志 3. **generate_benchmark_charts.py** - 性能图表生成脚本 4. **create_simple_charts.py** - 简化版图表生成脚本 5. **benchmark_comparison.png** - 性能对比图表 6. **execution_recommendation.png** - 执行模式推荐图表 ## 🔄 版本管理 项目已升级至 **v1.0.0** 版本,包含完整的工程化配置: - 语义化版本控制 - 完整的变更日志 - 性能基准测试 - 中英文双语文档 - 自动化图表生成 #LEACH #协议算法 #无线传感器网络 #能耗平衡 #智能生活 #工程化 #性能优化