🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_244cvmn_244.py
Version 1.0.0
Date de création 02/03/2026
Auteur / Demandeur IA Généré (Modèle Gemini)
Objectif principal Simuler un écosystème de savane interactif utilisant une approche de modélisation à base d’agents (ABM) pour observer les dynamiques populations-ressources.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script simule la survie, la reproduction et l’évolution de trois espèces (Lions, Zèbres, Éléphants) dans un environnement doté d’une ressource dynamique (végétation). Il utilise matplotlib pour afficher une animation en temps réel montrant les déplacements, les chasses, la consommation d’herbe et l’évolution génétique des traits (vitesse).
📌 Problème résolu
Il permet d’étudier visuellement et statistiquement les cycles de Lotka-Volterra (prédateur-proie), l’impact de la raréfaction des ressources sur une population et la sélection naturelle (mutation des gènes de vitesse et de coût énergétique).
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.8+ (pour le typage typing)
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution CLI / Interface Graphique (Matplotlib)
📦 Dépendances / Librairies
Librairies standard (built-in)
random, typing, math
Librairies externes (pip install)
numpy (Calculs matriciels et positions)
matplotlib (Moteur de rendu graphique et animation)
📥 ENTRÉES (INPUTS)
📂 Fichiers / Sources de données
Le script est autonome et utilise un dictionnaire de configuration interne nommé CONFIG.
CONFIG (dict) : Définit la taille du monde, les rayons de détection, les taux de reproduction et les probabilités de mutation.
📤 SORTIES (OUTPUTS)
📂 Fichiers / Données en sortie
Type Chemin / Format Description
Graphique Fenêtre Matplotlib Animation interactive du monde en 2D.
Rapport Fenêtre Matplotlib Graphiques de synthèse affichés à la fermeture de la simulation.
🧱 STRUCTURE DU SCRIPT
script_244cvmn_244.py
📌 CONFIGURATION : Constantes globales (vitesse, énergie, mutation).
📌 CLASSE VegetationGrid : Gère la croissance logistique de l’herbe sur une grille 2D.
📌 CLASSE MÈRE Agent : Logique commune (vieillissement, mouvement, mutation, perception).
📌 CLASSES FILLES :
Lion : Comportement de chasse et poursuite.
Zebra : Comportement de fuite et pâturage rapide.
Elephant : Comportement robuste, consommation lente, grande longévité.
📌 CLASSE SafariSimulation : Orchestre les tours de jeu (steps) et l’historique.
📌 VISUALISATION : Fonctions run_simulation et update pour l’animation.
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
step_simulation() Aucun None Calcule un tour complet (mouvement -> repas -> mort -> naissance).
perceive_environment() agents, cible, rayon List[Agent] Détecte les proies ou prédateurs aux alentours.
reproduce() Aucun Optional[Agent] Crée un descendant avec des traits légèrement modifiés (mutation).
update(frame) frame: int tuple Met à jour les positions des points sur le graphique pour l’animation.
🔄 LOGIQUE / ALGORITHME
Initialisation : Génération de la grille de végétation et placement aléatoire des agents.
Boucle de Simulation (par Step) :
Végétation : Repousse selon un modèle logistique.
Agents :
Détection des cibles (nourriture ou menace).
Mouvement (vers, loin de, ou aléatoire).
Consommation d’énergie et vieillissement.
Test de reproduction (si énergie > seuil).
Visualisation : Rafraîchissement de la Heatmap (herbe) et des Scatter plots (animaux).
🚨 GESTION DES ERREURS
Mortalité : Si l’énergie tombe à 0 ou si l’âge dépasse max_lifespan, l’agent est marqué comme alive = False.
Surpopulation : Un nettoyage automatique de la liste self.agents est effectué au-delà de 500 agents pour préserver la mémoire.
Bornes : Mode toroïdal (les agents qui sortent à droite réapparaissent à gauche).
✅ CONTRAINTES & RÈGLES MÉTIER
Mutation : Les traits mutés sont bridés entre 50% et 200% des valeurs de base pour éviter des agents « immortels » ou « 超-rapides » non réalistes.
Fuite : La fuite consomme plus d’énergie qu’un déplacement normal pour les herbivores.
🧪 TESTS ATTENDUS
Stabilité : Vérifier que la population de zèbres ne tombe pas à zéro dès les 100 premiers steps.
Génétique : Observer si la vitesse moyenne des zèbres augmente avec le temps (sélection par la pression des lions).
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python script_244cvmn_244.py
Le script ouvrira une fenêtre affichant la savane. À la fermeture de celle-ci, un rapport statistique final s’affiche automatiquement.



Avis
Il n’y a pas encore d’avis.