The Consummate WEASEL

Our friend and colleague Atom tha Immortal has finished up the WEASEL GUI at the Evolutionary Informatics Lab (go here for the GUI). It implements every conceivable interpretation of Dawkins’s WEASEL program as outlined in THE BLIND WATCHMAKER. Thanks Atom for all your hard work!

19 Responses to The Consummate WEASEL

A Deterministic Search arrived at in a swift 22;
A proximity Reward Search at a resonable 4100;

The Unassisted Random Search and the Proximity Neutral Search I left running whilst my class continued delving into their work. Well, whatdoyaknow? It’s still plugging away trying to find something to grab hold of!

At this moment I think we should look to Weird Al Yankovic, and consider his words …

WEASEL STOMPING DAY

Faces filled with joy and cheer
What a magical time of year
Howdy ho, it’s Weasel Stomping Day

2. It would be helpful if the algorithms were labeled as in the paper of R. Marks and W. Dembski: this is the case for Partitioned Search, but not for Proximity Reward Search, which is introduced by R. Marks and W. Dembski as Optimization by Mutation.

3. There should be a version for Optimization by Mutation With Elitism.

4. It would make it easier to find literature on the algorithms if Proximity Reward Search was classified as a (1,n) EA (and Optimization by Mutation With Elitism as a (1+1) EA).

Thank you for the feedback. In coding the GUIs and writing up the documentation my goal was to try to explain the ideas to as wide an audience as I could, in the simplest terms I could think of. (Obviously, I’m not always 100% successful in that.) Hence, why I refer to fitness functions as “Reward Functions”, and fitness evaluation and selection as “ranking of strings”, etc. I thought Proximity Reward would explain in non-technical language exactly what the fitness function is doing: rewarding a string based solely on its proximity to a target. Hence my idiosyncratic labeling.

The papers are aimed at a more technical audience, while I hope that lots of non-technical people can find use of the GUIs, even high school kids. Could you perhaps write up an overview/tutorial on using the GUI with follow-up references to the primary literature? If you do something good I can always link to it as a more in depth exploration of the algorithms presented in the GUI. Just a thought, don’t feel pressured to do so.

Great fun. I used
“Weasels Ripped my Flesh”
Sorry it wouldn’t let me put an exclamation point on that sucker.
What does “queries” mean, as distinct from “generations?” I found I wanted to know how many generations had passed in the proximity reward search.
And what is the significance of the “medium number of queries” as opposed to the “query count.” Is it running more than once per “start search?” Sorry for the ignorant questions.

DiEB answered your questions correctly, queries is the total number of children. To get generations from that number simply divide the total number of queries for a search by the population size you’re using. That will give you the generations so far.

DiEB,
I do not maintain the math page, nor the math contained therein. (I’m a coder not a math-er. :)) However, I may be able to pass along useful information to the person in charge of that page. Forgive my ignorance, but is there somewhere that has the weasel expectation formulas in closed form so I can suggest they update the page? If someone has calculated these already, it shouldn’t be hard to get them to include these new formulas on the page, I’d just have to give them a link and make the suggestion. (People like making easy changes, I’ve noticed.)

DiEB and Atom: Thanks for the explanations. And my apologies for writing “medium number of queries.”
Atom: I’d really like to see you add “Generations” to the list of collected data, even though it can be calculated. Better to just show it. Generations seems more relevent to me than queries, (although I am so far from being an expert, it isn’t even funny).
For example, if I choose 999 offspring (the maximum you allow, perhaps equivalent to an insect’s reproductive strategy) and a mutation rate of 2%, it took the program 25 generations to get the correct phrase. With offspring set to 4 (perhaps equivalent to an actual weasel) and a mutation rate of 2%…… well, it hasn’t come up with the correct phrase yet. I’m still waiting as I type this. It’s up to 28,000 queries, or 7,000 generations and still has 5 errors to correct.
Interestingly, using these settings allows one to see frequent reversions. In fact, the target phrase was very nearly achieved fairly early on, and has actually been getting worse. This shows that your program does not latch individual letters, although the total fitness ratchets generally upwards (with occasional steps backwards). This is a good way to see the phenomenom of demi-ratcheting in real time.
Anyway, good work, interesting to play with, and please add the number of generations needed to the data output.
Thanks!

–Dr. Dembski
speaking of errors: in your paper Conservation of Information in Search – Measuring the Cost of Success could you correct the sign errors in equation (27) and on page 1057, left column, for Q?
BTW, here you could take