The life of each creature is operated through a state machine
which works on a Lisp structure, creature
. Everything
needed in the life of the creature is in, or reachable from, that
structure, including references to the realm
containing the creature and thence to the other creatures in the same
realm.
The genome is an array of chromosomes, the number of chromosomes being fixed for each taxon. The multiple chromosomes are occurrences of the same chromosome, in terms of analytic biology; so an organism with 2 chromosomes in the array is diploid.
Each chromosome is a sequence of loci, each of which contains a
promoter and an action. As the evaulator steps, it works its
way along the genome of each being, evaluating promoters until it find
one that returns true
, whereon it evaluates the action
associated with that promoter.
When the evaluator steps off the end of a chromosme, it moves onto the next one. Thus, for any event occurring at a random point in the lifecycle of the creature, the relevant locus on any of the chromosomes is equally likely to be triggered, allowing dominant / recessive characteristics including partial dominance.
The state of each creature includes its position, energy resources and current communications, along with the remembered state that it has accumulated during its lifetime (and perhaps including some inherited memories -- ``instincts'').
This memory is simply a table of arbitrary lisp values, indexed by symbols, and so there are few constraints on how it may be used in any particular taxon.
Some information is kept in each creature to allow the programmer to pick apart what has happened in a run. Each creature has an ancestry field (being a cons of its parents' creature structures) and a biography, which is a list of the loci it has activated, most recent at the front.
[Creatures index] | John C. G. Sturdy | [research index] | Last modified: Sun Sep 25 21:59:54 GMT Daylight Time 2005 |