- Created summary.csv to store simulation results for various scenarios, protocols, and metrics. - Developed run.sh script to automate the simulation process, including dependency checks, simulation execution, and result analysis. - Ensured proper directory structure for results and reports. - Added error handling for Python and matplotlib dependencies.
Simulation LEACH vs LEACH-C pour Réseaux Dynamiques
Vue d'ensemble
Ce projet implémente une simulation complète des protocoles LEACH (Low-Energy Adaptive Clustering Hierarchy) et LEACH-C (centralisé) pour des réseaux de capteurs sans fil (WSN) avec mobilité dynamique des nœuds.
Contexte : Agriculture de précision - suivi en temps réel de bovins avec capteurs se déplaçant dans un champ.
Deadline : 5 novembre 2025, 23:42
Structure du Projet
/algo/
├── code/
│ ├── config.py # Configuration et constantes
│ ├── node.py # Classe Node
│ ├── metrics.py # Classe Metrics (10 métriques)
│ ├── leach.py # Protocole LEACH décentralisé
│ ├── leach_c.py # Protocole LEACH-C centralisé
│ ├── main.py # Contrôleur principal
│ ├── analysis.py # Analyseur et graphiques
│ └── run.sh # Script de lancement
├── results/
│ ├── simulation_results.json # Résultats bruts
│ ├── summary.csv # Tableau récapitulatif
│ ├── 01_FDN_Comparison.png # Graphique FDN
│ ├── 02_FMR_Comparison.png # Graphique FMR
│ ├── 03_DLBI_Comparison.png # Graphique DLBI
│ ├── 04_RSPI_Comparison.png # Graphique RSPI
│ └── 05_Alive_Nodes_Over_Time.png
└── rapport/
└── Rapport_LEACH_LEACHC.typ # Rapport complet (Typst + PDF)
Comment Exécuter
1. Installation des dépendances
pip install matplotlib
2. Lancer la simulation
cd /home/paul/algo
python code/main.py
3. Générer les graphiques et analyses
python code/analysis.py
Les résultats seront sauvegardés dans /home/paul/algo/results/
Implémentation
Protocoles
LEACH (Décentralisé)
- Élection aléatoire des cluster heads (probabilité p)
- Formation de clusters basée sur proximité
- Communication nœud → CH → BS
- Agrégation de données au niveau CH
LEACH-C (Centralisé)
- BS reçoit l'état de tous les nœuds
- Calcul des clusters optimaux (heuristique : sélection par énergie)
- Distribution optimale des rôles
- Moins aléatoire mais plus coûteux en énergie
Mobilité Dynamique
- Chaque nœud se déplace aléatoirement chaque round
- Déplacement max : 5 mètres
- Restent dans les limites du champ (100m × 100m)
- Impact majeur sur stabilité et efficacité
Modèle Énergétique
E_Tx(l, d) =
- Si d ≤ d0 : E_elec×l + E_fs×l×d²
- Si d > d0 : E_elec×l + E_mp×l×d⁴
E_Rx(l) = E_elec × l
E_Agg(l) = E_da × l
d0 = sqrt(E_fs / E_mp)
Métriques Implémentées
1. Nœuds Vivants (Alive Nodes Count)
Nombre de nœuds actifs après chaque round.
2. Paquets vers CH (Packets to Cluster Head)
Nombre total de paquets envoyés par les nœuds réguliers vers leurs CHs.
3. Paquets vers BS (Packets to Base Station)
Nombre total de paquets envoyés par les CHs vers la station de base.
4. Énergie Résiduelle (Residual Energy)
Énergie restante dans chaque nœud.
5. Muted Rounds
Nombre de rounds où aucun CH n'est élu (communication impossible).
6. FMR (First Muted Round)
Le round exact où le premier silence apparaît.
7. FDN (First Dead Node)
Le round quand le premier nœud épuise son énergie.
8. Last Dead Node
Le round quand le dernier nœud meurt.
9. DLBI (Dynamic Load Balancing Index)
DLBI = \frac{1}{N} \sum_{r=1}^{N} DLBI_r
DLBI_r = 1 - \frac{\sum(L_{j,r} - \bar{L}_r)^2}{m_r \times \bar{L}_r^2}
Interprétation : Évalue l'équilibre de charge entre les CHs.
- Proche de 1 = distribution équilibrée
- Bas = déséquilibre grave
10. RSPI (Relative Silence Period Index)
RSPI = \frac{2 \times [(1 - FR_{muted}/R_{max}) \times (1 - LR_{dead}/R_{max})]}{(1 - FR_{muted}/R_{max}) + (1 - LR_{dead}/R_{max})}
Interprétation : Moyenne harmonique entre résilience et durée de vie.
Scénarios de Test
| Scénario | Paquets (l) | Probabilité (p) | Nœuds (n) |
|---|---|---|---|
| 1 | 2000 | 0.05 | 100 |
| 2 | 2000 | 0.50 | 100 |
| 3 | 2000 | 0.95 | 100 |
| 4 | 4000 | 0.05 | 100 |
| 5 | 4000 | 0.05 | 200 |
| 6 | 4000 | 0.10 | 200 |
Résultats
Les résultats incluent :
- Fichier JSON : Données complètes de chaque round
- CSV récapitulatif : Tableau avec toutes les métriques
- Graphiques :
- FDN Comparison
- FMR Comparison
- DLBI Comparison
- RSPI Comparison
- Nombre de nœuds vivants au fil du temps
Points Importants
Dynamique vs Statique
- Statique : Clusters stables, peu d'overhead
- Dynamique : Clusters instables, plus d'énergie perdue, plus réaliste
Rounds Muets (Muted Rounds)
Quand aucun nœud n'est élu comme CH → communication impossible. Problème majeur en réseau dynamique.
LEACH vs LEACH-C
- LEACH : Scalable, décentralisé, mais élection aléatoire
- LEACH-C : Meilleure distribution, plus coûteux énergétiquement
Impact de la Mobilité
La mobilité dynamique cause :
- Augmentation de la consommation d'énergie
- Plus de muted rounds
- Nécessité de réélections fréquentes
Technologies Utilisées
- Python 3.x
- Matplotlib : Visualisation des résultats
- JSON : Sauvegarde des résultats
- Simulation événementielle : Approche discrète des rounds
Fichiers Principaux
config.py
Configuration globale, paramètres, scénarios.
node.py
Classe représentant un capteur (position, énergie, états).
metrics.py
Collecte des 10 métriques de performance.
leach.py
Implémentation du protocole LEACH décentralisé.
leach_c.py
Implémentation du protocole LEACH-C centralisé.
main.py
Contrôleur principal : crée les nœuds, lance les protocoles.
analysis.py
Analyseur et générateur de graphiques.
Ressources Académiques
-
LEACH Original : W. B. Heinzelman et al., "An application-specific protocol architecture for wireless microsensor networks", IEEE Trans. Wireless Commun., 2002
-
LEACH-C : W. B. Heinzelman et al., "Energy-efficient communication protocol for wireless microsensor networks", Proc. HICSS, 2000
-
Efficacité Énergétique : N. Wang & H. Zhu, "An energy efficient algorithm based on LEACH protocol", Proc. ICCSEE, 2012
Checklist
- Implémentation LEACH (décentralisé)
- Implémentation LEACH-C (centralisé)
- Support mobilité dynamique
- Modèle énergétique complet
- 10 métriques de performance
- 6 scénarios de test
- Génération de graphiques
- Rapport complet (10 pages max)
📞 Contact
Pour des questions ou clarifications, veuillez consulter les spécifications du projet.
Deadline : 5 novembre 2025, 23:42 ⏰