Virtual Plant Contest
Return to CEC2004 main page
Introduction
Grid plants are simple virtual plants that live on a toroidal square
grid. They start occupying a single square of the grid and then grow
to occupy other squares. This growth proceeds from the last cell that
was formed, so these grid plants are vine-like. They have no
branching structure. Grid plant growth in the virtual world is
specified by a sequence of letters (genes). These letters are drawn
from the alphabet
Up, Down, Left, Right, Sseed.
These letters form a specification for what the grid plant is going to
try to do, if the rules of the simulated world and the other grid
plants don't stop it. Grid plants are annuals, they die off and their
seeds sprout the next year. The dead plants are cleared from the grid
before the next growing season. This contest will use genes of length
20 and run for 200 simulated years. A year is a growing season in
which seeds sprout and grow followed by a period in which the dead
plants are cleared. A world of full-grown grid plants is shown below,
at the end of its 10,000th simulated growing season.
 |
Grid Plants
|
The grid plant you submit will grow, make seeds and die. Those
seeds will sprout the next year and repeat the process. After 200
growing seasons, the number of squares occupied by living descendants
of your grid plant in the last year will be your score in the contest.
In evolutionary computation, a good deal of effort is spent finding
fitness functions. For grid plants, fitness is a strange mixture of
how many seeds the plant makes, the way its dynamic shape as it grows
interacts with other grid plants, and its management of its energy
resources during the growing season.
How do I enter the contest?
Send Dan Ashlock
danwell@iastate.edu your name, e-mail address, affiliation, and a
20 character string over the alphabet {U, D, R, L, S} that specifies
your entry. Also declare that your grid plant gene was either evolved
or designed. In order to win you must register for the CEC2004
conference. You may submit new entries that replace your
old entry up to three times (four total submissions).
How does the grid plant contest work?
To score the contest we will place three virtual seeds for each grid
plant submitted at random onto a large square world. The size of the
grid will be at least 100x100 and will contain at least 100 squares
per contestant. The grid plants will be allowed to sprout, grow and
die for 200 simulated years. The grid plant with the most world area
covered at the end of the last growing season, averaged over 100
different trials, wins. Area covered during the first 199 years does
not count toward a win. There will be three contests if there are
enough entries: evolved genes, designed genes, and all genes. There
must be five eligible genes submitted for a contest in order for that
contest to take place.
Example Gene:
DSUDSUSUSLRSLDSDUSRS
Let's trace the development of the grid plant. The notation (not!)
means the action was impossible. The last picture in the example has
two actions together to make a nice grid.
 |
 |
 |
 |
Start |
Down |
Seed |
Up(not!) |
 |
 |
 |
 |
Down |
Seed |
Up(not!) |
Seed(not!) |
 |
 |
 |
 |
Up(not!) |
Seed(not!) |
Left |
Right(not!) |
 |
 |
 |
 |
Seed |
Left |
Down |
Seed |
 |
 |
 |
 |
Down |
Up(not!) |
Seed |
Right+Seed |
Rules(Clarified 2/17/03)
- Plants sprout at their seed location. The sprout is the plant's tip.
- A sprout has one cell and no energy.
- Each cell generates 1 energy per time-step. The simulation of a
year runs for 40 time-steps.
- A sprout begins reading its genes in order from left to right.
- A plant executes at most one growth or seed production action per
time-step. It may read a gene location and then grow or read a gene
location and then place a seed. If the grid plant does not have
enough energy it executes no actions but accumulates energy.
- A gene loci must be read before it is executed. This may be done
as the sole action in a time step or with a growth or seed production
action.
- Cells are created when an U, D, L, or R loci is executed and the
grid space in that direction from the tip of the plant (the last cell
grown) is available. A new cell is the current tip of the plant.
- When a seed action is executed, seeds are made beneath the
plant's tip.
- One seed per grid only, one cell per grid only, but there may be
one seed and one cell in a grid together.
- Impossible actions, e.g. making a second seed or growing into a
full cell, cost no energy.
- In each time step the grid plants present are each allowed to take
their action in a random order. The order is generated again in each
time step.
- Energy in a plant at the end of the growing season is lost. When
seeds sprout the next year it is as a sprout filling one square of the
grid with zero energy.
- The energy costs of various actions are as follows.
| Action | Cost |
|---|
| Read a gene(character) | 1 |
| Grow a cell | 3 |
| Make a seed | 5 |
Comments on Strategy
You plant must do three things. It has to grow enough to get its
energy production up. It must make seeds, which also takes energy.
It must grow so as to block its opponents and work with other plants
of its own species.
Simulation Software
The scoring software is now available. You will need the files Contest.cpp and Example.gdp. The c++ file contains the scoring
software, while the Example file gives names and grid plant genes in
the format used by the scoring software. The compile line on Linux
is: g++ -lm -O3 Contest.cpp -o Contest.exe
Place the
genes (and names) in Example.gdp and you can test your grid plants.
If you are having trouble with the random number generators, srand48,
lrand48, and drand48 should be replaced with you seed, random long
int, and 0-1 real generators respectively. Software for evolving or
effectively designing grid plant genes is the responsibility of the
contestant.
Acknowledgments
Gary Fogel's questions and suggestions were most helpful in cleaning
up this site. Thank you, Gary.