Skip to content
Martin Poiroux
Language : Français
Projects · CodeCode · Prototypes · 2019

Artificial life

Fish learning to feed, species eating each other, cars learning a track. The first neural networks, written by hand in Python during the preparatory classes.

No learning library in these programs: networks are lists of weights, mutations are added noise, selection is a loop. It is the most naive form of artificial evolution, and that is why everything is visible.

The TIPE. The supervised personal research project of the preparatory classes was about a marine population. Each fish sees its surroundings through a fan of radars that detect walls and food; a small neural network turns those detections into two commands, move forward and turn. Fish spend energy swimming and starve. When one of them eats, it reproduces: a new fish is born with a mutated copy of its network. Nobody teaches anything, and yet, over the generations, the fish that remain are the ones that head for food.

Natural selection. A broader version: several species with randomly drawn names, each with its size and speed, food that keeps appearing, and predators that can only eat prey small enough. Enter adds a new species. Hybridisation and fleeing from predators were left to do.

Natural selection: species with randomly drawn names, food that keeps appearing, and predators that eat anything smaller than themselves.

Reward learning. Subjects among “goods” to touch and “bads” to avoid, a score, and the best network kept from one generation to the next. The working notes already ask the right questions: feed speed and direction as inputs, save the best network, measure proximity surface to surface rather than centre to centre.

Reward learning: subjects among green "goods" to touch and red "bads" to avoid.

Cars. You draw the edges of a track and its checkpoints with the mouse, then a population of cars, each driven by its own network, learns to drive it through successive mutations. The list of planned improvements reads like a table of contents for the subject: crossover between parents chosen by score, a mutation rate that adapts when progress stalls, randomly generated tracks, score curves per generation.

The cars on a circuit drawn with the mouse: the red dots are the checkpoints, and the furthest of the generation make it past the first turn.

Most of those ideas were eventually written, years later and on the GPU, in the genetic algorithms project; reinforcement learning, for its part, trains the bots of BlitzVolley.

Private project, no public link