Fourmis (simulation)

La première étape du projet Scopitone 2007 était la validation du tracking laser. Mon laser à deux balles d’euro ayant rendu l’âme lors des derniers tests, j’ai regardé ce qui existait de plus puissant, en particulier chez http://wickedlasers.com/ (merci Mathieu). Allez jeter un oeil : ce sont des malades … Leurs lasers sont monstrueux, capables de pointer à 30 Km, crâmer certaines matières, d’allumer des feux, …

En fait, rien d’exploitable pour nous (j’imagine pas laisser de telles choses dans les mains du public de l’attraction, qui va probablement être aussi composé d’enfant …), ce qui fait que je suis retombé dans des puissances raisonnables avec un bête laser 5mW (rouge) acheté sur eBay (ce sera toujours mieux que mon machin de même pas 3mW).

Bref, le tracking ne devrait pas poser de problèmes a priori, il est donc temps de se lancer dans l’étape suivante : la simulation des fourmis.

Je me suis donc lancé dans l’écriture d’un prototype du simulateur, histoire de vérifier que le concept était viable (et plus prosaïquement pour vérifier que je suis capable d’écrire un truc pareil). Le monde se compose d’un espace carré de taille variable (256×256 cases pour les tests actuels) dans lequel évoluent les fourmis. Chaque foumi est caractérisée par un certain nombre d’états (position, tâche en cours, direction, nourriture transportée, …) et est capable d’un certain nombre d’actions (très connes, comme les vrais fourmis). L’idée de base étant de vérifier (et simuler) qu’un ensemble d’êtres individuellements très limités peuvent faire émerger une intelligence de groupe, ce qui, soit dit en passant, se trouve être (à mon sens) le strict inverse de l’homme (intelligence individuelle forte, mais qui tourne à la connerie pure lorsqu’elle est mise en groupe : files d’attente à la Poste, bouchons sur le périph’, … les exemples ne manquent pas).

Au delà des fourmis, le monde est aussi composé de nourriture (répartie plus ou moins aléatoirement par blocs dans le monde) et, à terme, d’obstacles.

L’interaction entre le monde et le fourmis se fait principalement au travers des fameuses phéromones, sorte d’odeurs laissées par les fourmis sous certaines conditions (on parle de "communication par le terrain"). Dans la simulation, les phéromones sont "orientées", pour indiquer dans quel sens suivre la piste, par exemple (je pense que cette approximation de la réalité ne change pas trop la cohérence de la simulation, tout en m’épargnant beaucoup de code …). Les seules phéromones gérées actuellement sont celles liées à la nourriture : une fourmi qui a trouvé (par hasard) une source de nourriture laisse derrière elle une piste lors du retour, qui se fait, à priori comme pour les vrai fourmi, par un cap (déteminé par exemple en fonction de la position du soleil) approximatif. Les autres fourmis qui croisent cette piste peuvent donc remonter à la source de la nourriture. La piste sert aussi pour le retour à la "base", ensuite. A terme, les phéromones de " danger" sont prévues.

Dans l’état actuel des choses, les fourmi de la simulation sont tout à fait capables de s’organiser pour rappatrier la nourriture. Voilà par exemple une situation typique de la simulation actuelle :


En vert, la nourriture, en blanc les fourmis, en bleu les phéromones (intensité de la couleur proportionnelle à l’intensité des phéromones), la "base" des fourmis est au centre de l’écran (invisible ici)

Les deux sources de nourriture sont exploitées, sans pour autant concentrer toutes les troupes, ce qui permet la découverte d’éventuelles nouvelles sources de nourriture ou de menaces. J’insiste sur le fait que ce résultat est obtenu avec une simulation qui n’agit que localement (sur chaque fourmi). A aucun moment, un truc du genre "if(assez de fourmis qui ramènent de la bouffe) then (barrez-vous en chercher autre part)" n’est présent dans le code. Cette organisation (même simple ici) émerge du groupe. En d’autres termes, je n’ai pas programmé cette solution, elle est née lors de l’execution du programme. En définitive, mon rôle ici est de programmer le cerveau de chacune de ces fourmis (‘vache, j’adore cette phrase ! 🙂

En l’absence d’obstacles, la simulation actuelle est quasi "parfaite", au sens ou la nourriture est très vite rappatriée, et dans des conditions parfaites (les autres fourmis cherchant d’autres sources et/ou veillent à la sécurité du groupe en patrouillant). En revanche, dès qu’on ajoute des obstacles, les choses tournent mal …

La distribution est très mauvaise (source du haut exploitée à 70%, celle du bas à même pas 10%), la veille est fortement réduite (risque d’attaque, incapacité à découvrir vite de nouvelles sources de nourriture), et on retrouve une très forte concentration de fourmis (plus d’une 15aine sur une population de 30 !) bloquée sur le chemin du retour ! (puisque l’ostacle est juste sous la base). N’allez pas croire que le problème vient de la gestion des obstacles : sans nourriture les fourmis sont tout à fait capables de détecter qu’elles sont bloquées et agissent en conséquence. Le problème ici est qu’elles sont tellement dépendantes des pistes de phéromones pour le retour vers la "base", que même lorsqu’elles cherchent à s’écarter de l’obstacle (qu’elles ont donc bien détecté), elles sont de nouveau attiré vers celui ci par la très forte concentration de phéromone qui y règne.

Et c’est sur ce constat que je vais me coucher ! 🙂
A suivre …


Publié

dans

par

Étiquettes :

Commentaires

8 réponses à “Fourmis (simulation)”

  1. Avatar de DindonPoilu
    DindonPoilu

    Ben dis donc, tu ne t’arrêtes jamais toi 🙂

    Pour les humains en groupe : ils sont quand même plus intelligents en groupes bien organisés. Un homme n’aurait jamais construit une fusée tout seul…

    Pour ton pb d’obstacle : si tu vires la notion de cap, à mon avis c’est réglé. Les fourmis n’en utilisent pas, à ma connaissance… Comme ça, au lieu de foncer dans l’obstacle, la fourmi se dirige vers la source de phéromone la plus proche (ptet sans prendre en compte celle sur laquelle elle est déjà et celle qu’elle vient de franchir, sinon elle tourne en rond), en suivant les traces de la fourmi qui a découvert la nourriture, et qui elle a contourné l’obstacle.

  2. Avatar de jye
    jye

    Ont-elles une mémoire ? (meme courte) J’ai deja codé un truc similaire (sans les phéromones cependant) et dans la réalité (je specule mais bon) je suppose qu’elles omettent les phéromones lorsqu’elles se rendent compte qu’elles sont bloqués (après être repasser plusieurs fois sur la même portion de terrain par exemple). En tout cas, je partirais peut etre de ce coté là moi, mais j’y ai pas passé le temps que tu y as passé 🙂 Bref article interessant (pour une fois sur les blogs nf)

  3. Avatar de mouito
    mouito

    Werber était ton ami, ses premiers sont une bible pour les fourmis

  4. Avatar de Llyd
    Llyd

    Comment ca, tu ne veux pas que les gamins se brulent au 27ème degré ou meurent tous rotis dans l’incendie qu’ils ont déclenché ? Quelle faute de gout !

    A part ca, j’ai jeté un coup d’oeil au moteur, ca a l’air pas mal. Par contre coder ce genre de système d’IA en C, ca doit etre vraiment relou.

    Jme rends pas bien compte comme ca, mais est-ce qu’on peut assimiler ta simu a un genre de systeme expert ? J’fais un peu d’IA en ce moment, et je code ce genre de truc sous CLIPS (d’ailleurs les fourmis ont lair d’etre en vogue), et bon 2h de code suffisent pour bien avancer dans le comportement. Bien sur, pour le passer dans un systeme réel, que ce soit en données ou en représentation 3d, c’est natchav…

  5. Avatar de Xfennec
    Xfennec

    DindonPoilu : De ce que j’ai lu, les fourmis ont bien une notion de "cap", basé du des repères visuels, une boussole interne (assez approximative) et peuvent aussi se débrouiller avec la position du soleil. Des scientifiques du CNRS de Toulouse ont même réussi à apprendre aux fourmis la significations de certains panneau ! De manière générale, la première fourmi qui a trouvé la première source de nourriture doit bien trouver sa route vers le retour, et aucune phéromone ne peut l’aider (le terrain en étant vierge).

    jye : Peut être as-tu raison … Je ne sais pas comment réagissent les véritables fourmis dans de telles situations. J’ai prévu d’écrire sous peu un test unitaire qui est destiné à éprouver le comportement de la simulation face à un gigantesque cul-de-sac … c’est là que je vais pouvoir tester divers solutions.

    mouito : J’ai lu la totale (3 bouquins, de mémoire) quand j’étais môme. Ca m’avait passionné, mais je n’en ai plus aucun souvenir 🙂 Je vais tenter de remettre la main dessus.

    Llyd : La complexité d’une IA pareil est très limitée … Le choix du langage devient très secondaire (sans compter que je n’ai jamais touché à autre chose qu’un langage procédural de ma vie). Même si je passe deux fois plus de temps qu’avec un langage dédié à ces tâches, ça reste très raisonnable : le programme actuel fait 516 lignes au total pour l’IA, le terrain, les collisions, les phéromones, et la représentation graphique. Et le tout lié à Raydium, c’est à dire dans un contexte 3D et temps réel. Rien d’insurmontable, donc.

  6. Avatar de Géhèm
    Géhèm

    Je commente pas souvent ici, mais je suis trèèès attentivement le contenu de ton blog, ça m’intéresse pas mal…

    Si c’est pas déjà fait, sauvegarde-en le contenu, au cas où les blogs subissent le même sort que les forums.

  7. Avatar de Bidule
    Bidule

    De la même façon que les fourmis lachent une féromone pour dire où il faut aller, elles lachent probablement une féromone qui prédomine pour dire où il ne faut pas aller, a partir de là elles garderaient le cap en contournant la zone à éviter (feromone du danger ?).

    Par contre j vois pas trop comment elle peuvent choisir le chemin le plus court dans le cas de ton obstacle.

  8. Avatar de Xfennec
    Xfennec

    Bidule : De manière générale, il suffit qu’une nouvelle piste plus courte soit découverte par une fourmi pour que, "statistiquement", l’ancienne piste disparaisse petit à petit : un plus grand nombre de fourmis va emprunter la piste courte (justement parcequ’elle est plus courte) en augmentant le taux de phéromones de cette dernière. Le tout au détriment de la piste la plus longue.

Laisser un commentaire