The details of the algorithms used by Karl Sims to evolve the virtual creatures are quite complicated and I'm not going to go over all the details. I'm just going to give a very sketchy outline. This part is optional - it's only if you're really interested in hearing about how this is done. You can also read Karl Sims' technical papers on this topic by going to the link that I've put on the course materials page. As I mentioned, the algorithm evolves both the morphologies of the bodies and the neural networks that control the bodies. The creatures' bodiy morphologies were represented as these grammars which are repeatable little programs that can produce repeated structures like these. The brains, or the neural networks, or the networks of neurons - the neural network had an input of sensor values and it output effector values which were forces on the joints. The sensors included: joint-angle sensors - that is, each joint reported the value of its angle, - contact sensors - which were 1.0 if a contact was made with anything and -1.0 if no contact, and photo sensors which returned the coordinates of light sources relative to the orientation of the part. So as you can see, it's getting kind of complicated, and of course, these were all virtual. These are not real robots - they are all computer- simulated. The creatures' brains...each neuron computes its output value from its inputs. The genetic algorithm is going to evolve the neural network and the output function of each neuron. The system had effectors, which you can think of as muscles where each effector controlled a degree of freedom of a joint and each effector gets its input from a single neuron - or a sensor - and outputs the force to put on the joint. So here's a picture from one of Karl Sims' papers showing the whole system with the genotype which is evolved to produce a phenotype - the body. The neural network is also evolved to produce a phenotype, so these are simultaneously evolved - the body and the brain. Inside of this physical simulation which is implemented in parallel on what's called a connection machine which is a massively parallel machine. And as you can imagine, this whole algorithm takes a lot of computation. Here's how the creatures are evolved. The creature is grown from its genetic description and to calculate its fitness, it's run in simulation for some period of time. Okay, so the sensors provide data about the world, the brain produces effector forces to move the creature and the fitness is "how successful was the desired behavior such as swimming or hopping or following a light or competing" by the end of the allotted time. So that's all for my quick overview of this extremely complicated algorithm, but I'm sure you agree that the results are a lot of fun to watch and very thought-provoking.