Journal Fourmilière artificielle: Intelligine

Posté par (page perso) . Licence CC by-sa
79
24
avr.
2016

Sommaire

Bonjour,

Pour mon premier journal j'ai décidé de venir présenter un de mes projets publié sous licence libre afin de recueillir conseils, remarques et critiques de la communauté. Il s'agite d'"Intelligine", une fourmilière virtuelle.

(La présentation ci-dessous reprend des parties de deux présentations précédente que vous pouvez retrouver ici et ici)

Le projet en quelques mots

L'objectif est de tenter de créer une colonie d'insectes virtuels capable d'auto-organisation et d'adaptabilité face à un environnement évolutif. Tout en s’inspirant - parce qu'il n'y as pas de meilleurs architecte que la nature lorsqu'il s'agit du vivant - du comportement d’insectes sociaux comme les fourmis.

Un des fondamentaux de la philosophie du projet est qu'a aucun moment les algorithmes ne doivent calculer la décision de l'insecte à l'aide de données auxquelles l'insecte n’aurait pu avoir accès dans un contexte dit réel. On cherche à reproduire les comportements des insectes en restant fidèle à leurs moyens dans la monde réel.

Intelligence artificielle

Le simulateur adopte une stratégie dite de « bottom-up » car on code le comportement des individus - les fourmis - au lieu de ce qui est l'objectif réel, c'est à dire un comportement social au niveau de la colonie. C'est la complexité et la quantité des interactions "d'individu à individu" et "d'individu à environnement" qui nous intéresse ici. Le résultat de l’exécution, bien que déterministe, ne peut être connu à l'avance. Le but recherché est une émergence, c'est-à-dire un comportement qui :

  • Trouve sa source dans les interactions locales : interactions "d'individu à individu".
  • Est autonome : On ne la contrôle pas directement et on ne la régit pas par des règles périphériques. C'est l’interaction entre individus qui en est la cause.
  • S'observe à un niveau différent de ce qui le produit : Le comportement social se situe au niveau de la colonie.

Techniquement

  • Le langage utilisé est python 3.
  • L'architecture est prévue pour pouvoir paralléliser les calculs.
  • Le monde est éditable avec des cartes au format TMX.
  • La 3D est envisagé mais pas fonctionnelle pour le moment.
  • L'affichage graphique est indépendant du moteur de calcul.
  • Le projet s'appuie sur un framework - synergine - développé en parallèle.

Où ça en est et où ça doit aller

Actuellement les fourmis virtuelles possède les comportements suivants:

  • Exploration hasardeuse ou en suivant des traces de phéromones indiquant une source de nourriture.
  • Retour vers la colonie grâce à la résolution de vecteurs et en contournant les obstacles.
  • Récupérer des ressources lors des explorations.
  • Déposent des phéromones si le retour vers la colonie s'accompagne d'un succès comme avoir trouvé des ressources.
  • Déposer des ressources - ou des œufs - dans la colonie - si il y a de la place - à coté d'une ressource similaire.

Ce qui fait émerger au sein de la colonie les comportements suivants:

  • Rapatriement de ressources du monde extérieur vers des salles de stockages, ou devant une entrée pour plus tard.
  • Création d'itinéraires partagés menant à des ressources.
  • Regroupement des ressources - ou d’œufs.

Les prochains travaux devrait porter sur les thèmes suivants:

  • Affinement du comportement des phéromones pour être plus réaliste.
  • Choix de directions à prendre avec gestion de l’expérience pour la prise de décisions.
  • Affinement du choix de l'emplacement pour déposer les œufs\ressources: Avoir une tendance à placer à coté de tas plutôt qu'a coté d'un objet similaire isolé.
  • Choix de l'activité (recherche de ressources, s'occuper des œufs, etc) en fonction des expériences de réussites/d'échecs.
  • Faire les premiers algorithmes permettant de creuser des galeries/salles.
  • Inclure de nouveaux paramètres comme la température pour le choix de l'emplacement des œufs, le creusement des galeries, etc.

En image

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

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.
oeufs

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

Installer et tester

Vous devez être sous un système GNU/Linux et avoir python 3.4 ou plus. Pour une debian-like vous pouvez (au sein d'un environnement virtuel python 3.4):

  • Récupérer le code source avec git: git clone https://github.com/buxx/intelligine.git && cd intelligine
  • Installer PyGame, voir doc.
  • Installer les dépendances python avec pip install -r requirements.txt
  • Lancer une simulation avec: python run.py exploration

Ou de lancer un container docker comme cela - après avoir exécuté la commande xhost +local:docker - docker run -w /intelligine -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/snd:/dev/snd --privileged -e DISPLAY buxx/intelligine python3.4 run.py exploration

Il est possible de bouger sur la carte avec les touches décrites ici

Vous pouvez modifier la carte intelligine/sandbox/exploration/map.tmx avec un éditeur de carte comme Tiled.

Conclusion

Un des objectifs - outre celui d'avoir une fourmilière virtuelle - est de produire un logiciel avec lequel il sera possible de moduler, configurer - ou jouer avec - la simulation pour obtenir le comportement de colonie le plus réaliste possible.

Il reste encore beaucoup de travail sur ce projet - notamment de documentation - pour qu'il puisse être facile à prendre en main par qui veuille participer ou jouer avec. Mais j'ai bon espoir d'en faire quelque chose de sympa d'ici quelques années vu l'avancement actuel.

Je me tourne maintenant vers vous pour connaître vos critiques, conseils ou quelconque informations. Si vous avez connaissance de l’existence de travaux, d'articles ou de livres portant sur le comportement des fourmis ils m'aideront certainement !

  • # Classes/Rôles

    Posté par (page perso) . Évalué à 10.

    Il me semblait (j'y connais rien, mais j'ai un pote passionné par ce genre de trucs) que les fourmis avaient des rôles définis au cours de leur vie, genre mineur le premier tiers, puis autre chose le second, et le reste explorateur (tu fais basiquement ce que tu veux) pour le dernier tiers..?

    Je me tourne maintenant vers vous pour connaître vos critiques, conseils ou quelconque informations. Si vous avez connaissance de l’existence de travaux, d'articles ou de livres portant sur le comportement des fourmis ils m'aideront certainement !

    Ben moi, encore une fois j'y connais rien, mais j'ai approché Closure avec ça risque de te plaire:

    • [^] # Re: Classes/Rôles

      Posté par (page perso) . Évalué à 3.

      Oui j'ai lu à plusieurs reprise que les fourmis ont différentes phases durant leur existence. Il à également été mis en évidence qu'elles se spécialisent en fonction du ratio succès/échec lors des premières confrontations à un nouveau métier.

      Merci pour ces différents liens. Ça à l'air bien compliqué, d'autant que mon niveau d'anglais n'est pas parfait :p

      Blog: http://blog.bux.fr, github: http://github.com/buxx

      • [^] # Re: Classes/Rôles

        Posté par (page perso) . Évalué à 4.

        Merci pour ces différents liens. Ça à l'air bien compliqué, d'autant que mon niveau d'anglais n'est pas parfait :p

        Fais comme les copains, commence par la fin :) Version applet en ligne de la fourmilière ouvrir le lien final dans "IcedTea Java WebStart" (et accepter tout un tas de vilains machins) et bon, c'est le code LISP du premier lien, voir ici pour une introduction en douceur à Clojure.

        ants.clj

        Les fourmis sont les traits, les carrés rouges la nourriture, les traces vertes, les phéromones ; Les fourmis qui transportent de la bouffe deviennent rouges.

  • # un bouquin

    Posté par . Évalué à 8.

    Dans le livre « Dieu des fourmis, Dieu des étoiles » de Rémy Chauvin il y a un chapitre qui parle exactement de ça : comment le comportement individuel de chaque fourmi produit le résultat au niveau de la colonie. Avec des titres de sous-chapitres comme « des architectes idiots » ou « éloge du gaspillage », tu vois l'idée.
    L'ensemble de l'ouvrage est à prendre avec des pincettes de huit mètres de long (une tentative de preuve de l'existence de Dieu) mais j'avais trouvé cette partie-là extrêmement intéressante.

    • [^] # Re: un bouquin

      Posté par (page perso) . Évalué à 2.

      L'ouvrage en question et plus précisément le chapitre sur les fourmis est accompagné des sources - aiguillant ses propos - ou c'est plutôt des déductions personnelles ?
      En tout cas ça ma l'air intéressant, je prendrais mes pincettes, merci du conseil :)

      Blog: http://blog.bux.fr, github: http://github.com/buxx

      • [^] # Re: un bouquin

        Posté par . Évalué à 3.

        Alors il n'y a aucune source, mais comme le gars est un entomologiste très réputé, j'aurais tendance à croire ce qu'il dit concernant les fourmis.
        Du coup je l'ai ressorti, le chapitre est quand même beaucoup plus succinct que dans mes souvenirs. Mais ça parle très exactement de ce que tu fais. Extrait : « Supposons une foule innombrable de petits robots à peu près idiots. Quel est le programme minimum pour qu'ils soient capables de construire un dôme ? »

  • # Un air de déjà-vu...

    Posté par . Évalué à 5.

    J'ai des connaissances qui ont travaillé sur le sujet vers la fin du 20ème siècle : http://www.enib.fr/~harrouet/Data/oRis/these.pdf

    Un des cas concrets était justement de faire faire des tas à des fourmis. D'autres plus intéressants consistaient à simuler le système immunitaire humain pour certaines maladies.

    Hop,
    Moi.

    • [^] # Re: Un air de déjà-vu...

      Posté par (page perso) . Évalué à 2.

      Dans la liste des bouquins, il y a aussi l'excellent "The Ants" de B. Hölldobler et E. O. Wilson (https://openlibrary.org/works/OL3474970W/The_ants), si tu arrives à le trouver et que tu n'as pas peur de l'anglais.

      De ses yeux vastes comme des océans, encroûtés de chassie et de poussière d'astéroïdes, Elle fixe le But Ultime.

      • [^] # Re: Un air de déjà-vu...

        Posté par (page perso) . Évalué à 2.

        Merci pour la référence. Pour le moment les ouvrage de ce genre en Anglais j'ai du mal mais je garde la référence dans un coin …

        Blog: http://blog.bux.fr, github: http://github.com/buxx

        • [^] # Re: Un air de déjà-vu...

          Posté par . Évalué à 1.

          Ça m'a fait pensé au super jeu SimAnt de quand j'étais petit, un des meilleurs jeux de simulation de l'époque.

          Cette signature est publiée sous licence WTFPL

    • [^] # Re: Un air de déjà-vu...

      Posté par (page perso) . Évalué à 2.

      Super merci ! En plus c'est en Français :p

      Blog: http://blog.bux.fr, github: http://github.com/buxx

  • # Beau projet, beau journal

    Posté par (page perso) . Évalué à 6.

    Très beau premier journal, clair et très bien rédigé. Tu hésitais à publier ; la note est là pour prouver que tu as bien fait :)

  • # souvenirs

    Posté par . Évalué à 1.

    Ah, ça me rappelle mon projet de fin d'année d'école d'ingé. On avait fait une simulation similaire, déplacement sur une carte avec dépot de phéromone, avec une visu 3D et un monde autogénéré, pour à la fin mapper les modèles 3D sur des hydralisk de Starcraft :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.