In an earlier post (go here), I relayed to UD readers two programs that had been emailed to me by someone named Oxfordensis. After careful scrutiny, my colleagues and I at the Evolutionary Informatics Lab concluded that these are by far the best candidates that we have to date for Dawkins’s original WEASEL program(s) (as I note in the previous UD post, it appears that there were in fact two programs, one described by Dawkins in his book THE BLIND WATCHMAKER, the other appearing in his BBC video about the book). Are these in fact the original WEASELs? When I contacted Richard Dawkins to confirm their authenticity, he replied, in an email dated 9.21.09, “I cannot confirm that either of them is mine. They don’t look familiar to me, but it is a long time ago. I don’t see what more I can say.”
In that email, Dawkins rightly raised the question of these program’s provenance and the fact that UD had issued a reward for them. Yet the reward was so small (a mere book) that this hardly seems sufficient for someone to write these programs as a hoax. The question of provenance is more worrisome, but then again so is the failure of Dawkins to keep copies of the program, especially when they are of such historical interest in ongoing debates over evolution. Are, then, the programs listed in my previous post in fact the originals? Even if this question cannot be answered with iron-clad certainty, we submit that they deserve to be taken as originals. Why? Three reasons:
1. They are written in PASCAL and they compile in the PASCAL compilers available in the mid- to late-80s.
2. These programs were widely circulated at the time. Charles Thaxton informs me, in an email dated 8.27.09, “As for the Dawkins program, I picked up a copy in 1989 at Princeton from a physics grad student after my talk there.” Like Dawkins, he adds, “But Bill, I have no idea where it is.” Presumably, these programs are still out there on people’s computer memory (or floppy disks). So why can’t an anonymous person like Oxfordensis have the originals?
3. Their performance is precisely what we would expect given the historical record that we have of these programs.
This last point has been the main sticking point keeping critics from embracing these programs as the originals. As Wesley Elsberry put it to me in an email dated 9.21.09: “Putting mutation on a per-copy basis rather than per-base would be rather unlike the biology.” And yet, Dawkins does indeed seem to have made this non-biological assumption in programming his WEASELs. In what follows, I draw from my consultation with a programmer colleague:
The objection raised against the code for the two WEASELS is that it makes exactly one mutation in each offspring; instead, so the objection goes, the mutations should have been made per-letter so that each letter has a certain probability of being mutated when the string is copied. The main reason urged for this is that a per-letter mutation scheme is closer to the biological reality. It is, of course, true that the biology would be better modeled by allowing multiple mutations. Nevertheless, there does not appear to be a good reason to claim that Dawkins would necessarily have modeled this particular aspect of biology to that degree of accuracy. Dawkins was attempting to demonstrate the power of cumulative selection. Thus, the difference between one-mutation-per-child and mutation-rate-per-letter may well have been too minor to worry about.
Dawkins’s text does not explicitly state what procedure was used to produce mutations. Some of the statements could be read to imply a mutation-rate-per-letter method, but that’s far from clear. Dawkins leaves many of the precise details of his algorithm unstated. That is all very fine and well because he was writing a popular defense of Darwinism not an algorithm textbook. On balance, the text does very little either way to specify which method was used to produce the mutations.
WEASEL1 does in fact converge to the target phrase in a similar number of generations as the runs shown in TBW. A simulation based on a mutation-rate-per-letter can be made to converge in a similar number of generations by combining a 4% mutation rate with a population size of 200. On the other hand, WEASEL1 has a population size of 100. Clearly, it would be possible to have the simulation converge in any given number of generations by picking an appropriate mutation rate and population size. The question is whether it is more likely for Dawkins to have chosen a population size of 100 or 200. Deciding that question is, arguably, too speculative to be of much use.
WEASEL2 records a similar number of tries as the run shown in the BBC video. WEASEL2’s algorithm does not contain the same tunable parameters as do the other algorithms. There is no population size to pick in order to make it fit with the correct number of tries. As such it would be extremely unlikely for the program to converge in a similar number of generations if it were not the same algorithm.
The best way to determine whether the illustrative runs in TBW were produced by an algorithm that used multiple mutations would be to see whether or not evidence of multiple mutations exists in the showcased runs. One complication in determining this is that the first generation of the first run has only 27 letters instead of the correct 28. Nevertheless, there is another very similar string presented early as part of the non-cumulative selection demonstration. The only difference is that the earlier string was in fact 28 letters long. Presumably, Dawkins reused the random seed to produce the string. Assuming that the earlier string is correct, the string is missing a D. In the second generation that D changes into a T. Yet by generation 10, the letter is back to a D. It seems highly unlikely that the letter would change from D to T to D without any selection pressure to do so. The most probable understanding is that it was a D the whole time and the T is a typo. This isn’t too unreasonable considering the difficulty of copying random strings by hand correctly and given the couple of other obvious typos in the strings.
If we assume the preceding interpretation of the first run, we can see that between generation 1 and 10, 9 letters are changed. This means that exactly one letter was changed per generation. From generation 10 to 20, an additional 10 letters are changed; again, one per generation. The second run gives the same results. In generations 1-10, 9 letters are changed. In generations 10-20, 10 letters are changed. This is what we would expect if each offspring contained exactly one mutation. In every generation, one change ends up being made to the string. On the other hand, it is improbable for this to have occurred if the algorithm employed multiple mutations.
Indeed, for the runs to have resulted from a simulation that included multiple mutations, either all multiple mutations were selected against, or they were hidden by another mutation. However, a multiple mutation has an increased chance of setting a correct letter early in the simulation because most of the letters are incorrect. It is simply too improbable to suggest that they happened not to be selected in either run. Other mutations that hide the first mutations also appeal to improbable events. There is no reason to suppose it is probable that the extra mutations happened to be hidden by other mutations while insuring that those other mutations themselves were not multiple mutations.
Looking at the evidence as a whole, there does not seem to be any significant reason to reject a single-mutation understanding of the simulation. On the other hand, the data fits a single mutation method very well. It does not fit a simulation that includes multiple mutations. We therefore conclude, unless further evidence is presented, that the single-mutation algorithm implemented by WEASEL1 is the one used by Dawkins in TBW.