29 June 2017

Vie artificielle dans un environnement avec gravité

L'objectif de ce travail à été de simuler un écosystème artificiel fait d'un très grand nombre de créatures de forme cubique, capables de se déplacer et de s'entredévorer© dans un milieu où règne gravitation et agitation thermique. Les créatures ont été implémentées avec des caractéristiques suffisamment simples (encodées dans des « gènes ») pour être relativement facilement répertoriées.

Ce billet de blog est une présentation abrégée de travail de stage de Clément Hege.

Réalisation informatique


La simulation se déroule dans une grille carrée contenant des curseurs. Chaque curseur est défini par sa position dans la grille (ses coordonnées) et sa charge utile, ici une créature cubique. Une créature est décrite par les paramètres suivants : la masse, l'orientation selon les trois axes de l'espace et le génome. Le génome est une liste de gènes, dont chacun code un organe, c'est-à-dire, le type de l'organe et sa position sur l'une des faces du cube de la créature. On note l'existence du type de l'organe « vide » représentant un potentiel de mutation. Les types suivants de créatures on été définis :
  • le plancton : Le plancton ne possède pas d'organe ; on lui attribue d'emblée la masse maximale qu'une créature peut avoir à sa naissance.
  • le crabe : Le crabe ne possède pas de bouche mais a cependant deux nageoires opposées qui lui permettent de se déplacer selon un seul axe.
  • la puce : La puce ne possède pas de bouche mais a une nageoire sur chacune de ses six faces. Elle saute en permanence.
  • le prédateur-nageur : Le prédateur-nageur possède trois nageoires du même côté et trois bouches à l'opposé de ces nageoires. Cela fait de cette créature un prédateur redoutable.
  • la créature aléatoire : Une loi uniforme détermine la masse de cette créature entre la masse minimale et la masse maximale possible à la naissance.
Pour chaque simulation, nous stockons les données de la simulation dans un fichier CSV qui contient à chaque itération : un identifiant de la créature, sa position, l'itération de la simulation, la masse de la créature, la taille du génome de la créature.

Chaque créature a une certaine probabilité de se déplacer d'une unité vers le bas. Cette probabilité est égale à une constante gravitationnelle multipliée par la masse de la créature. Ainsi une créature de faible masse chutera moins fréquemment qu'une créature massive. L'effet de la gravité sur le système peut être vu sur la figure suivante.
Les créatures ont tendance à se sédimenter.
Les créatures subissent également une agitation thermique, qui implique deux phénomènes : la diffusion de translation et la diffusion de rotation. L'effet de l'agitation thermique est calculé de façon probabiliste, tout comme celui de la gravité. Nous remarquons que sans agitation thermique, les nageurs se dirigent constamment dans la même direction et finissent par se stopper contre une face du cube de la simulation. Ce n'est pas le cas lorsqu'ils subissent translations et rotations aléatoires.
Chaque créature a un certain nombre de nageoires. A chaque tour de la simulation, chaque nageoire d'une créature à une probabilité de s'activer. Deux nageoires opposées qui s'activent ne provoquent aucun mouvement. Pareil, chaque bouche associée à une créature a une probabilité de s'activer et de manger la ou les créatures présentes dans la case qui se trouve en face d'elle. Si une créature (ou plusieurs) s'y trouve, cette créature est tuée et sa masse s'ajoute à la masse de la créature qui l'a mangée.  Dans le cas où plusieurs créatures se font face, c'est la première créature à agir, c'est-à-dire la première créature dans la liste de tous les curseurs, qui mangera l'autre.

Nous avons choisi d'interdire à deux créatures de se rejoindre dans la même case de la grille. Nous n'empêchons pas deux créatures d'_apparaître_ sur la même cellule de la grille, mais nous immobilisons une créature qui a pour dessein de se rendre sur une case occupée.

L'utilisation des bouches sans moyen de baisser les masses des créatures peut amener à l'apparition de créatures possédant une très grande masse.  Le critère de division qui a été implémenté est de décider qu'à partir d'une masse maximale la créature se divisera automatiquement en deux créatures de même masse.  La stratégie pour placer l'une des nouvelles créatures dans la grille est la suivante : d'abord regarder autour de la créature qui s'est divisée (axes horizontaux) et s'il y a une case alors y placer la nouvelle créature. Sinon on essaye de la placer au dessus (axe vertical) ; si cette place n'est pas non plus disponible, on réitère les essais à partir de cette dernière case. La créature aura alors tendance à repousser les autres créatures sus-jacentes vers le haut pour créer une case libre. Il peut cependant se produire une situation critique dans laquelle les créatures ne peuvent être davantage repoussées vers le haut, la pile de créatures sus-jacentes atteignant déjà la paroi supérieure de la grille. En pratique, avec l'intervention de la gravité et de l'agitation thermique détruisant une telle pile, ce cas est rare.

À chaque division, une créature reste la même et l'autre sera susceptible de subir une mutation. Nous avons actuellement mis en place 3 différentes mutations se produisant à la création de chaque nouvelle créature (fille) :

 - mutation par addition ou par soustraction d'un bit dans un gène,

 - mutation par décalage : un gène est décalé à droite ou à gauche,

 - mutation par délétion : le gène concerné est supprimé.

Une probabilité de subir une mutation est attribuée à chaque gène du génome. Si un gène doit en subir une, le choix entre les trois types de mutation se fait d'après leurs probabilités respectives.

Voies d'amélioration

Critère de division

Avec le mode de fonctionnement actuellement implémenté, on tend à avoir une grande majorité de créatures avec une masse avoisinant la moitié de la masse maximale permise. La figure suivante illustre cette uniformisation ; la masse est représentée par la taille des cubes. On peut également observer la sédimentation impliquée par la gravité.
Les masses s'uniformisent autour de la moitié de la masse maximale.
Une piste d'amélioration serait d'appliquer un critère de division probabiliste : la division sera d'autant plus probable que la créature sera massive.

 

Mutations

La réalisation actuelle de mutation a quelques défauts : le tir des probabilités des mutations n'est pas implémenté de façon efficace. Ensuite, une distribution uniforme des probabilités est imposée. Enfin la mutation par copie, qui permettrait de créer un nouvel organe, n'est pas implémentée. Pour améliorer la gestion des probabilités des mutations, on pourrait introduire des vitesses de mutation différentes pour les trois types de mutation, ainsi qu'implémenter de nouveaux types de mutation.

 

La matière

La matière est une substance inerte présente dans l'espace fermé d'évolution et qui, comme les créatures, subirait la gravité (selon la densité de matière) et l'agitation thermique. Cette substance constitue un substrat servant à la fois d'énergie, de déchet et de moyen potentiel de communication des créatures entre elles. Certaines créatures pourraient s'en nourrir (nécessitant un autre organe) et accroître leur masse. Elle constituerait aussi une source d'énergie pour la natation et serait alors relâchée par les créatures dès lors qu'ils utilisent leurs nageoires ; une masse de cette matière proportionnelle à l'action engagée serait alors soustraite à celle des créatures et libérée dans le milieu. Ainsi, les créatures très actives, qui ont une grande capacité de mouvement, auraient le défaut de perdre de la masse plus rapidement.

L'interaction des créatures avec la matière développerait éventuellement des zones denses ou au contraire déplétées en matière où la survie des créatures serait plus ou, respectivement, moins probable. Ces zones seraient très intéressantes dans l'étude de l'impact de la gravité, car, accompagnées d'un moteur de diffusion, elles créeraient surement un gradient de densité de matière et permettraient l'observation directe de la survie des créatures selon la force de la gravité.

 

Analyse des trajectoires, de la diversité "génétique" et des survivants

Nous sommes pour l'instant capables d'enregistrer une simulation à travers l'enregistrement du déplacement de chaque créature ainsi que l'évolution de sa masse et de la longueur de son génome. D'une part, une analyse approfondie de ces résultats doit nous permettre d'observer différents types de trajectoires, que ce soit dans une analyse grossière au niveau d'une vitesse moyenne ou dans une analyse plus précise de la forme de la trajectoire et du dégagement d'un potentiel motif de déplacement. D'autre part, ces résultats doivent nous permettre d'analyser l'évolution de la diversité génétique en fonction des différentes strates.

Finalement, une telle étude devra nous amener à repérer différentes stratégies (génétiques) possibles de survie dans un environnement déterminé par un certain nombre de paramètres (physiques notamment). La liste des paramètres à faire varier est importante et nous permettra de mettre en place un grand nombre d'environnements différents.

No comments:

Post a Comment