pl Description du projet 2024-25

Projet 2024-25 - Présentation générale
Simulation d'un modèle prédateurs-proies
Détection des proies par vibration


But

Vous apprendrez à l'aide de ce projet à réaliser un programme complet et de taille plus importante que ceux avec lesquels vous avez travaillé jusqu'à présent. Votre programme comportera également une composante graphique. Sur le plan informatique, ce projet a pour but de consolider vos connaissances en programmation ainsi que de vous faire pratiquer les concepts essentiels de la programmation orientée-objet : abstraction et encapsulation, héritage, méthodes virtuelles et polymorphisme.


item item item
images tirées de : https://fr.vecteezy.com/photo/48134543-une-lezard-est-seance-sur-le-le-sable-dans-le-desert-contexte et https://www.vecteezy.com/free-photos/scorpions

1. Introduction

Le but du projet de cette année est de vous faire faire une modeste incursion dans les univers de  :

  1. la simulation de dynamiques d'évolution de populations animales [1] dans un contexte «prédateurs-proies»;
  2. la simulation de modèles neuronaux liés à des comportements animaux complexes.

Votre objectif sera de simuler la cohabitation de lézards et de scorpions dans un "écosystème". Les scorpions se nourissent de lézards qui se nourissent de cactus.

Ceci se fera :

  1. à l'échelle des populations : vous simulerez à ce niveau les cycles de vies complets des animaux (déplacements, consommation de nourriture, prédation, reproduction et mort).
  2. à l'échelle des individus: vous simulerez le fait que le repérage des lézards par les scorpions obéit à un modèle neuronal particulier [5] : les vibrations émanant du déplacement des lézards induisent des stimuli neuronaux chez le scorpion qui conditionnent son orientation vers sa proie.

Une description plus détaillée des modèles et techniques employés est fournie un peu plus bas.

Objectifs pédagogiques :

Au delà du domaine d'application, ce projet vous permettra d'aborder de nombreuses facettes intéressantes de la programmation:

Vous trouverez dans ce qui suit une description des hypothèses et techniques de simulation qui seront implémentées dans le cadre de ce projet, des éléments relatifs à l'organisation du travail et un certain nombre de références sur le domaine.

2. Hypothèses et techniques de simulation

Le but ici est d'introduire les éléments principaux à considérer lors de la simulation. Il ne s'agit ici que d'une description générale. L'énoncé du projet vous donnera des spécifications détaillées pour chaque étape suggérée.

Système à simuler à l'échelle de la population

L'environnement à simuler est peuplé d'«animaux», ici en l'occurrence de lézards et de scorpions.

Ces derniers sont des automates se déplaçant sur un terrain bi-dimensionel en quête de nourriture. Le terrain contient par endroit des sources de nourriture pour les lézards. Les scorpions, quant à eux, se nourissent de lézards2.

Cycle de vie

Les animaux se déplacent aléatoirement dans l'environnement. Si une source de nourriture est présente dans leur champ de vision, ils s'y dirigent et la consomment.

Ils ont une durée de vie limitée et meurent s'il viennent à manquer de nourriture.

Ils peuvent par ailleurs se reproduire et sont suffisamment intelligents pour tenter de fuir les prédateurs qui les traquent (s'ils en ont).

La simulation à l'échelle des populations permettra, entre autres, de visualiser l'évolution du nombre d'individus de chaque type au cours du temps en fonction de divers paramètres modifiables (nombre de prédateurs et de proies intialement présents, quantité de nourriture disponible, caractéristiques du champs de vision, facultés liées à la reproduction et à la fuite etc.)

L'environnement sera visualisé comme un terrain rectangulaire en deux dimensions. Il sera cependant géré comme un monde torique : les animaux dépassant les limites du monde par un côté réapparaîtront sur le côté opposé.

L'utilisateur pourra interagir avec la fenêtre visualisant la dynamique des populations : en cliquant sur une touche, la simulation basculera à l'échelle de l'individu. A cette échelle, votre programme simulera les mécanismes de la prédation à un niveau plus fin.

Système à simuler à l'échelle de l'individu

Pour simuler plus finement les mécanismes liés à la prédation chez le scorpion, nous adopterons les hypothèses suivantes :

  1. les lézards émettent des vibrations sur le terrain en se déplaçant;
  2. chacune des huit pattes du scorpions est dotée d'un senseur capable de capter les vibrations émises par les lézards. Pour simplifier nous modéliserons ces vibrations par un front d'ondes se déplaçant à la surface du sol.

Selon le modèle de [5], chaque senseur est relié à un neurone :

item

Lorsque les ondes émises par une proie atteignent un senseur, celui-ci transmet un signal au neurone auquel il est connecté. Un signal d'inhibition est aussi envoyé à un neurone connecté à un senseur de l'autre côté de l'animal. Ainsi, lorsque les fronts d'onde en se propageant atteignent les senseurs du scorpion qui sont les plus éloignés de la proie, les neurones liés à ces derniers auront une chance plus faible d'être activés. Le modèle mathématique calcule de cette façon les chances d'activer un neurone en fonction du moment auquel il a reçu le signal. Un calcul de l'angle de rotation du scorpion est ensuite fait en fonction des chances d'activation de l'ensemble des neurones.

Le modèle de simulation à l'échelle de la population et celui à l'échelle de l'individu ne seront pas intégrés dans le cadre de ce projet. En présence d'un nombre important de proies, les signaux émis sont en effet alors trop nombreux pour être interprétés de façon intelligente par le scorpion. Comme l'étude de la dynamique des populations nous intéresse aussi et qu'elle nécessite la création de nombres relativement important d'individus, le choix ici est de découpler les deux niveaux de simulation.

Techniques de simulation

Le but du projet est donc de :

  1. simuler l'évolution temporelle de la population de lézards et de scorpions ;
  2. simuler plus finement le mécanisme utilisé par un scorpion pour la prédation.

Il faudra bien sûr pour cela concevoir les classes/objets nécessaires et les organiser (héritage, encapsulation) de façon pertinente (ce que l'énoncé du projet vous aidera à faire).

Le programme minimal devra permettre de visualiser le cycle de vie complet des animaux et le mécanisme permettant au scorpions de localiser ses proies grâce au modèle neuronal décrit ci-dessus.

Une façon simple de simuler l'évolution du système à l'échelle de la population consiste à invoquer en boucle la mise à jour de la faune. Chaque itération correspondra à un cycle de simulation.

La boucle principale de la simulation à l'échelle de la population revient à parcourir l'ensemble des animaux présents pour en gérer les actions nécessaires à chaque cycle (déplacement, reproduction, consommation de nourriture etc..).

Un inconvénient potentiel dans ce type de simulation est l'ordre de gestion des évènements. Dans la version de base que vous suggérera l'énoncé, les animaux seront gérés les uns après les autres dans l'ordre de la liste, qui (à peu de choses près) est toujours le même. Cela induit en fait une synchronisation involontaire entre le système à simuler et l'«horloge de simulation» qui dans des cas plus réalistes peut être néfaste2. Pour éviter ce genre de problèmes, on pourra, dans une version améliorée, choisir de parcourir dans un ordre aléatoire la liste des évènements à gérer. Cela peut par exemple se faire en insérant au hasard tout nouvel entrant et/ou en ajoutant une tâche «mélanger les animaux à gérer» à chaque cycle de simulation

Pour la simulation à l'échelle de l'individu, chaque cycle de simulation invoque la mise à jour du déplacement du scorpion. Ceci se fera en fonction de l'état d'activation de ses neurones, lequel dépend des vibrations perçues.

Pistes d'extension

Et voici pour finir quelques pistes d'extension possibles :

Le projet est à réaliser en groupe de 2 personnes au plus. 

Aucun rapport (document) n'est à fournir sur le projet. Par contre, nous vous demandons de commenter abondamment et intelligemment les codes sources que vous nous rendrez (les commentaires remplaceront le rapport et seront donc pris en compte dans la notation du projet). De plus, la propreté du code (indentation, espaces, noms de variables, accolades, variables membre de classe, etc.) sera également pris en compte dans la notation (le code fourni est considéré comme acceptable).

Nous vous demanderons également de fournir trois fichiers complémentaires :

En particulier, en plus des commentaires usuels sur le code lui-même, vous avez tout loisir de porter un regard critique sur la modélisation du problème, d'identifier les faiblesses et insuffisances de ce modèle, et naturellement de proposer des solutions pour pallier à ces faiblesses. 

La date limite du rendu final est le lundi 26 mai à midi  

La séance de TP du  mardi 27 mai sera consacrée à la défense des projets. 

4. Réalisation

4.1. Répertoire de travail

Créez un sous-répertoire projet dans le répertoire ~/Desktop/myfiles/Programmation/cpp.

Tous les fichiers concernant ce projet devront se trouver dans le répertoire ~/Desktop/myfiles/Programmation/cpp/projet

4.2. Organisation du travail

Comme la programmation complète de notre projet, si simplifié soit-il, n'est pas envisageable dans les temps qui vous sont impartis, vous n'aurez pas à réaliser l'intégralité du programme. Les parties relatives à la programmation graphique seront fournies. Nous vous fournirons également au fil des semaines, dans l'énoncé du projet, un certain nombre de fichiers utilitaires. Ces fichiers vous permettront notamment de tester chaque étape de votre projet.

Les séances de TP seront principalement dédiées au projet (le corrigé des exercices peut être utilisé comme source d'information complémentaire au cours). Votre travail durant les séances de TP sera à compléter par une contribution personnelle hors de ces séances. Il s'agira essentiellement d'un travail de réflexion, en commun avec votre binôme, sur les décisions à prendre en matière de conception de votre programme et du codage qui en résulte (quoi coder ? comment coder ? quelles structures de données utiliser ? etc...) .

Nous vous demandons de soigneusement sauvegarder votre travail à chaque étape, même incomplet, afin de pouvoir montrer régulièrement votre état d'avancement. 

L'équipe du cours est bien sûr à votre disposition pour vous aider tout au long de ce projet : pendant les TPs, pendant les séances d'appui (rattrapage) et via le forum.

Coachs : Un.e assistant.e responsable («coach») sera nommé.e pour chaque binôme. Son rôle sera de vous aider de façon plus dédiée. Vous aurez notamment à lui montrer votre JOURNAL toutes les deux semaines environ . C'est avec votre coach que vous discuterez en priorité des éventuelles difficultés que vous rencontrerez. C'est par contre à un.e autre assistant.e que vous ferez la présentation finale de votre projet.

La réalisation informatique du projet comporte les grandes étapes suivantes : 

4.3. Plan de travail

Un énoncé détaillé du projet complet vous sera livré, ainsi que la librairie graphique, ce qui vous permettra de travailler à votre rythme. Le plan de travail proposé dans le tableau ci-dessous coïncide avec le déroulement du cours, et vous donne une indication des temps que vous devriez consacrer à chaque tâche.

Très important: Ne prenez pas trop de retard par rapport à ce plan pour ne pas être dépassé en fin de semestre.

Semaine(s)

Tâches conseillées

2

Début des inscriptions au projet

4

Lecture de la description du projet

5

Lecture de l'énoncé | première classe utilitaire
Fin des inscriptions au projet

6+7

Promenades au hasard

8+9

Cycles de vie

10+11

Modèle neuronal du scorpion

12

Statistiques
extensions libres

13

Finalisation et préparation du rendu

5. Conseils

Voici quelques petites astuces pour vous faciliter la vie durant le projet:

6. Références



Notes

... se nourissent de lézards2
aucun animal vivant ne sera maltraité dans le cadre de ce projet :-)
... néfaste2
juste une illustration ici : l'ordre selon lequel sont traités les animaux peut influer sur la précédence de certains comportements (fuite ou prédation).