EvoInfo.org

The Evolutionary Informatics Lab

investigating how information makes evolution possible

HOME | Publications | People | Presentations | Resources Weasel WareEV Ware | Auxiliary Papers | www.EvoInfo.org

Weasel Ware

 

Weasel Ware

[ Introduction | GUI Description | The Math | The GUI ]

EvoInfo.org

GUI Description

The Weasel GUI (graphic user interface) has three modes.  The first mode is English Phrase.  Begin by typing any phrase using only letters and spaces.  The number of characters appears below the phrase. For

METHINKS*IT*IS*LIKE*A*WEASEL

there are 28 letters.

EvoInfo.org

When "Start Search" is clicked, the median number of queries as derived on the Weasel Ware math page, is displayed.  Queries for each search continues until the target is reached or the "Stop" button is clicked.

EvoInfo.org

When the search is stopped, the history of a search can be reviewed by clicking on the "View History" button.  Click on the X at the bottom to return to the main display.

EvoInfo.org

Unless you are very patient, the Unassisted Random Search will not be successful.  In the following display, the median number of queries is 8.30e+39.  The number 8.00e+39 is equal to 8 followed by 39 zeros.  For a trillion queries per second, this would be achieved in 2.63 billion billion centuries.

Unassisted Random Search will work when the number of characters in the search is very very small.  Here is a search result using two letters.

EvoInfo.org

If all three searches are successful, the GUI will display the following message.

EvoInfo.org

 

EvoInfo.org

The Binary Mode

The "Binary Mode" works the same as the "English Phrase" mode except that the alphabet not has only two letters: 0 and 1. Enter an arbitrary sequence of ones and zeros, and a search will be performed.

EvoInfo.org

The deterministic search will always converge in at most two queries.

EvoInfo.org

The Nucleotide Mode

The "Nucleotide Mode" works the same as the "English Phrase" mode except that the alphabet only four letters.  They are A,C,G, and T corresponding to the four nucleotides present in DNA.  The deterministic search will always converge in at most four queries.

EvoInfo.org

Additional Features: Version 2.0

For a full explanation of the new features, see the documentation.

Weasel Ware 2.0 now features two additional search modes: Proximity Reward Search and Proximity Neutral Search.

EvoInfo.org

These searches model Evolutionary Strategies, and you can therefore select the number of offspring in your population as well as the mutation rate (in percentage.) A mutation rate of 4.0% will result in roughly one changed letter in each child, for a phrase 28 letters long.

Additionally, you can select a fixed mutation rate of exactly one mutation per offspring by checking the "Fixed Single Mutation" checkbox. This ensures one and only one mutation per child per generation, rather than the probabilistic number of mutations per child based on the "Mutation Rate" percentage.

Proximity Neutral Search: Reward Functions

Proximity Neutral Search allows you to select different neutral and partially-neutral reward functions, as well as offering you the opportunity to design your own fitness functions using javascript and the "Custom Fitness Function" option.

A reward function (usually called a fitness function) is a method of assigning numerical values to strings of letters in order to rank them. For example, we may assign the string LAOETMNPQOKYRUVTPYBYKOAQRWLG a value of 0, and the string MEOETMNPQOKYRUVTPYBYKOAQRWLG a value of 2. We can then rank the two strings according to their numerical value.

The Proximity Reward Search assigns values based on how "far" a string is from the desired target; hence, it is "rewarded" based on mere proximity. However, we may wish to remove this teleological (goal-driven) aspect from our simulation and assign values in a way unrelated or only weakly related to the target sequence. Instead, we could assign values based on internal properties of the strings themselves, unrelated to the target string.

Partially Neutral: Anagram allows you to rank the strings based on how far away they are from being an anagram of the target. Since this does use some target specific information in assigning values, it is designated "Partially Neutral". Note, to have a successful search using this method, you will need to choose a short string for your target (unless you're very patient) and have a mutation rate that allows for at least two letters to be changed at a time (allowing for the swapping letters within an anagram.)

Partially Neutral: Simple Sum Distance allows you to rank the strings based on the sum of ASCII values in the string, plugged into a math function and multiplied by the string length to get a value. This value is compared with the target string's value after being run through the same function. This applies a layer between the target string and the information we can get concerning it. We then select based on the string with the closest value to the target's value.

Partially Neutral: CRC32 allows you to rank the strings based on the CRC32 checksum of the string, again plugged into a math function and multiplied by the string length to get a value. This value is compared with the target string's value after being run through the same function. This also applies a layer between the target string and the information we can get concerning it, and we again select based on the string with the closest value to the target's value.

Simple Sum allows you to rank the strings based simply on the sum of ASCII values in the string. We do not take into account the ASCII sum of the target, nor anything else concerning the target; we simply select the string with the lowest normalized ASCII sum. Therefore, fitness is not correlated to any future goal we might have.

CRC32 allows you to rank the strings based solely on the normalized CRC32 checksum of the string. Again, for this search method we do not take into account any target (goal) related information. By removing the teleological aspect of the search, we find that search perfomance declines to the point of failure, even though we still have replication, mutation and selection in operation. Doing this allows us to measure the relative contribution of selection aspects (replication, mutation, selection) to search performance versus the contribution of designed teleological aspects (ranking values based on mere similarity to a future desired goal.) We see that selection does little in the absence of teleologically chosen fitness assignments.

Wave Interference allows you to rank the strings based on the interference pattern created by two sin waves of different wavelength and phase. The lowest value represents the best string. Again, this method uses replication, mutation and selection, but does not use any information concerning the desired target (except for the normalization process.)

Custom Fitness Functions

In addition to the above mentioned functions, you can test any other fitness function you can come up with by using the Custom Fitness Function mode. A button labeled "Edit Custom Code" appears when that mode is selected, where users can enter valid javascript to assign two values used for comparison: aError and bError. Whichever has the lowest value becomes the "fittest" string, and is selected.

EvoInfo.org

Click the "Edit Custom Code" function to open the custom code edit window.

You have access to any standard javascript function and can also code your own functions, as the default examples show. (The default code loaded is a javascript snippet for a Proximity Reward function.) The two strings you will compare are available as variables "a" and "b" in the javascript code, and the target string is simply the variable "target".

EvoInfo.org

You must hit "Update" to save the changes to your code. Hit "Cancel" to close the custom function window without saving any changes (or just close the window without hitting Update.)

Your custom code will be evaluated using eval() and if an exception occurs it will be trapped and a message displayed in red text. (On exceptions, aError and bError are both assigned a fitness value of 0.)

For additional tips on creating custom fitness, click on the "Tips for Creating Custom Fitness Functions" link on the bottom of the custom code edit window.

Multi-Run Mode

The new Multi-Run Mode allows you to run the simulation many times in a row automatically, in order to get information about average performance and to run experiments of your own. To begin, you enter in the box the number of times you want the simulation to run for (1000 is the default) and then click the "Mutliple Runs (Start)" button. You can pause the batch run at any time by hitting the "Stop" button and can reset the entire batch by clicking the "Reset" button.

EvoInfo.org

Note, a "run" is a full search, which may result in many queries for each single run (iteration.) If you include Unassisted Random Search by not disabling it, you may never be able to go through a single run (since you will not find the target using that search, for sufficicently long strings.) A run must successfully find the target for every non-disabled search before it can move on to the next iteration.

After your runs are complete, you can click the "View Results" button to see summarized results for each run.

EvoInfo.org

The columns in the displayed table are the recorded performances for each type of search enabled. For example, in the above table Deterministic Search found the target in 22 queries for the first run, 25 queries for the second run and 27 queries for the third run; the Proximity Reward Search took 1,750 queries for the first run and 950 queries for the third run.

EvoInfo.org

[ Introduction | GUI Description | The Math | The GUI ]