Je vous livre ici quelques programmes que j'ai réalisé autour des technologies de vie artificielle.



Voici TRONET, un programme de type évolutionnaire (fonctionne sous Windows 9x, Windows NT/2000)


Ce jeu, tiré du célébre et avant-gardiste film de Walt Disney TRON, a pour principe de tracer un trait sans jamais heurter un autre trait, à savoir son propre trait, celui de l'adversaire ou bien celui du cadre. Ainsi le premier qui rencontre un trait perd la partie.
Plutôt de voir 2 humains s'affronter, ce sont des réseaux de neurones qui vont dans ce programme se battre. En fait c'est un tournoi perpetuel de 36 réseaux qui vont sous vos yeux jouer à TRON.
Un réseau joue en fonction des pixels qu'il voit. Juste les quelques pixels de face et à côté de lui activent les neurones de la première couche. En sortie, le réseau répond en activant certains neurones donnant la vitesse et la direction de son déplacement.
A la fin d'une manche, chaque réseau obtient un score : un cumul de point pour chaque partie gagnée ou nulle. Un algorithme génétique vient alors calculer la génération suivante en fonction de ces scores. Le "crossover" est réalisé en découpant le tableau des poids des neurones entre deux réseaux parents.
Ce programme a été fait il y a 8 huit ans sur un PC 386 sous MS-DOS en C avec l'outil de Microsoft C v7.0. Donc ne vous attendez pas a un graphisme délirant et de plus pour des problèmes de mémoire j'avais sciement limité le nombre de réseaux, de couches pour chaque réseau et divisé le tournoi en 6 poules de 6 réseaux afin de restreindre le nombre de match.
Vous serez cependant surpris par la stratégie qu'ils vont adopter. C'est un programme qui illustre magnifiquement le potentiel de ce genre de technologie. Pour voir vraiment vers quoi le programme va converger, je vous conseille de le laisser tourner toute une nuit.
NB 1: A la premiere question "Voulez-vous lire le fichier d'évaluation ?", répondez non ("N") et à la deuxième "Voulez-vous répartir de la situation précédente répondez oui ("O").
NB 2: Attention le programme ne peut s'arrêter qu'aprés avoir terminé une manche. Pour cela il faut taper la barre d'espace (et une seule fois sinon il repart pour un tour). Il vous proposera ensuite de s'arrêter. Sinon vous avez le moyen sauvage par Ctrl+Alt+Supp mais, dans ce cas, il ne sauvegardera pas vos calculs.
NB 3: Le programme n'est pas multitâche, si vous faites Alt+Tab et passez à une autre application, lui ne tourne pas. Il ne fonctionne que lorsqu'on le visionne.

Télécharger ici le binaire + les fichiers de données au format ZIP.

Le code n'est pas terrible. Non documenté et fait à une époque où je ne maîtrisais pas toutes les subtilités du language C. ;-)
Télécharger ici tout le projet avec le code source au format ZIP.



Voici OTHELLO, un programme similaire à TRONET mais appliqué au jeu d'OTHELLO (fonctionne sous Windows 9x, Windows NT/2000)


Si vous avez téléchargé et testé TRONET, vous avez dû constater que l'on peut voir les parties devenir longues et en conséquence la convergence se ralentir... Afin de palier ce problème j'ai planché sur un jeu simple dont la durée des parties serait la même quelle que soit la réponse des réseaux de neurones. Le jeu d'OTHELLO m'a donc semblé approprié. Si vous testez le programme vous constaterez alors que le temps de calcul d'une manche est désormais inférieur à la seconde.
Ce programme est en fait composé de 2 programmes :
- Un pour l'apprentissage : c'est la partie dans laquelle les réseaux de neurones jouent à OTHELLO en tournoi et ce de façon perpetuelle. Ce programme ne comporte aucun affichage graphique.
- Une interface homme/machine, c'est à dire le damier du jeu avec la possibilité de jouer contre les réseaux de neurones.
Sinon, le principe est le même que TRONET. Chaque réseau reçoit les signaux des 64 cases en entrée et décide en sortie la case sur laquelle il va jouer. Ne connaissant à priori pas les règles du jeux, le programme joue un coup en prenant la réponse du neurone (de la couche de sortie) dont la valeur est la plus élevée parmi les réponses possibles. A la fin de chaque manche un calcul de score est affectué afin d'y appliquer l'algorithme génétique (crossover et mutation) pour calculer la génération suivante.
Le resultat est moins tangible que pour TRONET puisqu'il faut que vous jugiez de la valeur des réseaux en jouant contre eux. Le problème c'est que plus un homme joue plus il s'améliore. Si vous êtes un débutant, il vous battra sûrement lors des premières parties, mais rapidement vous le dominerez. Et ensuite les progrès minimes qu'ils feront seront masqués par votre propre apprentissage. J'ai même l'impression que parfois, les réseaux regressent ... Aurait-il fallu augmenter le nombre de réseaux ainsi que le nombre de neurone par réseaux afin d'éviter une certaine saturation ? Ou bien s'agit-il d'un taux de mutation trop élévé ? ...
A l'inverse de TRONET les programmes sont mieux structurés et un peu documentés. Vous pourrez ainsi peut-être vous plonger dans le code et améliorer les quelques défauts cités ci-avant ?
Ce projet a été développé avec Microsoft Visual Studio v 4.0 et v6.0. "Apprentissage" est un programme console et "testgrille" est le jeu d'OTHELLO en mode Windows.
A l'instar de TRONET je vous livre un fichier de données pour lequel il y a eu beaucoup de calcul d'apprentissage (des semaines entières). Le nombre de génération qui s'affiche dans le programme "Apprentissage" étant tellement grand que vous y verrez un nombre exprimé en exponentiel. (à ce stade nous avons dépassé le million de générations)
NB 1 : Pour stopper l'apprentissage, taper la barre d'espace et répondez oui ("O").
NB 2 : Dans "testgrille" le bouton Niveau correspond au nombre de réseaux contre lesquel vous jouerez. Je vous conseille de rester au niveau 1. Il y a un vice de conception pour les niveaux supérieurs.
NB 3 : Afin de jouer contre le meilleur des 36 réseaux, cliquer sur le bouton de la barre de menu "Tri des réseaux".

Télécharger ici les binaires + les fichiers de données au format ZIP.

Télécharger ici tout le projet "Apprentissage" avec le code source au format ZIP.

Télécharger ici tout le projet "tesgrille" avec le code source au format ZIP.

Je vous signale qu'une personne de l'INRIA, Olivier Arsac, a fait une chose similaire mais en beaucoup plus performant. A la place de réseaux de neurone, il a pris des algorithmes de parcours d'arborescence dont les paramétres sont optimisés par algorithme génétique. Le résultat est stupéfiant. Je me suis fait battre presque à chaque coup par DARWERSI.
Lien vers le site de Darwersi



Voici VIA, un programme de vie artificielle (fonctionne sous Windows 9x, Windows NT/2000)


Explications à venir ...

Télécharger ici les binaires + les fichiers de données au format ZIP.

Télécharger ici tout le projet "Vie_Agent" avec le code source au format ZIP.



Voici FOURMI, un programme de simulation de fourmilière très basique (fonctionne sous Windows 9x, Windows NT/2000)


Il me semble que 30 fourmis pour la simulation soit suffisant.

Télécharger ici le binaire au format ZIP.

Télécharger ici tout le projet "FOURMI" avec le code source au format ZIP.



Voici un classique jeu de la vie de Conway (fonctionne sous Windows 9x, Windows NT/2000)


Ben ... euh ... je ne sais plus comment il fonctionne ... :-<

Télécharger ici le binaire au format ZIP.

Télécharger ici tout le projet "VIE" avec le code source au format ZIP.

Vous pouvez me contactez à l'adresse suivante : Emmanuel Chauvin

2 sites francophones qui font références ...
Automates Intelligents Vie Artificielle

Retour au site MyDataBall
Retour au site MyDataBall
un compteur pour votre site