Weasel Information

In 1986, Richard Dawkins published his book, "The Blind Watchmaker". In the book, he utilized programs for computers to illustrate some issues in evolutionary biology. One of these programs has come to be called "weasel" because of the use in it of a short snippet of Shakespeare, "METHINKS IT IS LIKE A WEASEL".

The "weasel" program is aimed at illustrating the difference between what Dawkins called "single-step selection", or random search, with a process of "cumulative selection", that employs something with several components of natural selection.

The demonstration shows that cumulative selection, premised on natural selection, is far more efficient than random search on the problem posed, that of finding a particular string, that snippet from Shakespeare. It has been a favorite target of religious antievolutionist rhetoric ever since.

Weasel as described by Richard Dawkins

Dawkins' description of the "weasel" program can be summarized briefly:

  1. Use a set of characters that includes the upper case alphabet and a space.
  2. Initialize a population of n 28-character strings with random assignments of characters from our character set.
  3. Identify the string closest to the target string in the population.
  4. If a string matches the target, terminate.
  5. Base a new generation population of size n upon copies of the closest matching string, where each position has a chance of randomly mutating, based upon a set mutation rate.
  6. Go to step 3.

Parameters from Dawkins' Description

Target string:

Population:

Mutation rate (% per letter): %


Other Parameters

Inter-generation interval: ms


Program Control

Generation: Actual Mut. Rate:

Best match:

Generations that step backward: Exact copies: Total Candidates:

Console

No Locking of Characters

The "weasel" program as described by Richard Dawkins obviously works. If random search were used, we would not expect the target string to be found in our lifetimes, or the lifetime of our species. Antievolutionists have made a false charge that the "weasel" program can only obtain its better performance by "smuggling" information into the result. This has recently (2007) been expressed in an essay by William Dembski and Robert Marks, where they erroneously claim that Dawkins was using a "partitioned search" procedure. This differs from what Dawkins actually described and implemented by protecting individual characters in strings from mutation during copying based on matching the corresponding character in the target. In this alternate version described by Dembski and Marks, individual characters are "locked" once they match to the target string, and they claim that it is this additional constraint that permits any "weasel" program -- and even any evolutionary computation at all -- to out-perform random search. Note this egregious mishandling of Dawkins' description from their website:

The active information supplied by the "divide and conquer" oracle is necessary to perform the search. In essence, Dr. Dawkins concurs when he writes

"Chance is a minor ingredient in the Darwinian recipe [as exemplified in the WEASEL example], but the most important ingredient is the cumulative selection [i.e. the divide and conquer oracle] which is quintessentially nonrandom." (Italics not added ) [5].

In evolutionary computing, the active information can be generated by a programmer skillfully querying an information rich oracle.

What needs to be understood about this is that the "partitioned search" analyzed by Dembski and Marks has nothing to do with the program described by Richard Dawkins. Dawkins did not state that individual letters could be protected, and in fact has stated that doing so would be bad didactically, since that would be at variance with how natural selection works in biology (2000, personal communication). As the program implemented here shows, a "weasel" that works without benefit of the "partitioned search" of Dembski and Marks nonetheless performs far better than random search, contrary to the claims Dembski and Marks have made.

Notes About This Implementation

I somehow managed to get by without doing any JavaScript coding to this point. This is my very first page that relies upon a JavaScript program. So I don't expect it to be perfect and I would appreciate constructive feedback. That also means that the source is available for inspection if you just use "View Page Source" in Firefox or similar in other browsers. If I've relied on something that doesn't work in your browser, do let me know what OS, browser, and version you are using.

Page created by Wesley R. Elsberry 2008/10/23

Page last updated 2008/10/26