| home | PLAY |

ALPHOLUTION

experiment with the evolution of words

(c)2000 by Marcus Geduld

What is Alpholution?

Alpholution is a computer toy. You can use Alpholution to explore a simplified form of Darwinian evolution. In the world of Alpholution, animals are words—actually collections of letters and spaces. The words don’t have to make sense. For instance, here are some animals:

SMED

JXQZ

PP X

TEXT

LI X

The fittest of these animals can mate with each other and produce offspring. In Alpholution, each generation is populated by the children of the animals from the preceding generation. (Except for the first generation. Since there is no generation before the first generation, the first generation is populated with random words).

So two words from generation 1, like SMED and JXQZ, might produce the child SXEZ in generation 2.

  	SMED        JXQZ
         |           |
         |-----------|
               |
               |
             SXEZ
      

Notice that the child’s letters are a mixture of letters from both parents.

In Alpholution, each animal has its own DNA. An animal’s DNA is made up of pairs of chromosomes. For instance the animal KLFE might have the DNA of KM|XL|FD|EQ.

Animal: KLFE

DNA: KM|XL|FD|EQ

One letter from each chromosome-pair dominates the other. The dominant letter becomes part of the animal. The recessive letter stays dormant in the animal’s DNA and may be passed on to the animal’s children. The dominant letters in the animal above are K, L, F and E. In real evolution, certain genes always dominate. For instance, brown eyes dominate blue eyes. So if a person has both a brown eye gene and a blue eye gene, that person will have brown eyes. But he may still pass the blue eye gene to his children. That’s why some children have different eye-colors than either of their parents. They DID inherit their eye-color from one of their parents, but in the parent, the gene was recessive. In Alpholution, no letters are necessarily dominant. Instead, a dominant letter is chosen randomly from each chromosome pair. So our example animal could just as easily have started with M as with K.

When two animals mate and have children, the children inherit some chromosome pairs from their mom and others from their dad. (NOTE: there isn’t really any such thing as gender in Alpholution. Each child has two parents and inherits some of his genes from parent 1 and the rest from parent 2. Using the terms mom and dad for the two parents is simply a way of distinguishing between them.) Randomness decides which chromosomes come from mom and which come from dad.

MOM: KLFE
MOM’S DNA: KM|XL|FD|EQ
  DAD: YHAW
DAD’S DNA: XY|BH|AP|WC

|-------------------------------------------|
|
|

  CHILD: YXFC
CHILD'S DNA:
XY|XL|FD|WC
 

In the diagram above, red letters come from mom and blue letters come from dad. Note that the child inherited a W from his father, but it was dominated by the C. Still, this child may pass the WC chromosome to his children, and in some of them, the W may dominate.

In addition to inheriting letters from their parents, children may also receive some random letters. In Alpholution, these "mutant" letters are printed in lower case. For instance, in the child ULtZ, the t is a mutation. It didn’t come from either parent. Now, ULtZ may pass this mutant letter to his children.

In Alpholution, the environment is also a word (a collection of letters and spaces). The fittest animals are those that most closely match their environment. For instance, if the environment is HELLO, the animal JELLO is very fit, but the animal XLNPZ is very un-fit. Still, XLNPZ shares one letter with the environment (the L), so it is a little-bit fit. The more fit the animal, the better its chances of breeding—and breeding often. Fit animals will probably have a lot of children. Unfit animals will probably have few children—or no children at all. The word probably is important here, because even very unfit animals have a chance of having children. And even very fit animals might get unlucky and have none.

An animal's fitness is based on two factors: how many letters it shares with the environment and how many letters it has in the same position as in the environment. For instance, if the environment is DOG, the animal FGL gets a point for the G, because it is in DOG. The animal BYG also gets a point for the G, and he gets an additional point because the G is in the right place. Finally, each animal gets a point simply for existing. So HHL gets a point even though it doesn’t share any letters with the environment, DOG. This free point ensures that even a very un-fit animal has a chance of mating and having kids. (An animal with zero points would have no chance of mating.)

EXAMPLE:

ENVIRONMENT: HAND
PERFECT SCORE: 9 [1 free point + 1 point for each letter (4) + 1 point for each letter in the right place (4)]

ANIMAL 1: JPXN -- 2 points (1 free point + 1 for the N)
ANIMAL 2: KKRS -- 1 point (1 free point only)
ANIMAL 3: JAUD -- 5 points (1 free point + 1 for A + 1 for D + 1 for A placement + 1 for D placement)
ANIMAL 4: RZHA -- 3 points (1 free point + 1 for the H + 1 for the A)

Animal 3 has the greatest chance of mating. Animal 2 has the least chance. Still, luck my favor Animal 2.

Controls

You can control most aspects of Alpholution. You can choose the environment by typing a word or short phrase—or, if that feels too god-like, just type random letters (to simulate a random universe). You can choose the number of initial generations and the population of each generation. You can also choose the point values for the fitness scores, and the chance that a chromosome will mutate. Here are the details about each control:

ENVIRONMENT: only letters and spaces are allowed. The closer an animal matches this text, the higher its score and the better its chances of mating and producing offspring. NOTE: the longer the text, the slower the program will run.

POPULATION: the number of animals per generation. There must be at least 3. NOTE: large populations will cause the program to run slowly.

GENERATION: the initial number of generations the program will display. NOTE: large generation numbers will cause the program to run slowly. But you can always ask for more generations after viewing the current one.

MINIMUM SCORE: must be at least 1 point. NOTE: There isn’t any good reason to mess with this number. It simply ensures that every animal, no matter how un-fit, has some chance of baring children.

BASIC POINTS: points awarded to an animal for each letter that matches a letter in the environment.

BONUS POINTS: points awarded to an animal for each letter that is in the same position as its counterpart in the environment.

MUTATION: the chance that any letter may mutate. This should be set from 0 to 1000. The higher the number, the more likely a mutation.

NOTE: the most interesting values to mess with are BASIC POINTS, BONUS POINTS, and MUTATION.

Frequently Asked Questions

How do I win?
You can’t win. You can’t lose either. Alpholution is a toy, not a game.

Why can’t I get a whole population to permanently stay at maximum fitness?
Mutation stops this from happening. If the environment is JEEP and many of the animals are also JEEP, you might think that since these animals are very-fit, they will eventually take over the whole herd. But even a perfect animal can mutate. So some of the JEEPs will probably turn into JExP or gEEP. And once these mutant letters get into the "gene pool", they can be passed on to subsequent generations. What you should see is a trend towards animals that are close to the environment without matching it exactly. If you think about it, this is much like real life. There are very few people who are 100% fit. But there are a lot of healthy people. JEMP is healthy—even though it doesn’t exactly match JEEP.

What’s the point of all this?
Fun.

It was fun for me to program anyway. I certainly wasn’t trying to model real evolution in any serious way. And I DEFINITELY wasn’t trying to prove the theory of evolution to non-believers.

How was Alpholution programmed?
In JavaScript. I am not a professional programmer or a scientist. So please don’t pummel me with comments about my code or my knowledge of evolution. You can examine the code by viewing the source of Alpholution’s top frame.

| home | PLAY |