Nicolas Brodu     
          
            C R O G A I
Nicolas
Brodu
C R O G A I

Crogai: Description

Voici Crogai, une expérience pour introduire un peu d'intelligence artificielle dans des scénarios de comportements de foule. Il s'agit d'un projet expérimental, un cadre à des fins de recherche dans ce domaine.

Il est possible de réaliser des simulations pour tester différentes IA dans un environnement 3D complet: petit moteur physique, terrain, gestion des collisions, etc. Le premier objectif était de construire un environnement suffisamment complet pour permettre des IA un tant soit peu intéressantes. Dans cette optique, Crogai est fortement inspiré du projet OpenSteer, et réutilise d'ailleurs comme base les « steering behaviors » présentés par Craig Reynolds lors de la « game developper conference '99 ».

De plus, les agents peuvent émettre des spores dans l'environnement. Celles-ci sont ensuite utilisées pour faire évoluer d'autres agents grâce à un algorithme génétique. De nombreux comportements sont observés, les explosions de population et les extinctions sont courantes. Un cadre de travail est également disponible pour utiliser des algorithmes d'apprentissage automatique, comme des réseaux de neurones par exemple (mais pas seulement).

Crogai fonctionne aussi bien en mode graphique qu'en mode commandes de calcul, grâce à une architecture basée sur un simulateur. Ceci lui permet de plus de s'exécuter plus ou moins vite que le temps réel (dont pause), la vitesse maximum d'exécution dépendant bien sûr de la puissance de la machine.

Captures d'écran

genebasic
Évolution de différentes espèces. Les agents peuvent chasser, brouter, émettre des spores, et se reproduire. On voit ici des nuages de spores de différentes espèces, et des parcelles de terrain où l'herbe a été mangée. Le système va-t'il atteindre un équilibre, où se dirige-t'il inexorablement vers l'extinction globale?
genebasic
Une vue rapprochée d'une autre simulation. On voit ici 3 agents bleus brouter en avant-plan, et des prédateurs cyan et magenta qui arrivent... Regardez maintenant à l'arrière-plan : chaque espèce peut à la fois chasser et brouter au début de la simulation. Avec le temps, elles peuvent évoluer et se spécialiser.
populations
Quelques résultats d'évolution des population au cours du temps. Ces graphiques montrent les nombre d'individus de chaque espèce, jusqu'à ce qu'une espèce disparaisse.
swarm
Un exemple d'essaim obtenu avec une IA proche des Boids, plus un effet de regroupement au centre.
colliterra
Une autre IA qui tend a produire des groupes et des successions d'agents à la queue-leu-leu. On voit ici un agent qui s'envole et d'autres qui décident de le suivre.
predator
Une ancienne tentative pour faire un match de prédateurs! Ici chaque IA était programmée pour rester en groupe, attaquer les autres espèces, et éviter de se faire manger. Les agents récupèrent de l'énergie en mangeant, et l'utilisent pour se déplacer. Pas de spores, pas d'herbe. Malheureusement, ce système était trop instable...

Téléchargement

La version 0.2.1 corrige une erreur de compilation avec les version de Open Scene Graph récentes. Vous pouvez la télécharger ici. Des vieux binaires pour les utilisateurs de Windows sont également disponibles.

Les 3 programmes les plus ludiques et donc intéressants pour un utilisateur non-spécialiste :) sont: Genebasic, l'exemple avec les nuages de spores et les différentes espèces présenté dans les captures d'écran. Swarm, l'exemple d'essaim, qui peut aussi faire un joli économiseur d'écran! Colliterra, un exemple de détection et d'évitement de collisions. Utilisez la souris (les trois boutons) pour naviguer en 3D. Les touches les plus utiles sont 'espace' pour mettre la simulation en pause, 'c' pour cycler le terrain, et 'p' pour afficher les graphiques de population dans le programme Genebasic. 'g' et 'G' peuvent aussi être amusants dans le programme Colliterra (astuce: utilisez pause), et 'v' pour Swarm.

Le projet Crogai est maintenant hébergé sur Gna!. Merci à l'équipe de Gna! pour avoir mis en place l'environnement de développement. Vous pouvez voir le code source le plus récent dans le répertoire subversion. Afin de le télécharger, il vous faut pointer un client subversion vers le serveur SVN anonyme de Gna!.

Crogai, y compris le moteur de simulation, sont sous Licence GNU GPL. Merci de m'envoyer un petit mot si vous décider de l'utiliser. Et puissiez vous y trouver autant de plaisir à le modifier que j'en ai eu en le créant!

Crogai utilise comme moteur graphique OpenSceneGraph. Il vous faut donc installer correctement cet environnement avant de compiler Crogai. Une exception: Le moteur de simulation que j'ai développé est quand à lui indépendant, et peut être réutilisé avec ou sans OpenSceneGraph.

Crogai fonctionne mieux sous Linux. J'ai effectué une compilation croisée pour réaliser les binaires Windows ci-dessus.

Documentation

Pour comprendre les différentes parties et problématiques de Crogai, vous pouvez consulter mon rapport de fin de projet. Il s'agit du rapport pour le projet concernant le cours de Concordia University pour lequel j'ai développé initialement Crogai. Il n'est maintenant plus à jour avec les derniers développements, mais donne quand même une idée de certains problèmes rencontrés et des choix effectués pour mettre en oeuvre leurs solutions.

Une expérience utilisant le projet Crogai est décrite dans "Environmental fitness for sustained population dynamics". Ce document a été publié en september 2005, dans le IEEE Congress on Evolutionary Computation, Vol 1, p 343. Cf la politique de l'IEEE sur la dissemination électronique de l'information pour information sur le "copyright".

Pour les développeurs désireux de se faire une idée du fonctionnement du code, il y a également la documentation Doxygen générée automatiquement et consultable en ligne ici.

Style:
      L O G I C I E L S 
C
R
O
G
A
I
C
R
O
G
A
I