Projet : étape 6
Extensions libres
But:
Mettre en oeuvre des extensions libres.
Il existe toute sortes d'extensions possibles au projet. Quelques pistes vous sont données en vrac dans ce qui suit en guise de source d'inspiration. Libre cours à votre imagination. Toute «jolie» (intellectuellement ou visuellement) extension non triviale de votre travail est bienvenue !
Aucun matériel n'est fourni pour cette étape. Si vous l'abordez, vous veillerez à placer le code correspondant dans un nouveau répertoire partie6 de sorte à garder intacte la partie obligatoire dans partie5.
Vous veillerez à documenter les fichiers de configurations .json que vous aurez spécifiquement créés pour les besoins des extensions.
Les exemples d'extension fournis ci-dessous peuvent vous servir de sources d'inspiration. N'hésitez pas à solliciter notre avis pour anticiper la complexité de mise en oeuvre des idées suggérées.
Sophistication/amélioration de l'outil de simulation
L'outil de simulation peut être amélioré à bien des égards. Voici quelques pistes :
- Permettre le «log» des statistiques dans des fichiers : il s'agit d'ajouter dans Application la gestion d'un touche supplémentaire (par exemple 'H') dont l'effet serait de consigner les données produites par les statistiques dans un fichier.
Par exemple, pour les statistiques générales, le contenu de ce fichier pourrait être:
Scorpions Lizards Cacti
5.000 31.000 45.000
4.000 30.000 45.000
...
(qui correspond aux valeurs des séries de points associés au graphe «statistiques générales» au moment où on appuie sur la touche 'H'). Ceci permet d'en garder une trace sans relancer toute la simulation et permet des affichages de courbes via gnuplot:
gnuplot -e "plot for [i=1:6] 'nom_du_fichier' u i w l title columnheader(i)"
- Permettre d'avoir un mode de simulation non graphique qui lancerait en boucle de nombreuses simulations: le but serait d'identifier par exemple des peuplements initiaux permettant la plus grande longévité et stabilité des populations.
- Autoriser des points de reprises: il est intéressant de pouvoir arrêter la simulation et de pouvoir la relancer quelques jours plus tard à l'endroit où on l'avait laissé. L'idée serait donc de stocker des informations sur l'état du système simulé (quels animaux, à quels endroits etc.) dans un fichier et de les utiliser au moment du lancement de la simulation pour créer l'environnement. Il est possible de consigner l'état du système dans les fichiers au format .json (analogues à ceux utilisés pour le paramétrage de la simulation mais plus détaillés). Notez que le répertoire JSON fourni contient les fonctionnalités nécessaires à l'écriture de données en format json.
- Améliorer les performances: dans la version de base du projet, la gestion des interactions entre organismes vivants est potentiellement très coûteuse (pour chaque animal on doit par exemple examiner toutes les entités pour voir qui est dans le champs de vision). Lorsque le nombre d'entités croît, les performance du programme sont affectées. Pour contourner ce problème, il est possible d'échantillonner l'espace par un certain nombre de «cases» (portions de l'espace quadrillant le monde dans lequel vivent les animaux). L'idée est que chaque animal sait à tout moment dans quelle case il se trouve et chaque case connaît la liste des entités qu'elle contient par exemple. A chaque déplacement d'un animal, on le supprime de sa case et on l'ajoute dans sa nouvelle case. Ceci permet de retrouver très rapidement les entités dans le champs de vision d'un animal (sans reparcourir toute la liste des entités).
Sophistication de l'environnement simulé
Gestion des obstacles
Des obstacles introduits dans l'environnement pourraient modifier les modalités de comportement des animaux (ils devraient par exemple contourner les obstacles ou perdre d'avantage d'énergie en les traversant, ou encore se cacher derrière pour fuir les prédateurs).
Diversification de la flore
On peut imaginer qu'il existe différentes variétés de végétaux dont certains pourraient avoir des effets toxiques sur qui les consomme.
Diversification de la faune
Introduire des prédateurs pour les scorpions ou d'autres types d'animaux en compétition pour les mêmes ressources.
Brouillard
On peut imaginer de placer des zones de brouillard (issues de pollutions ou de causes naturelles) dans l'environnement. Ce brouillard peut induire une baisse des capacités de vision des animaux et/ou peut réduire leur énergie ou les désorienter.
Facteurs exogènes et meilleure gestion de la temporalité des événements
On peut imaginer d'introduire une gestion plus réaliste du temps avec des saisons impactant la reproduction ou la croissance des végétaux. On peut aussi simuler des facteurs exogènes impactant la dynamique des populations, par exemple des épisodes d'épidémies, de sécheresse ou d'inondation affectant la prolifération des végétaux ou la fécondité des animaux.
Et comme dit plus haut, libre cours à votre imagination ...