Intelligence collective

Simulation à base d'agents: le tri du couvain

Dans les deux exemples cités dans l’article «L'Intelligence collective: Comment les fourmis recherchent leur nourriture et organisent leur nid» de Guy Théraulaz, Eric Bonabeau, Simon Goss et Jean-Louis Deneubourg [Pour la Science, Nº 198 avril 1994], les fourmis sont capables

  1. de percevoir certains éléments de leur environnement immédiat (sentir une odeur, percevoir la présence d’un congénère, d’une proie ou d’un obstacle, ...);
  2. de modifier certains éléments de leur environnement immédiat (déposer une odeur, prendre ou déposer un objet, ...);

la colonie de fourmis est capable

  1. de se comporter comme une société cohérente qui effectue collectivement une tâche complexe;
  2. de se comporter comme une société stable qui résiste aux perturbations: si l’environnement change ou si des fourmis meurent, le travail continue;
  3. de se comporter comme une société capable de s’adapter à certaines modifications du milieu (découvrir sans cesse de nouvelles sources de nourriture, ...).

Par contre, il est important de remarquer que de tels systèmes sont à l’opposé d’une vision anthropomorphique des activités sociales telle que «fixer des objectifs», «décider des moyens», «planifier les actions», «surveiller les travaux», etc. Ainsi, dans les simulations, les fourmis

  1. ne communiquent pas directement entre elles; elles s’interinfluencent de manière indirecte, en modifiant leur milieu; en tous cas, la communication demeure locale;
  2. n'ont aucune vision globale de la tâche à accomplir;
  3. ne reçoivent aucun ordre d’une autorité coordinatrice;
  4. ont un comportement individuel très simple et aléatoire; leur comportement est entièrement régi par le hasard et par leur environnement immédiat.

Défis et perspectives

Ces modèles de simulation d’une société intéressent une large gamme de domaines dans lesquels la recherche est actuellement très active.

L'objectif entomologiste
Il s’agit de construire un modèle de société qui rende compte du comportement des insectes sociaux. La simulation permet de prouver que des hypothèses concernant le comportement des individus sont suffisantes pour expliquer le comportement collectif de la colonie.
La construction d’ordinateurs massivement parallèles
Comment faire coopérer une quantité de processeurs à une tâche collective complexe?
La construction de robots
Ne peut-on pas remplacer des machines très complexes par une société de robots simples qui coopèrent à une tâche commune?
La compréhension du cerveau
Le cerveau peut-il être considéré comme une société de neurones qui, par leurs interactions, acquiert un comportement collectif cohérent?
La question philosophique de la source de l’intelligence
L’intelligence peut-elle s’expliquer par des processus naturels ou bien doit-on nécessairement faire appel à un principe spirituel (âme, divinité, ....)? D’une part, si un chercheur s’attaque au problème de l’émergence de l’intelligence, il doit conjecturer qu’il s’agit d’un phénomène naturel susceptible d’explication scientifique. Ce postulat a l’avantage de constituer un terrain fertile pour le développement des connaissances. D’autre part, un argument en faveur du spiritualisme consiste à dire que les corps physiques sont incapables d’auto-organisation. «Mettez une montre en pièces détachées dans une boîte et secouez. Après un certain temps, verrez-vous apparaître une montre qui fonctionne?». Il s’ensuit que l’existence de structures complexes nécessite l’existence d’une intelligence organisatrice.

Il n’est évidemment pas possible de donner une réponse définitive aux monumentales interrogations précédentes. Malgré le caractère encore rudimentaire des simulations effectuées, un des objectifs est de prouver que des systèmes ne possédant que des composants simples sont capables de s’auto-organiser et de produire des comportements complexes. Un tel sujet de réflexion est un puissant ferment qui anime la recherche contemporaine.

Le comportement d'une fourmi

Le nid est un ensemble de cases où sont disposés des objets de deux sortes (bleus/rouges). Une case ne peut pas contenir plus d’un objet déposé sur le sol, ni plus d’une fourmi. Par contre, elle peut contenir un objet et une fourmi; dans ce dernier cas aussi, la fourmi peut être chargée ou non. Sans pouvoir quitter le nid, la fourmi se promène aléatoirement, en se déplaçant d’une case par unité de temps, selon les quatre directions nord, sud, est, ouest.

Probabilité qu’une fourmi non chargée se saisisse d’un objet rencontré   p = (0.1 / (0.1 + k))2

  • si la sorte d’objet rencontré est localement rare, la fourmi s’en saisit avec une grande probabilité (k = 0);
  • si la sorte d’objet rencontré est localement fréquente, la fourmi ne s’en saisit qu’avec une faible probabilité (k = 1).

Probabilité qu’une fourmi chargée dépose sa charge   p = (k / (0.1 + k))2

  • si la sorte d’objet transporté est localement fréquente, la fourmi la dépose avec une grande probabilité (k = 1);
  • si la sorte d’objet transporté est localement rare, la fourmi ne la dépose qu’avec une faible probabilité (k = 0).

La représentation interne des données

Une case du nid

Chaque case du nid contient les informations suivantes:

e   la sorte d’objet qui y est posé; l’état d’une case peut être vide, bleu ou rouge;

f   le numéro de la fourmi qui s’y trouve; le numéro 0 indique qu’il n’y a pas de fourmi.

Exemple de case du nid

e = bleu   un objet bleu est posé sur la case;

f = 0   aucune fourmi ne se trouve sur la case.

Autre exemple de case du nid

e = vide   aucun objet n'est posé sur la case;

f = 17   la fourmi n° 17 se trouve sur la case. La fourmi n° 17 porte un objet ou n’en porte pas; on peut le savoir en se référant à la fourmi n° 17.

En Pascal, on peut déclarer une telle structure de la manière suivante:

const n_f = 24; {nombre de fourmis} type t_etat = (vide, bleu, rouge); {état d'une case ou d'une fourmi} t_nf = 0..n_f; {numéro de fourmi} t_case = record e : t_etat; {état de la case} f : t_nf; {numéro de la fourmi} end;

Le nid

Le nid est un tableau de cases. En Pascal, on peut le déclarer comme suit:

const n_col = 40; {nombre de colonnes} n_ln = 30; {nombre de lignes} type t_col = 1..n_col; {numéro de colonne} t_ln = 1..n_ln; {numéro de ligne} var nid : array[t_col, t_ln] of t_case;

Une fourmi

Chaque fourmi contient les informations suivantes:

x   l’abscisse de la case où elle se trouve;
y   l’ordonnée de la case où elle se trouve;
e   la sorte d’objet que porte la fourmi; l’état d’une fourmi peut être vide, bleu ou rouge;
mem   la mémoire des états des 15 dernières cases visitées; les états rencontrés y sont écrits cycliquement;
pt   un pointeur indique dans laquelle des 15 cases il faudra écrire l’état de la prochaine case visitée.

Voici un exemple:

x = 25   la fourmi se trouve dans la colonne 25
y = 9   la fourmi se trouve à la ligne 9
e = vide   la fourmi ne porte aucun objet
mem = ( vide vide vide bleu vide vide rouge vide rouge rouge vide vide rouge vide rouge)   les états des 15 dernières cases que la fourmi a visitées
pt = 4   la prochaine information sera écrite dans la 4ème position de la mémoire (à la place de bleu)

En Pascal, une telle structure peut se déclarer de la manière suivante:

const n_mem = 15; {nombre de mémoires d'une fourmi} type t_mem = 1..n_mem; {numéro de mémoire} t_fourmi = record x : t_col; y : t_ln; e : t_etat; {état de la fourmi} mem : array[t_mem] of t_etat; {états des cases visitées} pt : t_mem; {pointeur d'écriture en mémoire} end;

La colonie de fourmis

L’ensemble des fourmis est un tableau de fourmis qu’on peut déclarer comme suit :

var fourmi : array[t_nf] of t_fourmi;

Contact   |   Accueil   >   Logiciels