Evocells is a relatively large project I worked on with Arthur Guez and Julien Barolet
back when we were in high school. It was done in two parts.
Part 1 - The "Sweepers"
Get the application: [DOWNLOAD]
- You need the java virtual machine.
- Note: The interface is in French.
The first part was a small java simulation (Shown below) meant to demonstrate the power of neural networks and genetic algorithms for artificial intelligence. It was inspired by the tutorial on AI-Junkie for neural networks in C++.
It features a bunch of "sweeper" agents competing for "food" pellets in the world. Each one has its own brain which is defined by its virtual DNA (initially random), and the most successful agents are selected for reproduction while the others are eliminated. The result is that over a few generations the agents learn efficient ways to maximize their success.
You can have fun raising your own little army of smart scavengers by downloading the simulation from the link above.
Part 2 - "Evocells"
The second project we worked on was rather ambitious Artificial Life simulation written in C++.
Evocells featured a simulated 3D vivarium, in which various particles were simulated by a "mass and springs" physics engine we had developed. The vivarium was filled with a parametrizable fluid simulated using simple fluid dynamics.
Some of these particles were nutrients, while others were "living" cells which could form complex multicellular organisms by specializing into reproductive cells, nutrient absorbers, muscles, sensory organs...
Each cell had it own DNA, which defined the way it would behave and divide. Mutation could occur during the division, which allowed evolution to take place.
The organisms were supposed to use their muscles to move around and seek nutrients actively by using neural networks to control them. Unfortunately we stopped working on the project before we could implement this part. The organisms in Evocells could only grow and reproduce as long as their initial nutrient reserves would allow them, and would then sit completely motionless until their death. We did still have lots of fun looking at what kind of organisms could be generated by different DNA codes we tried.