🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_617cvmn_617.py
Version 1.0.0
Date de création 17/03/2026
Auteur / Demandeur refoïa jeremy
Objectif principal Simuler la navigation d’un agent biologique (micro-organisme) vers une source de nutriments en évitant des obstacles via l’algorithme « Bug ».
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script modélise le déplacement d’un agent autonome dans un environnement 2D. L’agent tente d’atteindre une cible (nutriment) en ligne droite. S’il rencontre un obstacle (cellule, protéine), il change de comportement pour le contourner en longeant sa paroi à 90° jusqu’à retrouver une voie libre.
📌 Problème résolu
Il adresse le besoin de simulation de micro-robotique bio-inspirée ou de chimiotactisme, permettant de visualiser comment une entité simple peut naviguer dans un milieu encombré sans cartographie globale préalable.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution CLI / Visuel (Matplotlib)
📦 Dépendances / Librairies
Librairies externes (pip install) :
matplotlib (Visualisation graphique)
numpy (Calculs vectoriels et matrices)
📥 ENTRÉES (INPUTS)
# Nom Type Obligatoire Description Exemple
1 start list/array ✅ Oui Coordonnées de départ [x,y] [0, 0]
2 goal list/array ✅ Oui Coordonnées de la cible [x,y] [10, 10]
3 obstacles list of tuples ✅ Oui Liste de (x, y, rayon) (5, 5, 1.5)
4 step_size float ❌ Non Vitesse de déplacement (pas) 0.5
📤 SORTIES (OUTPUTS)
# Nom Type Description Exemple
1 self.path list of tuples Liste des positions successives [(0,0), (0.5, 0.5)…]
2 Graphique Matplotlib Plot Fenêtre interactive affichant le trajet et les obstacles Trajectoire verte
🧱 STRUCTURE DU SCRIPT
script_617cvmn_617.py
│
├── 📌 IMPORTS (matplotlib, numpy)
├── 📌 CLASSE BioBugNav (Cœur logique)
│ ├── __init__() → Initialisation des paramètres
│ ├── move_to_goal() → Calcul du vecteur vers la cible
│ ├── is_obstructed() → Détection de collision collision
│ └── run_simulation() → Boucle de décision
└── 📌 CONFIGURATION & VISUALISATION (Exécution main)
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
is_obstructed(pos) position: array bool Détecte si la position touche un obstacle
run_simulation(max_steps) max_steps: int None Gère l’alternance entre marche directe et contournement
🔄 LOGIQUE / ALGORITHME
ÉTAPE 1 → Calcul du vecteur vers la cible.
ÉTAPE 2 → Vérification : le prochain pas est-il obstrué ?
NON → Avancer normalement vers la cible.
OUI → Appliquer une rotation de 90° (matrice de rotation) pour longer l’obstacle.
ÉTAPE 3 → Enregistrer la position dans l’historique path.
ÉTAPE 4 → Si distance à la cible < step_size ou max_steps atteint : Fin. 🚨 GESTION DES ERREURS Cas d’erreur Type d’exception Comportement attendu Cible inatteignable N/A Le script s’arrête après max_steps (évite boucle infinie). Division par zéro RuntimeWarning Géré par la vérification norm > 0 dans les calculs de vecteurs.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : L’agent détecte un obstacle avec une marge de sécurité de 0.2μm en plus du rayon de l’obstacle.
Règle 2 : Le contournement est simplifié (rotation fixe à gauche/droite) et ne garantit pas la sortie d’un labyrinthe complexe (algorithme Bug-0/1 basique).
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu Statut
1 Cas nominal Pas d’obstacles Ligne droite parfaite ⬜ À tester
2 Obstacle central Obstacle à (5,5) sur trajectoire Déviation fluide et retour vers cible ⬜ À tester
3 Cible sur obstacle Goal = Obstacle pos Arrêt sécurisé en périphérie ⬜ À tester
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python script_617cvmn_617.py
📋 Exemple de sortie attendue (Console & Log)
Une fenêtre s’ouvre affichant un point bleu (départ), un point rouge (cible) et des cercles gris (obstacles) traversés par une ligne verte sinueuse.



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