I have added possible answers to some of the questions because
on our discussions.
1. How do agents measure time?
A quantity can be increased at each time interval. When it
reaches a preset value, it is reset to zero. The interval between reset
operations provides a measure of time.
2. How do we express conditional operations in the programming
language?
One possibility is to use a rule-based system in which every
operation is a condition-action pair.
3. Modes or modeless?
If the programming language has modes, there are instructions to
change the mode and the effect of subsequent instructions depend on the mode
(like a badly designed text editor). With modes, the same gene can be used for
different organ types because, for example, the same instruction might mean
"eat" in the mouth and "look" in the eye.
Without modes, the meaning of instructions does not depend on
context. An "eat" instruction in the eye would make eyes try to eat.
4. How do agents interact?
In the first place, by exchanging atoms. When closeness is
established, there are more drastic ways of interacting, varying from
reproducing to eating one another.
5. How and why do agents die?
Lifespan should be allowed to evolve; consequently, the
simulation should not impose death in accordance with a probability
distribution (older agents are more likely to die) because this removes control
from the agents. The criterion for death should be based on health: agents that
are inactive for some period of time should be considered dead. There may be
other criteria.
6. What operands control hormones, pheromones, etc?
The more important question is: how do we represent hormones and
pheromones? Are they numbers that an agent can access, or are they represented
indirectly, for example by the number of atoms of a particular kind that an
agent possesses? I am in favour of the "atoms" approach but it may be
expensive computationally.
7. What do we fix?
As little as possible.
8. What do we allow to vary?
As much as possible.
9. How do we describe the 'world' that agents inhabit?
The world should evolve with the simulation code. I have
designed a simple world that I believe has enough "hooks" to build in
the complexity that we want. Existing in the world should be challenging enough
to make interesting agents evolve.
10. What do agents do?
Survive in a complex world by acquiring energy, moving,
defending themselves, attacking others, cooperating with others, reproducing,
etc.
11. Genetic algorithms are used extensively to solve optimization
problems. The issues are wellunderstood. What do agents optimize?
Their ability to survive in a hostile world. The idea is that
they should do this by evolving software to solve problems. We could design
agents with a bunch of parameters and give the prize to the agent that picks
the best values of the parameters, but this is not a problem I am interested in
solving.
12. Is the human eye optimized?
Cats and owls see better in the dark; hawks have greater acuity;
insects are sensitive to ultra-violet light; horses have a wider range of
vision. Perhaps the human eye is just a good balance between function and
resource-usage.
In general, evolved organisms are not optimal in any obvious
sense. They are cobbled together. Old parts are used in new ways (the bones in
our ears were correspond to bones in the jaws of reptiles). Organisms contain
many 'spandrels', to use Gould's term.
13. How do we interpret the results of a simulation?
It may be as hard to understand a simulation as it is to
understand real life! The simulation will have to be designed from the
beginning with hooks for analyzing the results.
14. What is our criterion for a successful experiment?
A possible plan: in an experiment, we make two lists. Lists A
consists of the properties that we build into the simulation; list B consists
of the properties that emerge during the simulation. The goal is to minimize A
and maximize B. (So it really is an optimization problem!)
Distinguish things that:
. exist in the world and are simulated in the model;
. exist in the world but are not simulated in the model;
. are simulated in the model but have no correlative in the
world;
. exist neither in the world nor the model.
The last category is probably not very interesting.
15. What are the components of an agent? How are
they laid out in space? What is the 3D (or nD) structure of an agent?
These decisions are being made in the first version of the
simulation.
16. Can an agent inject DNA into another agent?
This has interesting possibilities and we should probably allow
it, although not necessarily in the first versions of the simulation.
The proposed experiments are based on three previous projects.
1. The Truckin' Project modelled a fleet of trucks. A truck
could choose either to move commodities in bulk from a manufacturer to a
retailed or to move single items from a retailed to a consumer. Trucks had
costs (fuel to travel) and were 'paid' according to the loads they carried and
their 'goal' (fitness function) was to maximize their profit. The problem we
had with this project was that it was hard to invent sufficiently different
strategies for trucks: recent analysis has shown that the difference in
performance between successful genes is statistically insignificant.
2. The Cell Simulation modelled a single biological cell. The
genome of the cell encoded 'amino acids' that the cell used to synthesize
'proteins'. The behaviour of a single cell was sufficiently complex that,
although a cell could reproduce, we never got around to investigating the
behaviour of populations of cells.
3. The Eco Simulation, based on work done at the Santa Fe
Institute, modelled agents that consisted of strings of characters ('a', 'b',
etc.). The genome and the resources of an agent were character strings. Agents
interacted by trading, fighting, or reproducing. This simulation demonstrated
the importance of analysis tools: it exhibited interesting behaviour, but it
was hard to discover why. For example, we predicted that, in a large population
(50,000 agents), genomes would converge to a single optimum or perhaps a small
number of 'species'. In fact, we found that every agent had a unique genome,
even after thousands of generations.
A general problem that we have encountered is that, as the
complexity of the experiment grows, an ever increasing number of parameters are
need to keep things under control. The number of possible settings of the
parameters increases exponentially, making it hard to choose the right
experiments. An explicit goal of the new work will be to minimize the number of
parameters.
Another way of expressing this is to say that we want our
experiments to be robust in the sense that they are insensitive to variation of
parameters. It is possible to achieve almost any kind of behaviour by 'fine
tuning' a large enough number of parameters but behaviour obtained in this way
is usually not very interesting. In summary, the goal is to minimize both the
number of parameters and the sensitivity of the system to the values of the
parameters.