Archives par mot-clé : algorithmique

Intelligine : Simulateur d’intelligence collective

Voilà maintenant quelques années que j’ai entamé le projet de créer un simulateur d’intelligence collective. Plus précisément d’insectes sociaux tels que les fourmis, les termites ou encore les abeilles1.

Ce projet commence désormais à être assez avancé pour en faire une présentation et peut-être susciter l’intérêt de personnes souhaitant y participer.

Les insectes sociaux ?

Les colonies d’insectes sociaux sont des systèmes extrêmement complexe et évoluées. Il est commun de penser que seul les êtres Humains pratiquent l’élevage et l’agriculture. Il n’en n’est rien. Les fourmis pratique l’élevage de pucerons 2 et la culture de champignons3. Les termites pratiquent eux aussi la culture de champignons4.

TerLes termites parviennent à pratiquer cette agriculture sous le soleil Africain. Leur forteresses  peuvent être composées de galeries atteignant 70 mètre de profondeur, puisant la fraîcheur des nappes phréatiques. Cela afin que, par un système complexe d’aérations digne d’un architecte en thermodynamique, la zone de culture des champignons soit maintenue à 27°C. Alors que la température extérieure dépasse généralement les 35°C5.

Cependant les individus qui composent ces sociétés ne jouent chacun qu’un rôle limité et guidé par leur instinct. Une idée reçu voudrait que ce soit la ou les reines qui dirige la colonie. Ordonnant ou oriantant le comportement de ses sujets. Mais la non plus il n’en n’est rien 6. Le fonctionnement d’une colonie est le résultat d’un merveilleux comportement d’intelligence collective. Une collaboration où chaque individus ne possède qu’une vision limité de son environnement.

Pour citer Wikipédia à propos de l’intelligence collective:

« La connaissance des membres de la communauté est limitée à une perception partielle de l’environnement, ils n’ont pas conscience de la totalité des éléments qui influencent le groupe. Des agents au comportement très simple peuvent ainsi accomplir des tâches apparemment très complexes grâce à un mécanisme fondamental appelé synergie ou stigmergie »

Quel lien avec l’algorithmique?

Si nous devions simplifier le fonctionnement de ces sociétés nous pourrions dire qu’elles sont l’effet de la répétition de l’action de chaque individus qui la compose. Individus, qui, inlassablement effectues leur petites tâches durant toute leur existence.

Il s’avère que nos processeurs et langages informatique sont tout à fait adapté lorsqu’il s’agit de répéter l’exécution de modèles définis. On peux donc imaginer construire une colonie virtuelle sur ces modèles.

Déjà aujourd’hui la nature (et les insectes sociaux) inspire des modèles informatique. Algorithmes génétiques, Algorithmes de colonies de fourmis, etc. Et avouons le, en tant que concepteur logiciel, les insectes sociaux sont une parfaite inspiration lorsqu’il s’agit d’intelligence artificielle !

Le projet intelligine

Le projet intelligine n’a pas pour but de révolutionner les Métaheuristique ou les algorithme de colonies de fourmis  mais simplement de tenter de créer une société virtuelle capable de s’auto-organiser et de s’adapter à une environnement évolutif. Tout en s’inspirant du comportement d’insectes réels.

Bien sur, cela dans une moindre mesure. Premièrement, il est difficile de rivaliser avec des millions d’années dévolutions. Deuxièmement, ce que nous appelons un comportement « simple » de la part d’un individu reste tout de même extrêmement difficile à interpréter avec certitude.

En quoi ça consiste ?

Algorithmiquement

La réalisation du logiciel doit s’accompagner de restrictions. Dans la nature, les individus n’ont qu’un accès limité à leur environnement. Les algorithmes représentant les individus et permettant leur prise de décision doivent donc se cantonner à ne pouvoir lire qu’une partie des données de l’environnement.

Un effort de malléabilité doit être effectué sur l’organisation des différentes briques du logiciel. De manière à pouvoir modifier, remplacer et retirer des parties de code en fonction de l’évolution de nos connaissances à propos de ces insectes.

Entomologie

Ant_head_closeup

Il faut faire confiance à la nature. Il n’y as pas meilleur architecte que la sélection naturelle pour façonner des comportements optimisés. D’autant que les espèces qui nous intéressent sont extrêmement anciennes. Il faut donc comprendre ces mécanismes au lieu d’en inventer de nouveaux.

Une grande partie du travail concerne alors l’étude des insectes sociaux: Consulter le résultat des travaux déjà réalisés,  interroger des spécialistes, des passionnés, mener des expériences … Cela afin d’écrire des algorithmes aussi proche que possible de leurs inspiration naturelles.

Première version: SimTermites

La première réalisation concrète de ce grand projet à été le programme « SimTermites« . Ce fût l’occasion de me confronter concrètement à différents aspects d’un tel projet:

  • Les performances jouent un grand rôle. Simuler le comportement de milliers d’individus au sein d’un environnement déterminant dans leurs action nécessite beaucoup de calculs !
  • L’organisation du programme. Une simulation de la sorte atteint rapidement un niveau de complexité effrayant. Ce qui oblige à être très attentif à la manière d’organiser le code source de l’application et à respecter des principes robustes et éprouvés 7.

simtermites
Capture vidéo du programme SimTermites. Des individus suivent une route de phéromone et transporte des ressources (cercle vert) vers une zone de stockage (cercle jaune). Tandis que d’autre entretiennent des œufs pondu par la reine (cercle rose).

Ces différents aspect étant devenus évident pendant la réalisation de ce programme il sembla alors nécessaire de reprendre le programme depuis le début.

Car si vous êtes néophyte de la conception logicielle, un programme est composés de millions d’instructions (tel qu’un très longue recette de cuisine). Où chaque morceau qui la compose est reliés à d’autres. Il est donc très difficile de modifier profondément un logiciel. C’est pourquoi il est vital que durant sa réalisation des précautions soit prisent pour le rédiger correctement. Autrement sa modification, son évolution ou corrections devient extrêmement chronophage.

J’ai donc décidé que SimTermites resterait ce qu’il est. Et qu’un nouveau chantier devait commencer.

Synergine + Intelligine

J’ai donc commencé par réaliser un framework 8 dédié à la réalisation de programmes dont la nature serait de faire évoluer des entités indépendantes (représentées par des algorithmes) au sein d’un environnement. Ensuite, développer le logiciel censé prendre la relève de SimTermites.

Aujourd’hui, l’un et l’autre sont développé. Le framework: Synergine, suffisamment stable pour l’utiliser. Le simulateur d’intelligence collective: Intelligine, jeune mais assez avancé pour commencer le travail sur les aspects comportementaux des individus.

synergine_lifegame
Capture vidéo d’une simulation du « jeu de la vie » créée avec le framework Synergine.

Intelligine: Quelques visuels de la version courante

Note: Le framework Synergine permet de créer la sortie graphique que l’on souhaite indépendamment du programme. Les visuels ci-dessous ne sont qu’une implémentation « rapide » que j’ai réalisé moi-même pou les besoins du développement.

Déplacement d’œufs

intelligine_eggs_20150421
Capture du programme Intelligine. Fourmis en train de ranger des œufs. L’action étant « prendre un œuf si je ne transporte rien » et « poser l’œuf que je transporte a coté d’un autre œuf ». Ce qui par synergie réduit le nombre de tas d’œufs.

Récupération de ressources

intelligine_ressource_20150421_r
Capture vidéo du programme Intelligine. Des fourmis exploite une route de phéromone pour trouver et ramener des ressources.

Et maintenant ?

Différentes étapes sont encore à franchir avant d’atteindre une version stable est plus convenable du simulateur. La liste est établis dans le tracker9 du projet disponible ici:
http://work.bux.fr/projects/intelligine/issues

De nombreux questions restent encore à éclaircir et à débattre sur le comportement des insectes sociaux et leur équivalent algorithmique. Quelques débat sont déjà ouvert par ici:
http://work.bux.fr/projects/intelligine/boards.

Si vous êtes développeur, myrmécologue, intéressé par les insectes, l’intelligence artificielle ou simplement pris d’enthousiasme pour le projet, nous serions heureux de collaborer avec vous ! Il y a beaucoup de choses qui peuvent être faite: Faire des recherches, documenter, partager ses connaissances, concevoir le programme …

Les différentes adresses intéressantes: