URL: https://linuxfr.org/users/bux-2/journaux/fourmiliere-artificielle-intelligine Title: Fourmilière artificielle: Intelligine Authors: bux Date: 2016年04月24日T18:09:24+02:00 License: CC By-SA Tags: intelligence_artificielle Score: 79 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](http://blog.bux.fr/intelligine-simulateur-dintelligence-collective/) et [ici](http://www.myrmecofourmis.com/forum/viewtopic.php?t=21064))_ 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](https://fr.wikipedia.org/wiki/Approches_ascendante_et_descendante) » 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](https://fr.wikipedia.org/wiki/%C3%89mergence), 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](http://doc.mapeditor.org/reference/tmx-map-format/). * 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](https://github.com/buxx/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](http://www.inf.ed.ac.uk/teaching/courses/iar-5/Notes/11_Nav3_PathInteg.pdf) et en [contournant les obstacles](https://github.com/buxx/AntStar). * 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._  ▼ _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._  ▼ _Capture vidéo du programme Intelligine. Des fourmis exploite une route de phéromone pour trouver et ramener des ressources._  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](http://www.pygame.org/wiki/CompileUbuntu#Python%203.x ). * 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](https://github.com/buxx/intelligine#graphic-keys)_ Vous pouvez modifier la carte ``intelligine/sandbox/exploration/map.tmx`` avec un éditeur de carte comme [Tiled](http://www.mapeditor.org/). 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 !