Jacob Rose



Download Ev3C
Get the program and its source code, or you can just read the README
I developed the Ev3C simulator in high school hoping that it would be able to demonstrate the evolution of virtual organisms in a random environment. I didn't consult any biology texts or build any notion of progress into the model; evolution would arise from the random mutation of programs written in a simple "robot" instruction set and the pressure of competition. It was a closed system with a finite amount of what I called "biomass" - stuff to make new organisms out of. The organisms would have to eat each other to survive.



The initial map shows two organisms on an empty field.

For this simulation I started with the "packnml1.org" and "packnml2.org" organism programs, which are virtually identical to one-another. Each looks around for other organisms, checks to make sure they don't have the same markings as their own, then charges at them and tries to eat them. The identity check is very fragile, but is almost completely effective when mutations are turned off.

PACKNML1.ORG code
PACKNML2.ORG code

Compare the program listings above. They are identical, but in each case the identity check has been matched to the markings of each organism to prevent each variety from eating its own kind.

61697 cycles, and organisms marked with character 160
have wiped out all of those marked with 200

In very short order, one variety, represented by character 160 (á) wipes out the other. If the identity check code has not mutated by now, none of these organisms will eat each other, and the population will starve.

Mutant code

Some type of mutation that breaks the identity check often occurs before the organisms starve to death. In this instance, the identity comparison is now looking for 159 (ƒ), which matches no existing organism, allowing the mutant to eat organisms with its own marking - the only kind available.

This type of mutation occurred the first time I witnessed this organism develop into a stable population. I ran this simulation many times to recreate the same process again.

By protecting an organism with markings that do not yet exist, the mutant is creating a niche - should any of these mutants' markings mutate to the newly protected type, they will have a huge advantage, like wolves in sheeps' clothing.

For a while, the population of organisms marked with character 160 swirls around, eating itself:

104416 cycles...
157241 cycles...
187629 cycles, and a few organisms' markings mutate to 161, which provides no advantage.
279251 cycles, and the 161 organisms have been consumed.

At this point, a small group breaks away from the main body, chasing after a mutant which made a beeline for the far wall.

285527 cycles, and new organisms marked with character 159 have appeared.

Suddenly, the moment arrives; one organism mutates to markings represented by character 159 (ƒ), and is able to consume the 160-marked organisms in a flash.

Niche organism code

The program code of all of these organisms still retains the basic functionality of the original, which causes the parent population to ignore its mutant children even as they are wiped out by them, and protects the children from eating each other.

304130 cycles, and the 159-marked organisms have replaced their 160-marked parents.

Finally, these new organisms mutate again, allowing them to eat each other and survive.

Download the program and read the instructions marked "WANT TO SEE SOMETHING COOL RIGHT AWAY?" to try a similar simulation that I've engineered to keep the population alive long enough for interesting results to occur quite frequently.

Atari
Ev3C
Siteflex
DConfirm
Rave Hosting
Where's Beka?
Sherman's Shop
Ads
Maps
Poems
Cartoons
PixelTime!
Photography
Stereograms
E-mail