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 wordsactually collections of letters and spaces. The words dont 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 childs letters are a mixture of letters from both parents.
In Alpholution, each animal has its own DNA. An animals 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 animals DNA and may be passed on to the animals 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. Thats 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 isnt 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 MOMS DNA: KM|XL|FD|EQ |
DAD: YHAW DADS 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 didnt 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 breedingand breeding often. Fit animals will probably have a lot of children. Unfit animals will probably have few childrenor 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 doesnt 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 phraseor, 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 isnt 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 cant win. You cant lose either. Alpholution is a
toy, not a game.
Why cant 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 healthyeven
though it doesnt exactly match JEEP.
Whats the point of all this?
Fun.
It was fun for me to program anyway. I certainly wasnt trying to model real evolution in any serious way. And I DEFINITELY wasnt 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 dont pummel me with comments about my code or my
knowledge of evolution. You can examine the code by viewing the
source of Alpholutions top frame.