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:

Use a set of characters that includes the upper case alphabet and a space.

Initialize a population of n 28-character strings with random assignments of characters from our character set.

Identify the string closest to the target string in the population.

If a string matches the target, terminate.

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.

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.