BUGWORLD - Copyright 1993 Martyn Amos
1. INTRODUCTION
BugWorld is a simple introduction to the world of Genetic Algorithms
(GAs). A virtual physical environment is created within the computer,
which is then populated by various creatures, or "bugs", composed entirely
of machine instructions (cf. Tierra).
The environment may be visualized as a 2D, toroidal grid, the size of which
may be specified at the start of each simulation. At the start of each
generation, the bugs are randomly distributed over the grid.
The bugs compete for both energy and material resources. The
energy resource is represented by food items distributed around the
environment. Bugs may eat this food, which increases their energy
level. Bugs lose energy at a constant rate, and must occasionally replace
it. If a bug's energy level reaches zero, it becomes exhausted and must rest
for a certain period of time, after which its energy level is restored to
its initial value.
The material resource is represented by items of litter. The more litter
items a bug (litterbug, geddit?!) collects, the more successful it is
deemed to be. Both resources are also randomly distributed at the start
of each generation. Food and litter items are generated anew (ie. each
generations is faced with a brand-new, unique environment).
2. THE POPULATION
The genome of the population members consists of a sequence of machine
instructions that encode the organism's behaviour. There are two
species of organism - LitterBugs and Bullies. LitterBugs must move around
the environment, foraging for food and collecting litter. At the end of
each generation, certain LitterBugs are selected as parent of the next
generation.
Bullies are predators in that their sole task is to attack LitterBugs and
deplete their litter collections. Bullies do not require food and do not
breed - they have a fixed genome.
At the start of each simulation, each LitterBug has a pseudo-random genome
assigned to it.
3. THE VIRTUAL COMPUTER
Each organism has associated with it a program counter (PC) and
several registers/flags:
- memory register (integer)
- energy level register (integer)
- current direction register ([N|S|E|W])
- resting register (integer)
- litter collected register (integer)
- organism type flag ([L|B])
- exhausted flag (Boolean)
4. THE BUGWORLD LANGUAGE
The complete list of instructions is given below:
Opcode Mnemonic Interpretation
00 LOOK "Look" in the current direction. A value
corresponding to what can be seen is placed in
the memory register:
0: nothing
1: food
2: litter
3: LitterBug
4: Bully
01 MEMUP Increment value in memory register
02 MEMDOWN Decrement value in memory register
03 RESTART Jump to start of program (ie. PC = 0)
04 MOVE x Move forward with an x% probability
05 TURN x Turn left or right with an x% probability
06 JUMP x Jump to program line x
07 REMEMBER x Place x in memory register
08 REST x Rest for x cycles (consume no energy)
09 ENERGY x y If energy < x, jump to program line y
10 LESS x y If value in memory < x, jump to program line y
11 MORE x y If value in memory > x, jump to program line y
12 EQUAL x y If value in memory = x, jump to program line y
Each gene (ie. program line) consists of three components, which are
copied "en bloc". It is important to note that when an organism's genome is
first created it is only pseudo-random, in that the different fields of the
genes must remain within their defined limits. For example, the gene
04 103 ??? would be illegal, as it corresponds to MOVE 103%. This is
clearly illegal.
The Bully's fixed genome corresponds to the program below:
0 LOOK (in the current direction)
1 EQUAL 3 5 (is LitterBug visible?)
2 TURN 75% (didn't jump, so try to turn)
3 MOVE 75% (move in another direction)
4 RESTART (and then look again...)
5 MOVE 100% (move towards LitterBug)
6 RESTART (continue this process...)
5. THE SELECTION MECHANISM
Several selection schemes are implemented. The choice of mechanism can
greatly affect the rate of evolution (ie. how quickly a reasonably efficient
LitterBug evolves).
5.1 Random Selection
It is perhaps difficult to justify calling random selection of parents a
selection "strategy" at all. It simply involves choosing two members of the
population, purely at random, as parents. Each organism, regardless of its
fitness has an equal chance of selection. This mechanism is employed
mainly to demonstrate that other strategies are more effective.
5.2 Roulette Wheel Selection
The most commonly used strategy used in GA applications is probably stochastic
selection with replacement (or "roulette wheel" selection). We define the
probability that organism x is chosen as a parent as
f(x)
P(x) = ----
f(p)
where f(x) is organism's fitness
f(p) is total fitness of entire population
This method is called "roulette wheel" because each individual is assigned
a wedge of an imaginary roulette wheel, the size of the wedge being
proportional to the individual's fitness taken as a proportion of the total
fitness of the entire population. The greater an individual's fitness,
the larger the likelihood that the roulette ball will stop within that
individual's wedge, thus selecting it as a parent.
"Pure" roulette wheel selection uses this method to select both parents.
5.3 Impure Roulette Wheel Selection
This uses a combination of pure roulette wheel and random selection, one
parent being selected by each method.
5.4 Tournament Selection
Each parent is selected by selecting two individuals at random and comparing
their fitnesses. The probability that the fittest individual "wins" the
encounter and is selected as a parent is usually set to 75%. This procedure
is performed twice, once to select each parent.
6. FITNESS MEASUREMENT
So far we have assumed that a fitness measurement is available, without
discussing how it may be obtained. A reasonable measure is the amount of
litter that a LitterBug collects within a single generation, so we will
use that.
7. REPRODUCTION
Reproduction involves taking two parent LitterBugs and combining their
genomes to create an offspring's genome. When this occurs, a random section
of one parent's genome is joined to a section of the other parent's
genome, a process known as crossover.
For example, if parent A's genome is
##########
and parent B's genome is
XXXXXXXXXX
with a totally arbitrary crossover point denoted by |, we get
##########
| = ####XXXXXX
XXXXXXXXXX
as the offspring's genome.
8. MUTATION
While copying instructions during reproduction, genes are randomly altered
at some rate. The copy mutation rate is set to an artificially high
value (1%) in order to illustrate the concept.
Usually, mutation involves "flipping" one bit of the genome, but because
of the brittle nature of the genome, flipping a bit within a gene may
result in an invalid instruction. Therefore, mutation is (very) loosely
emulated by randomly creating a whole new gene and substituting it for the
one selected for mutation.
10. BUGWORLD OPERATION AND CONFIGURATION
The program must be invoked from the command line, using the following
syntax:
bugworld -c <configuration filename> [-t]
The -t flag is used to select terse statistics.
A lot of application parameters may have their values specified at the
start of each run. For ease of use, the starting configuration must be read
in from a text file. This file contains an arbitrary number of entries of
the form
<parameter name> <value> <NEWLINE>
The available parameter names and their associated range of values are
described below:
Parameter name Description Range
POPSIZE Size of initial Even number 2..200
population
GENERATIONS No. of generations to 1..1000
simulate
GENOMESIZE Size of LitterBug 7..25
genome (no. of genes)
BUGVISION LitterBug's range of 1..20
vision
BULLYVISION As above, for Bullies 1..20
SEED Random number seed Any integer
XBOUNDARY X dimension of world 50..500
YBOUNDARY Y dimension of world 20..500
FOODAMOUNT Amount of food at 100..5000
start of generation
LITTERAMOUNT As above, for litter 100..5000
SELECTION Selection mechanism 1..4
MUTATIONRATE Probability that a 0..100
gene mutates when copied
MOVES Moves per organism per 1500..10000
generation
FITTESTCHANCE Probability of fittest 0..100
organism being selected
(tournament only)
TRACE Number of organism to As POPSIZE
trace
Default values are given below:
Parameter name Default value
POPSIZE UNDEFINED
GENERATIONS UNDEFINED
GENOMESIZE 15
BUGVISION 5
BULLYVISION 5
SEED Current process' PID
XBOUNDARY 150
YBOUNDARY 60
FOODAMOUNT 300
LITTERAMOUNT 900
SELECTION 3 (Impure roulette)
MUTATIONRATE 1
MOVES 3000
FITTESTCHANCE 75
TRACE UNDEFINED
POPSIZE and GENERATIONS must be defined by the user at all times.
An example configuration file is given in the ir.cfg file.
11. STATISTICS AND TRACING
The user of the package may select the type of statistics displayed
during a simulation. If terse statistics are selected, the program
simply prints out the average fitness of the population at the end of
each generation.
If terse statistics are not selected (the default), the program displays
a header, and various statistics for each generation (generation number,
average fitness, number and fitness of fittest LitterBug and the genome
of the fittest LitterBug).
All statistics are printed to standard output (usually the terminal
screen). This may be redirected to a text file or piped to a printer.
The facility to trace the execution of an individual organism's genetic
program is available. This is mainly used for debugging purposes, but
is useful for watching an organism's interactions with its environment.
The number of the organism to be traced must be specified by the
TRACE parameter. The organism is traced for each generation and the
trace information is placed in a file named 'trace' in the current
directory.
12. CONCLUSIONS
The behaviour of the simulated population generally conforms to basic
principles of GAs, such as premature convergence. It was hoped that
"intelligent" LitterBugs that avoided predators and efficiently foraged
for food would evolve, but this didn't happen during the limited number of
runs performed, due to time constraints.
The package doesn't try to stick to formal GA principles (for example,
mutation is performed in a very crude manner), but it does illustrate
several basic concepts, such as crossover, selection and convergence.
Comments regarding this software are welcome. Please direct correspondence
to
Martyn Amos
Parallel Computation Group
Department of Computer Science
University of Warwick
COVENTRY
United Kingdom
CV4 7AL
martyn@dcs.warwick.ac.uk