🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_264cvmn_264.py
Version 1.0.0
Date de création 07/03/2026
Auteur / Demandeur IA Généré
Objectif principal Simuler et visualiser la dynamique proie-prédateur (Cerfs vs Loups) via un modèle à agents sur une grille 2D.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script simule un écosystème fermé où deux types d’agents (Cerfs et Loups) interagissent sur une grille toroïdale. Il combine une animation spatiale en temps réel des déplacements et un graphique synchronisé illustrant l’évolution des populations, rappelant les modèles de Lotka-Volterra.
📌 Problème résolu
Il permet d’étudier visuellement et numériquement l’équilibre fragile d’un écosystème, l’impact de la disponibilité des proies sur la survie des prédateurs, et les cycles d’extinction ou de prolifération en fonction de paramètres biologiques (énergie, reproduction, faim).
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.8+
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution Interface graphique (Matplotlib Animation)
📦 Dépendances / Librairies
# Librairies standard (built-in)
random (pour les choix de direction)
# Librairies externes (pip install)
numpy (calculs matriciels et positions)
matplotlib (moteur de rendu graphique et animation)
📥 ENTRÉES (INPUTS)
📂 Paramètres de configuration (Variables GlobalES)
# Nom Type Obligatoire Description Exemple
1 GRID_SIZE int ✅ Oui Taille du monde (côté de la grille) 50
2 N_CERFS_INIT int ✅ Oui Population initiale de proies 100
3 PROBA_REPRO_CERF float ✅ Oui Chance de naissance par étape 0.4
4 ENERGIE_MAX_LOUP int ✅ Oui Seuil de faim et énergie max 10
📤 SORTIES (OUTPUTS)
📂 Fichiers / Données en sortie
Type Chemin / Format Description
Graphique Fenêtre interactive Visualisation 2D (Cerfs en vert, Loups en rouge)
Logs Console Message d’extinction et étape finale
🧱 STRUCTURE DU SCRIPT
script_264cvmn_264.py
│
├── 📌 IMPORTS (numpy, matplotlib, random)
├── 📌 CONSTANTES / CONFIG (Paramètres biologiques et simulation)
├── 📌 CLASSES D’AGENTS
│ ├── Agent (Classe mère : position, déplacement)
│ ├── Cerf (Hérite d’Agent : reproduction simple)
│ └── Loup (Hérite d’Agent : gestion énergie, faim, reproduction)
├── 📌 LOGIQUE SYSTÈME
│ └── EcosystemSimulation (Gestion des listes d’agents et moteur de simulation)
└── 📌 VISUALISATION & MAIN (visualize() et update())
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
move() Aucun None Déplace l’agent (8 directions + sur place)
step() Aucun bool Calcule une étape (manger, mourir, naître)
update(frame) frame: int tuple Met à jour les graphiques pour FuncAnimation
🔄 LOGIQUE / ALGORITHME
ÉTAPE 1 → Initialisation des populations à des positions aléatoires.
↓
ÉTAPE 2 → Phase Cerfs : Déplacement + tentative de reproduction.
↓
ÉTAPE 3 → Phase Loups : Déplacement + consommation énergie + vérification collision (manger Cerf).
↓
ÉTAPE 4 → Phase Survie : Si Loup a mangé → reproduction possible. Si Loup énergie ≤0 → mort.
↓
ÉTAPE 5 → Mise à jour graphique et stockage de l’historique des populations.
🚨 GESTION DES ERREURS
Cas d’erreur Type d’exception Comportement attendu
Extinction totale Logique interne anim.event_source.stop() : Arrêt propre de l’animation
Population nulle ValueError Géré par une vérification if coords.size > 0 pour éviter le crash de scatter
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 (Monde Toroïdal) : Si un agent dépasse le bord (ex: x=51), il réapparaît de l’autre côté (x=1) via l’opérateur modulo.
Règle 2 (Métabolisme) : Les loups perdent 1 point d’énergie par tour, peu importe leurs actions.
Règle 3 (Prédation) : Un loup ne peut manger qu’un seul cerf par tour s’ils partagent la même coordonnée exacte.
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu Statut
1 Survie Proie N_LOUPS_INIT=0 Explosion de la population verte ⬜ À tester
2 Famine Prédateur N_CERFS_INIT=0 Extinction rapide des loups rouges ⬜ À tester
3 Équilibre Paramètres par défaut Oscillations cycliques des populations ⬜ À tester
📊 PERFORMANCES ATTENDUES
Temps d’exécution : Fluide jusqu’à ~1000 agents. Ralentissement possible au-delà dû à la recherche linéaire de collision.
Mémoire : Faible, gestion par listes d’objets Python.
📝 EXEMPLE D’UTILISATION
▶️ Lancement direct
Bash
python script_264cvmn_264.py
📋 Sortie console type
Plaintext
Simulation terminée à l’étape 342. Extinction.




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