I have made multiple attempts to simultaneously evolve physical morphology and a neural network controller for controlling that morphology. My fascination with this topic was initially triggered by my discovery of Karl Sims' Virtual Creatures project many years ago. My earlier attempts within this subfield of artificial life are my Stickers project and my Creature Evolver project, which differed significantly. This project represents another attempt, different still.
Stickers occurred in a 2D world while Creature Evolver occurred in a 3D world. Both Stickers and Creature Evolver used a form of Karl Sims' evolvable directed graphs as the genomes. LSystem Creatures uses an entirely different genetic structure. Like Stickers, LSystem Creatures occurs in a 2D world. One of the biggest problems I had with Stickers was creating the correct physical simulation to allow jointed creatures to push against and resultantly swim through a water-like medium. The complexity of the physical simulation (forward dynamics primarily) and my inability to perfect the physical force simulation that was necessary meant that Stickers didn't perform very well. Creature Evolver worked better because it used the existing ODE physics engine. However, since it occurred in a 3D world, it required vast computational resources. Consequently, Creature Evolver could not run as an world of parallel interacting organisms. Instead, it was run as a genetic algorithm, running only one organism at a time in a tournament. This is how Sims' original work was organized. I am fascinated by the concept of an evolving world of creatures however, of an ecosystem in essence.
LSystem Creatures improves on Stickers' weaknesses by using a completely redesigned and far simpler physics engine. The creatures cannot bend at their joints, they have a completely rigid body structure. To produce movement, the creatures can utilized jet-like appendages to propel themselves forward. This model does not require a forward dynamics model. In addition, body-shapes cannot change. Instead, I simply accumulate the current jet-forces, apply them as torques relative to the center of mass of the creature's body, and calculate the resulting linear and rotational accelerations that occur.
As one might have gathered already, the genome for this project consists of LSystems, specifically, procedural LSystems, which more readily permit modularity (reuse of genetic instructions in multiple parts of the body plan) in the genotype-to-phenotype mapping. The LSystem genome describes a process for growing a body from a seed. Bodies are composed of cells, which are drawn as circles of solid color. Cells are joined to other cells in a tree-like body-plan. In other words, while bodies are drawn using circles for the cells, one could envision a corresponding plan in which each cell is drawn as a straight branch in a tree, with the root being the seed cell. The LSystem language includes additional instructions which can modify the size of a cell, the angle of a cell with respect to its parent, the physical function of the cell, and the neurology that is included within, or as part of, the cell. Physical functions of a cell describe the cell's physical abilities. For example, a cell may be an effector and/or may be a sensor. Effectors are the jets mentioned earlier. They can exert a propulsive force in the direction of their parent cell. Sensors can sense various possible physical stimuli, most importantly diffusive odors present within the environment. Another important physical function of a cell is whether it can eat, which occurs when the cell passes over a food source of the cell's ingestive type: herbivore, carnivore, or corpse (carrion).
When the simulation is begun, a closed energy system is initiated in which a population of creatures are created, either randomly, or from a library of predesigned minimally simple forms. In addition, mana (plant-like food sources) are distributed throughout the environment. Energy is lost through metabolism and exertion and is gained through eating. Energy that is lost is redistributed as mana, thus the closed energy nature of the world.
Depending on one's goal, LSystem Creatures might be considered to have a serious short-coming. A population of randomly generated genotypes is virtually incapable of producing phenotypes that can survive long enough to reproduce. Creatures must eat mana to gain the energy to stave off starvation and to gain enough energy to reproduce. Depending on the mana density in the environment, initially random creatures, which vary from still-borns to creatures which shoot in a straight direction indefinitely, to a few which spin wildly, do not have the homing behavior necessary to steer toward mana. Therefore, an initial random population always dies off. Consequently, I was forced to hand-code simple genomes which have the capability (a neural network coupled to sensors and effectors) of homing in on mana by following the odor gradient that a mana emits. Starting from such a population, I hoped that I could evolve a complex ecology in which some species stay small, some become large, some eat mana, some each other creatures, and some eat carrion. Carrion is the dead body of a creature, which decays slowly, releasing its energy back to the environment for mana. If a carrion eating cell passes over a corpse before it has fully decayed, the carrion eating cell gains energy. I envisioned a complex world in which the genome encodes the unique type of odor that a creature emits in the hopes that some species would specialize in following (hunting) other creatures to kill and eat them.
LSystem Creatures definitely evolves large complex body-plans. However, it does not tend to evolve fundamentally different structures. While it can evolve fairly elaborate variants on the hand-coded structures in the initial population, it does not tend to devise entirely new methods of locomotion or homing strategies. There is also a fine balance between parameter settings which drive the population toward larger size or smaller size. I hoped to get a diverse population in which some species prefer to be small and numerous while others prefer to be large and low in number. In general however, the smaller or larger creatures have an advantage and a mixed population of sizes is difficult to achieve.
Nevertheless, LSystem Creatures produces a world of diverse flitting organisms that make for a dynamic fast-paced simulation.
I will include screen shots and movies as soon as I get a chance. I apologize for their current absence.
I don't have a downloadable version of LSystem Creatures because the program is only in an experimental stage of completion. Sorry.