script_617cvmn_617.py

49,00 

Simuler la navigation d’un agent biologique (micro-organisme) vers une source de nutriments en évitant des obstacles via l’algorithme « Bug ».

UGS : script_617cvmn_617.py Catégorie : Étiquette :

🔷 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.

Soyez le premier à laisser votre avis sur “script_617cvmn_617.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *