Aller au contenu
Martin Poiroux
Langue : English
Projets · CodeCode · Jeux · 2026

Algorithmes génétiques

De l’optimisation par algorithmes génétiques, avec un chemin CUDA. Le seul projet du site où le GPU est programmé à la main plutôt qu’emprunté à une bibliothèque.

Une population de solutions, une fonction qui les classe, et assez de générations pour que le hasard cesse d’en être un. La méthode est ancienne et bien documentée ; l’intérêt du projet est ailleurs.

Un algorithme génétique en miniature, qui tourne vraiment : chaque trait est une voiture, son génome une suite de coups de volant. Les meilleures se croisent et mutent à chaque génération.
Le même cadre sur un circuit : 858 générations en 28 secondes. La meilleure voiture boucle vite, la moyenne de la population la rattrape lentement.

Le problème n’en est pas un seul. Le moteur, population, sélection, croisement, mutation, est séparé des environnements, et huit jeux viennent s’y brancher, du serpent au morpion, du Flappy Bird au labyrinthe, jusqu’à l’Othello et aux échecs. Ils se répartissent en deux familles qui ne posent pas la même question au réseau : ceux où il choisit une action à partir de ce qu’il perçoit, et ceux où il note une position et laisse le jeu choisir le meilleur coup. Le second cas est celui des échecs, et c’est aussi celui où le réseau devient assez gros pour que le processeur commence à peiner.

D’où le chemin CUDA, seul endroit de tous ces projets où le code qui tourne sur la carte est écrit à la main plutôt qu’appelé via une bibliothèque. Un algorithme génétique évalue la même fonction sur des milliers d’individus indépendants, ce qui est le cas d’école du calcul parallèle. Le programme n’y bascule pas systématiquement : il regarde d’abord si la carte est là, puis si le travail vaut le voyage, c’est-à-dire si l’on est en mode notation ou si le génome dépasse quelques milliers de poids. En dessous, le transfert coûte plus cher que le calcul.

Flappy Bird : 1 000 générations en 24 secondes. À droite, le réseau du meilleur individu, six entrées, seize neurones cachés, deux sorties.

Cette page ne donne pas de facteur d’accélération. Il n’a pas été mesuré sous un protocole publiable, et un chiffre de gain annoncé sans son protocole ne vaut rien, surtout celui-là, qui dépend entièrement de la taille du réseau et de la carte disponible.

Projet privé, pas de lien public