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.