How it Works
"Many poems were butchered in the making of this site."
The Darwinian Poetry software relies primarily on a mechanism called "crossover", similar to the process that operates on chromosomes in biological evolution, except that here the basic genetic units are words rather than nucleic acids. When the program sees that there is room in the population for new poems (because some unfit poems were...um...culled from the herd) it chooses randomly, albeit weighted by popularity, two surviving poems to serve as parents. These two poems are cloned then crossed over, producing two new offspring.
Here is an example to illustrate. These are two poems that I just grabbed off a test version of the site (color coded for convenience):
whistler me before two and one your night life find was the come killer bars that his watchtower in crash
First the program makes a copy of each parent. Now a "snip" point is chosen and each poem is cut at that point. For example, if the number 8 comes up we snip each poem at position 8 (line breaks are counted):
whistler me before two and one SNIP! your night life find was the come killer bars that his watchtower in crash
cannot the this muse little fluster my your night life find was the come killer bars that his watchtower in crash
That's it! Two new poems. Notice that the line breaks were preserved; they
are considered part of the poem and are treated just like words.
That's it! Two new poems. Notice that the line breaks were preserved; they are considered part of the poem and are treated just like words.
Questions That I Anticipate Will Soon Be Frequently Asked
A: It's not completely random. I, or rather my computer, counted all the words in about 1,000 poems. Then the program uses those distributions to weight the initial word selections. By the way, some of those poems had words that arenonsensical or foreign (same durned thing, right?) so if you come across a defective word post it to the message board and I'll fix it.
Q: What about punctuation?
A: Future release. I wanted to keep the complexity down for now.
Q: In the example you used, both new poems still suck. Doesn't seem like evolution to me.
A: That's not technically a question, but it's true: breeding two poems won't necessarily produce a better poem. In fact, if either poem is any good to start with, it will probably produce a worse poem. But sometimes something better will be produced, and such offspring will tend to survive a long time, producing many more offspring. Evolution is all about preserving those rare beneficial developments amidst a sea of failed genetic experiments.
Q: What about mutation?
A: This has drastically changed in version 2. There is now a whopping 10% chance of a mutation happening. In addition, the mutation can range from a single word change to whole lines changing position. However, the more drastic the change the less likely it is to occur. Most mutations will still be single words moving one position. But you may see much more drastic changes.
Q: How does this species thing work?
In the initial population every poem was randomly assigned to be species A or B. Two poems of the same species have a 100% chance of mating succesfully, while poems of different species only have a 20%. When poems of the same species mate, there is a chance (20%) that their offspring will have an additional A or B added to their species identifier. Again, identical species can always mate, but when the species is different the chance goes down by 50% for each every letter since the last one they had in common. So an AABAB has a 12.5% chance of mating with an AAABB. (I.e., they forked after the AA and there are three letters after that...50% * 50% * 50% = 12.5%). This should allow gradual but increasingly stringent speciation over time.
Q: If your software crashes do we have to start over from scratch with a new batch of random poems?
A: No. The program saves out the current population every minute or so.
Q: How can I become more involved with this?
A: Go to the bulletin board to read or post to the bulletin board and find out how I need help on this project.