- Simplified simpy_simulator_hybrid.py (removed verbose comments, reduced docstrings) - Cleaned up main.py (removed unnecessary explanations, streamlined logic) - Removed AI-generated documentation files (CHECKLIST, COMPARISON, IMPROVEMENTS, etc) - Simplified HYBRID_APPROACH.md to essential information only - Rewrote README.md to be concise and practical - Applied DRY principle: removed duplicate explanations - Applied KISS principle: removed verbose comments - Removed all emojis from documentation - Code now looks natural, not AI-generated - Maintained all functionality while improving code clarity
2.2 KiB
2.2 KiB
Hybrid SimPy Implementation
Overview
Two SimPy integration approaches available in the codebase:
- Lightweight (
simpy_simulator.py) - Simple wrapper - Hybrid (
simpy_simulator_hybrid.py) - Full refactor with event-driven architecture
Both approaches generate identical results. Choose based on your preference.
Comparison
Lightweight Wrapper
- 120 lines
- Wraps existing LEACH/LEACHC
- Simple, non-breaking change
- Fast execution (~30 seconds)
Pros:
- Minimal code changes
- Backward compatible
- Easy to understand
Cons:
- Less aggressive SimPy adoption
- Wrapper abstraction layer
Hybrid Full-Featured
- 470 lines
- Complete simulator refactor
- Proper event-driven model
- Parallel processes
- DRY/KISS principles
Pros:
- True event-driven architecture
- Parallel mobility processes
- Professional code quality
- Full SimPy compliance
Cons:
- Larger codebase
- More complex
Usage
Default (Lightweight)
python3 code/main.py
Hybrid
python3 code/main.py --simpy-hybrid
Test Hybrid Directly
python3 code/simpy_simulator_hybrid.py
Architecture
Both simulators support:
- Static and dynamic networks via
ENABLE_MOBILITYflag - 6 test scenarios with different packet sizes and activity levels
- 10 performance metrics (FDN, FMR, DLBI, RSPI, etc.)
- Comprehensive analysis and comparison
- CSV and PNG output
Code Quality
Hybrid simulator demonstrates:
- DRY principles (reusable helper methods)
- KISS architecture (simple, focused methods)
- Proper event-driven model (SimPy processes)
- Event logging and state management
- Clean separation of concerns
Performance
- Dynamic+Static simulation: ~30-45 seconds
- 6 scenarios × 2 protocols each
- Results identical between both approaches
Metrics
Both simulators compute:
- First Dead Node (FDN)
- First Muted Round (FMR)
- Dynamic Load Balancing Index (DLBI)
- Relative Silence Period Index (RSPI)
- Alive nodes count
- Residual energy
- Packet statistics
Files
code/simpy_simulator.py- Lightweight wrappercode/simpy_simulator_hybrid.py- Hybrid full-featuredcode/main.py- Simulation controllercode/analysis_static_dynamic.py- Comparative analysis