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 …
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.