""" Configuration et Constantes pour la Simulation LEACH/LEACH-C """ # ============= PARAMÈTRES DE SIMULATION ============= # Dimensions du champ FIELD_WIDTH = 100 # mètres FIELD_HEIGHT = 100 # mètres # Position de la station de base BS_POSITION = (0, -100) # Nombre de nœuds (par scénario) NUM_NODES_DEFAULT = 100 # Énergie initiale par nœud INITIAL_ENERGY = 0.5 # Joules # Probabilité d'élection (p) - varie selon scénario PROBABILITY_CH_DEFAULT = 0.05 # Taille des paquets en bits (l) - varie selon scénario PACKET_SIZE_DEFAULT = 2000 # bits # Mobilité MAX_DISPLACEMENT_PER_ROUND = 5 # mètres ENABLE_MOBILITY = True # False pour mode statique (pas de déplacement) # Nombre de rounds de simulation NUM_ROUNDS = 1000 # À adapter selon durée de vie du réseau # ============= CONSTANTES ÉNERGÉTIQUES ============= # Énergie électronique (transmission/réception par bit) E_ELEC = 50e-9 # Joules par bit # Modèle espace libre (courtes distances) E_FS = 10e-12 # Joules par bit par m² # Modèle multi-trajet (longues distances) E_MP = 0.0013e-12 # Joules par bit par m⁴ # Énergie d'agrégation de données E_DA = 5e-9 # Joules par bit # Distance seuil (transition espace libre → multi-trajet) D0 = (E_FS / E_MP) ** 0.5 # ============= SCÉNARIOS DE TEST ============= SCENARIOS = [ {"l": 2000, "p": 0.05, "n": 100, "name": "Scenario_1_Small_Low"}, {"l": 2000, "p": 0.5, "n": 100, "name": "Scenario_2_Small_Medium"}, {"l": 2000, "p": 0.95, "n": 100, "name": "Scenario_3_Small_High"}, {"l": 4000, "p": 0.05, "n": 100, "name": "Scenario_4_Large_Low"}, {"l": 4000, "p": 0.05, "n": 200, "name": "Scenario_5_Large_Low_200nodes"}, {"l": 4000, "p": 0.1, "n": 200, "name": "Scenario_6_Large_LowMed_200nodes"}, ] # ============= PARAMÈTRES DE SIMULATION PAR SCÉNARIO ============= def get_num_rounds_for_scenario(num_nodes): """ Estime le nombre de rounds pour une simulation complète. Plus de nœuds = plus d'énergie disponible = plus de rounds. """ return 2000 + (num_nodes - 100) * 5 # Ajustement heuristique # ============= FLAGS DE DEBUG/LOGGING ============= DEBUG = False LOG_LEVEL = "INFO" # DEBUG, INFO, WARNING, ERROR